2020年1月16日木曜日

Overview of AI application development environment

I would like to present an overview of the environment for developing AI applications. Look at the diagram below that I created. Basically, we can develop apps in traditional programming languages. However, in recent years, a variety of tools, libraries, and frameworks are on top of it and can be developed at a much higher level. Furthermore, AI services on the cloud and APIs that can be called in various languages ​​are available. High-performance hardware is essential for performing AI processing. Deep learning takes a lot of work to prepare the required datasets, but some systems ease it. Don't miss out on the transfer learning for efficient training using already trained models. The need to run AI apps on smartphones is also growing. Block programming environments such as MIT App Inventor support this.

2020年1月1日水曜日

2重螺旋に描いた「行く年来る年」

 明けましておめでとうございます。

新年にあたって作成したイラスト
 年末に、「行く年来る年」のイラストを何か作りたいと考えました。思い付いたのが、サボテン等に見られる2重螺旋の利用です。さっそくですが、その小作品をご覧下さい。マルチエージェントモデリング用のNetLogo3D[1]を利用して作成しました。下図のとおり、令和元年(2019年)は、螺旋に沿って何処かへ引き込まれ去って行きます。さようなら、その節はお世話になりました。一方、新年令和2年(2020年)は、中央から力強く外へ進出しようとしています。私もこうなりたいものです。


サボテンの2重螺旋の利用
 ところで、上図では、矢印を示してあるので、時計回りの螺旋(中心へ向かうものと出てくるもの)が確認できます。しかし、よく目を凝らしていると、それらとは別の(反時計回り)螺旋も見えてきませんか?実は、このイラストは、下図に示すサボテンの2重螺旋[2]の上に2019年と2020年を載せたものなのです。実際、左右の図の螺旋構造は同一であり、両者の違いは見せ方にあります。サボテンを上から見た場合に中心から外へ向かう方向で突起を辿ると、時計回りに8本、反時計回りに13本の螺旋が確認できます。8と13は、生物界によく出現するフィボナッチ数列の部分列であることも知られています。これらは、学校の理科に出てきたはずですが、大人になるとほとんど忘れているようです。

l

2重螺旋をAIで認識
 次に思い付いたことは、AI(人工知能)は、時計回りと反時計回りの螺旋を識別(認識)できるか、ということです。しかし、上図でも矢印がなければ、両方向の螺旋が見えて交錯しそうです。そこで、方向を示す赤い小さな三角形を各要素に付して、「こちらの図では時計回りに見る」「この図では反時計回りに見る」とした多数のスクリーンショットをAIに学習させました。こんな時には、GoogleのTeachable Machine2[3]が最適です。コーディングしなくてもブラウザだけでAI実験できました。必要ならば、コーディングして、自分用にカスタマイズすることも難しくないです。

An example of emphasizing a clockwise spiral


 結論から言いますと、上図に示すとおり、AIにより時計回りと反時計回りの螺旋は、簡単に学習させて認識できることが分かりました。このような、誰でもサーッと使えるAIがさらに発展することを期待したいと思います。WordやExcelを使うのと同じような感覚でAIを利用できる、そんな時代になりつつあるのかも知れない。特に、言語自動翻訳はまさにそうなっており、画像認識等もその段階に入りつつあるのではないかと思います。

雑感 - AI
 本題から外れるかも知れませんが、最後にひと言。情報工学科の学生であれば、ニューラルネットワーク(誤差逆伝播法や畳み込み等を含む)の基本概念とそのプログラミングはマスターすべきでしょう。その知識が、正しい学習のさせ方と得られた結果の的確な理解に繋がることは明らかです。でも、それよりも先に、上記のTeachable Machineなどを利用してその素晴らしさを実感するのもよいでしょう。本格勉強は、それからでも遅くありません。むしろ、その体験によって勉学意欲が湧くこともあるでしょう。

参考資料
[1] NetLogo, NetLogo3D
https://ccl.northwestern.edu/netlogo/
https://ccl.northwestern.edu/netlogo/docs/3d.html
[2] サボテンに関する記事(情報工学科ブログ、2013年)
http://blog.cs.kanagawa-it.ac.jp/2013/02/netlogod.html
http://blog.cs.kanagawa-it.ac.jp/2013/01/blog-post_14.html
[3] Google Teachable Machine 2
https://teachablemachine.withgoogle.com
https://teachablemachine.withgoogle.com/faq#Saving-&-Exporting