2017年7月26日水曜日

グラフィカルな人工知能(ニューラルネットワーク)作成ツール

 すでに試された方もいるかも知れませんが、私が「日経ソフトウェア 2017年9月号」の記事で、これは!と目にとまったものがあります。Simbrainというソフト、グラフィカルに、通常のコーディング無しに、ニューラルネットワークを構成するもののようです。

 誤差逆伝播(バックプロパゲーション)もできるようです。興味深いです。早速、記事の内容をトレースしてみました。引き続き、記事には載っていないが、非線形分離問題としてポピュラーなXORを構成し、学習させてみました。まだ、全然深く調べていないので、一見うまくいっているようですが、これが正しいネットワークであり、結果も妥当なのがまだ確信は持てません。


グラフィカルに作成したニューラルネットワークで、XORを学習させる

 しかし、人工知能となる(ディープな)ニューラルネットワークをこんなに簡単に構成できて、学習させることができるならば、そのインパクトは大きいのではないでしょうか。今後、さらに調査し、応用を深めたくなります!

2017年7月17日月曜日

マルチコア並列の性能を見る

 学生の皆さんが持っているノートPCですが、マルチコアになっています。それを意識している学生諸君はほとんどいないように思われます。実質4台のCPU(正確には、多くの場合、2コア×2ハイパースレッディング)が載っているのに!

 情報工学応用ユニット1のある実験のある課題では、ここに焦点を当てました。通常のプログラミング言語で、この4台のCPUを使った並列プログラムを書いて動かすことはとても困難です。しかし、Java SE8の並列ストリームとラムダ式を使うと、非常に簡単にそのような並列プログラムを作成し、動かすことができます。

 この実験での課題は、「見出し語が約12,000語の英語辞書」を使って、「約1,000語のミススペル語を正しいスペルに直せ!」という問題です。Windowsの標準機能である「リソースモニタ」を使うと、以下のような綺麗なCPU稼働状況が分かります。解答した学生諸君の中には、もっときれいな(逐次と並列の対比がより明確な)図を提出した人もいます。

[図が小さいので、拡大してご覧下さい]

2017年7月16日日曜日

IT夢コン2017のピア賞 投票快速集計アプリ

 今年も、本学で開催の「IT夢コン2017」の最終選考会が迫ってきました。生徒同士が、互いに発表ポスタを評価して決める「ピア賞」もあります。その投票の集計ですが、当日、スケジュールがタイトであるため、すばやく、確実に行う必要があります。そこで、作成したのが、下図のAndroid用「快速集計アプリ」です。

 以下の画面のデータは、テスト用の架空のデータです。模擬投票の結果は、投票者数=52名、投票総数=133票、第一位は35番の作品、第二位は31番の作品となりました。



 さて、このAndroidアプリ、大した機能はなく、トリビアルな処理に見えます。確かにそうですが、そうでもないところも少しあります。このアプリ設計での留意点を列挙します。


  • このようなユーザインタフェースを持つAndroidアプリの作成は、MIT App Inventorの得意とするところであります。特に、画面タッチ。その効率的開発の恩恵を受けます。
  • 多数のボタンがあります。それを効率良く配置し、ボタンに対する反応(アクション)も効率良く書きたい。
  • 集計中に、不意に中断せざるを得ないかも知れない。中断と再開内部データベースを使って実現する。
  • 集計中に、画面を不意に触れてしまい、カウントがダメになることを防ぎたい。そのために、ボタンの「クリック」ではなく「ロングクリック」による反応を用いる。
  • 来年度も使いたい。また、今年度も直前に何かデータの修正があるかも知れない。したがって、ポスター作品データは、プログラムに組み込むのではなく、テキストファイル(スマホのSDカードに保存)に記載する。
  • 想定投票者50名、投票総数150票で、結果をえるまでに5分と見積もる。上記の「ロングクリック」で6割ほど時間が増すが、確実性を重視します。


2017年7月15日土曜日

スマホでマルチエージェントモデリング!

 社会現象、物理化学現象、生物/生命現象、コンピュータアルゴリズム等をモデル化し、シミュレーションによってその現象を解析したり、予測を行うための手法として、「マルチエージェントモデリング」があります。そのためのソフトウェアはいくつかあるのですが、NetLogo(無償)が非常に有力なものの一つです。NetLogoは昨年から、メニューやテキストに日本語が使えるようになり、いっそう身近なものになりました。

 さらに、すばらしい機能があります。これまでのマルチエージェントモデルはPCの上で動く重たい処理が付きものでした。しかし、ここに来て、スマホでも事実上実行できるようになりました!(正確に言えば)Web版が公開されています。PCには、何も専用ソフトは要らず、ブラウザからNetLogoのソースファイルを指定すれば、スマートフォンの画面でも実行できるのです。もちろん、(画面が小さくちょっとやりにくいが)その場で、NetLogoソースコードも編集できます。

 これで何か新しい方向が生まれそうです。詳しくは言えませんが、例えば、
→「スマホのカメラで現場を撮影する」
→「人工知能による画像解析で被写体の特徴をテキストで得る」
→「マルチエージェントモデルのパラメータにそれ反映させる」
→「その場で、スマホの画面で実行させる」

というような使い方も起こるだろう。

有名な「羊」と「オオカミ」の生存のダイナミクス:Androidスマホでの実行

「環境にどのように影響されるか」の私のモデリング:Androidスマホでの実行