このコロナ禍、気軽に旅行にも行けません。暫し、近所のちょっとした水場を散策する日々です。そんな時に出会った小さな生き物たち、何か安らぎを与えてくれます。以下の写真は、ニホンアマガエルとハグロトンボと思われます。
I am a professor emeritus of CS at Kanagawa Institute of Technology, Japan. Originally my specialty was parallel and distributed systems. My current interests include machine learning, natural language processing, creating mobile apps with MIT App Inventor, and quantum computing. In the web version of this blog, clicking the icon on the right (a plastic sphere) will take you to the "List of Quantum Computing Articles". - Fujio Yamamoto (for e-mail, add "@ieee.org" after "yamamotof")
2021年6月28日月曜日
2021年6月20日日曜日
A list of my articles about MIT App Inventor apps
I have written about 300 posts on this blog, including articles on computer science and smart phone applications. Most of them are written in Japanese. However, some of them on MIT App Inventor were written in English, so that people outside Japan can also read them.
Here is a list of articles about MIT App Inventor written in English. I would be very happy if people who are going to use App Inventor to develop new apps can refer to them.
# Various apps using App Inventor
Make a mini calendar app for Android, celebrating the New Year
Beautiful mountain view comes automatically to your smartphone
Finally arrived! Beautiful mountain photos that were automatically recognized!
Supporting social dilemma experiments with App Inventor
Voice Calculator: well-crafted AI tutorial
Using the MIT App Inventor FaceExtension (for Facemesh)
Identify the position from the key point number in Facemesh
Enjoy finding out Hamiltonian Cycles
Enjoy Reinforcement Learning in Tic-tac-Toe
Enjoy live cameras from across the world on your smartphone
Timer Overhead(in MIT App Inventor)
# Using the App Inventor Extensions (JSON, AWS, etc.)
A JSON Decoding Extension for App Inventor (1)
A JSON Decoding Extension for App Inventor (2)
Another example using JSON Decoding Extension
Decoding JSON by using new Dictionary Blocks
A good example of Extension for App Inventor
Using MIT App Inventor AWS AI Services Extension
Creating my own extension blocks for App Inventor
# Linking App Inventor and micro:bit
Cooperation between micro:bit and MIT App Inventor with Eddystone signals (No.1)
Cooperation between micro:bit and MIT App Inventor with Eddystone signals (No.2)
Cooperation between micro:bit and MIT App Inventor (No.3)
# Using JavaScript in App Inventor
Make MIT APP Inventor more powerful with JavaScript
Writing formulas in both AppInventor and JavaScript
# More App Inventor resources
Rapid Prototyping Using App Inventor in Information and Computer Sciences Course
Empowering Students to Develop Mobile Applications by Using App Inventor for Android
2021年6月18日金曜日
ちょっと惹かれるPython1行コード(その2)
【what is this】前回に引き続き、短くて美しい1行コードを検討します。参考文献[1]を参考にしています。Pythonの初心者が中級へステップアップするのに適しています。小生もこれに該当しますので、個人的な忘備録でもあります。
■例題:漁獲高の平均を上回る漁港をリストアップする
今回データ分析の対象とするデータ(参考文献[2]を参考とした)を以下に示します。Python numpy配列であるFHには、主要な漁港名9つを格納しています。そして、別のnumpy配列Vには、この漁港の順に、2014年〜2018年の5年間の漁獲高(水揚げ量)を万トン単位で格納してあります。
上記1行コードをすぐに理解できる人は少ないかもしれません。そこで、その中身を分解してみます。最後には、「なるほど、素晴らしい!」となるでしょう。
2021年6月11日金曜日
ちょっと惹かれるPython1行コード(その1)
【what is this】誰でも、短くて美しいコードに憧れます。参考文献[1]には、Pythonによる1行コード(Python One-Liners)の考え方と実例がたくさん載っています。それを参考に1行コードを2つほど書いてみました。
■例題:キノコの毒性に関するデータの学習と学習結果による予測
機械学習の分類問題として、キノコを有毒か無毒かに分類することをやってみます。図1には、キノコの色(赤、青、黄)、笠の形(丸、角)、柄の長さ(長、短)、場所(地面、樹木)の特性によって、それが有毒か無毒かのデータ(参考文献[2]から引用)があります。これを機械学習によって学習させ、さらに、その学習データが正しく分類(予測)されたかどうかを確認します。
2つの手法(SVM-サポートベクタマシンとRandomForest)によるPython1行コードとその予測結果を示します。図2は、SVMの場合です。Python numpy配列のスライシング(特性データと正解レベルを分離するため)を行い、学習(.fit)結果を予測(.predict)へ接続しています。確かに、素早く簡潔なコーディングとなりました。学習に用いたデータに対する予測結果は、正解率89%でした。9件のうち1件のみが誤まった判定となりましたが、こんな少ないデータでも良く予測できることが確認できました。
さて、参考文献[1]の最後に、以下のような叙述がありました。納得ですね。
2021年6月9日水曜日
「強化学習理論入門」の最終章は深層学習だった
【what is this】強化学習理論入門を書籍[1]で学んできましたが、その最終章(第5章)は深層学習でQ-Learningを行うものでした。ここでその技術を述べることはできませんが、最後の例題「あるけあるけゲーム」でその魅力に浸りたいと思います。
■DQN(Deep Q Network)これまでに、行動ポリシーπについて、状態価値関数Vπ(s)や、行動-状態価値関数qπ(s, a)を計算して、最善の行動ポリシーを求めることをやってきました。しかし、状態(s)の数が非常に大きい場合などは、全ての状態についてこれらの関数値を保存しながら利用することは困難となります。(例えば、囲碁の場合、盤面の状態の数は10の172乗というとてつもない数になると言われています。)
ここでとりあげる「あるけあるけゲーム」の規則は、図1の右側の説明にあります。キャラクターは障害物(および自分の辿った場所)を避けて、できるだけ長く歩く、というものです。何の方策もなく歩くと、図1の結果のように、長さ(Length)5程度で短く終わる場合が多いです。自分の軌跡に戻ってしまってゲーム終了となる場合も多いです。
このゲームを、如何にしてベルマン方程式に結びつけるか(アクション、報酬、状態の設計)、そして、さらにどのようにニューラルネットワークで学習させるのか、それを学べるのが、この書籍の第5章なのです。図4はその最終的な結論としてのDQNのネットワーク構成です。詳細を掴むにはこの書籍を読んで戴く必要がありますが、画像認識で多用されている畳み込みフィルター(conv2d層)が使われている点がポイントの一つです。これは、別々のレイヤーに置かれたキャラクタと障害物の位置関係を把握するためです。
基礎から始めて高度な強化学習理論が実に丁寧に説明されており、最後まで挫折せずに読めました。書籍によっては、最初は緻密な説明がなされていても、途中から杜撰な叙述になったり、急に飛ばしはじめたりする場合もあるのですが、本書は全くぶれることなく、最後まで緻密な説明で貫かれています。Pythonのコードの説明も、同様に非常に詳しく、読者にとってとてもありがたい。完全に理解したとは言えないかも知れないが、この強化学習理論の専門書(5章構成、全283ページ)を丸々一冊読み上げたということで、力がついた気がします。
2021年6月4日金曜日
強化学習:モンテカルロ法とQ-Learning
【what is this】強化学習に関するさらなる続編です。前回のレンタカーショップ問題とは異なり、環境モデルが分からない場合の例としての迷路問題をとりあげます。そして、その解法としての、モンテカルロ法とQ-Learningの性能を観察します。
■迷路問題とレンタカーショップ問題先のレンタカーショップ問題では、ある状態Sにおいて行動aを取った場合に、得られる報酬rと次の状態S'が起こる条件付き確率が分かっている(計算できる)必要がありました。しかし、現実の問題ではそれを満たさない場合も多いです。以下に述べる迷路問題(開始点から終点までの最短経路を求める)もその一つです。
ここでは、迷路問題に対する解法として、モンテカルロ法とQ-Learningなどを検討しています。本記事は、実際のところ、これまでと同じく、中井悦司著[1]の第4章を学んだ成果を簡単に書いたものです。