2016年12月24日土曜日

クリスマスプレゼントか、NetLogo 6.0リリース(日本語に恩恵)

マルチエージェントモデリングソフトNetLogoですが、2016-12-23ににNetLogo 6.0として正式リリースされました。クリスマスプレゼントのようです!?6.0の詳細は以下にあります。

http://netlogo-users.18673.x6.nabble.com/NetLogo-6-0-released-td5006349.html

いろいろ素晴らしい改善がなされているようですが、私が特に注目したのは、Windows版において、エディタで日本語が使えるようになった!ことです。Macでは従来から何も問題無く日本語は使えました。しかし、学生はWindowsであり、私がコメント付きのNetLogoプログラムソースを渡しても、文字化けしてだめでした。それが解消されました!また、メニューも日本語になっていました。

NetLogo5.3-日本語コメント文字化け

NetLogo6.0-日本語コメントOK!

2016年12月21日水曜日

マルチエージェントでDeep Learningの基礎

私は時々、ちょっとしたITテクニカルな話題(試行試作の経験)を発信しています。そうしていると、教員、学生のみなさんから、時として、「先生、こんなことやられていますよね。僕も、私も、それをこんなところに使ってみたいのですが」という相談に来られる場合があります。いいですね。これはうれしいですね。昨日もありました。

その一環として、話題のDeep Learningの基礎である多層ニューラルネットワーク(バックプロパゲーションあり)についてです。現在、私の3年生ゼミで、マルチエージェントシステムNetLogoによるアプリケーションをやっています。あと3回くらいあります。Deep Learningの基礎をやりたいです。NetLogoに適当な例題ソースがありました。10年前に、NetLogoの創始者Wilensky自身が書いたプログラムです。基礎になることは、10年以上前にあったことを再確認!という感じです。

通常、Deep Learningをやるためのプログラミング言語は、Pythonですね。あるいは、Javaもありますが。マルチエージェントでやっている例は少ないでしょう。しかし、各ノード、そしてリンク(辺)自体もエージェントとして扱うとよいです。特に、リンクの重みが重要ですが、それは、リンクエージェントのひとつのプロパティ(属性)にすると自然に扱えます。

これを3年ゼミでやってみようと思います。しかし、ソースには、僅かな英文コメントしかありません。これじゃちょっと無理なので、全ステートメントに1行づつ日本語コメントを入れたものを作成しました。さらに、最も難解と思われる、バックプロパゲーションの解説図も付けました。何種類かの微分の式です。
(→もしも、この資料を希望される方は、メールでお知らせください。)

XORを認識するニューラルネットワークであることの確認

2016年12月13日火曜日

人工知能・ディープラーニングを学ぶためのメモ

 先日のKAITシンポジウム2016での、インテル野辺氏の基調講演、甲南大学灘本先生の招待講演とも、人工知能/ディープラーニングが話題になっていました。もはや、過去に人工知能関係をやっていたかどうかにかかわらず、広い分野の人々がこれを利用したり、活用を考えたりする時代が来たようです。

 遅れたスタートとなったのですが、私もなんとかやりはじめています。いろいろなレベルがあるでしょう。これまでに、私自身が買って読んだ(完読にいたらないのもありますが)書籍、それと実際にPythonやJavaで試した事項などが増えてきました。放っておくとすぐに忘れます。そこで、簡単にまとめた図を作り、今後をこれをもとに中身を充実させて行きたいと考えました。



 有名なDeep Learning関係のソフト、ツールなどで抜けているものもあります。全部網羅することはできません。自分に何か響いたものをやっています。

2016年12月10日土曜日

KAITシンポジウム2016で「現実感のある」エージェント指向モデリングを展示

以下の「KIAITシンポジウム2016」にて、「現実感のある」エージェント指向モデリングについて、ポスター発表とデモを行いました。
http://www.sympo2016.cs.kanagawa-it.ac.jp

展示したポスターは以下のものです。具体的題材は以下の2つです。
(1)共有資源競合問題(食事する哲学者)- 分散デッドロック検出
(2)指揮者なしの集団の同期動作 - 位相遅延モデルによるホタル群の自律的同期明滅

いずれも、以下の構成になっています。
  • 問題と解法原理の説明
  • NetLogoを使ったエージェント指向シミュレーション
  • Androidスマホ、またはSunSpotを用いた実装方法
  • その実働デモ
本学小宮学長をはじめ、外部からの何人かの来場者に説明することができました。こういう場では、やはりデモが重要だと改めて感じました。本当は(1)の方に力点を置きたかったのですが、問題の意味を説明する必要があり、ちょっと時間がかかる。一方、(2)の方は説明しやすく、すぐにデモに入れるものでした。

(1)のデモでは、5台のAndroid端末が必要です。(私が、一人で10台のAndroid端末をいつも持っている理由がここにもあります!そんなことは説明しませんでしたが。)そして、こういう場では、インターネットを使うと、時として失敗する場合があるが(特に大勢の来場者があってそれらの人がWiFi機器を持っている状態では)、今回は、5台のAndroidの間でローカルネットワークを構成(ごく近接で)することでその心配はほとんどありませんでした。

2016年12月6日火曜日

Web Serviceの続きの続き (分散システムの演習)

 先の記事「Web Serviceの続き」の続きです。以下の図を見ると、なんだ、Android端末が追加されただけじゃないの?と思われるかもしれません。しかし、そこが重要なのです。JavaのJAX-WSを使って生成される一般のWeb Serviceが、別の言語(例えばPython on Ubuntu)でのクライアントからも使えることは非常に大きい。今回は、そこへAndroid端末も参加させたということです。


 
 なお、Android上でWeb serviceのクライアントプログラムを書くには、KSOAP2という軽量ライブラリを使います。スマートフォンという制約されたリソースで動かすために用意されたライブラリです。しかし、それだけに、Python等の場合と比べて、やや記述量が多くなります。例えば、Webサービスに含まれる引数付きのメソッドを呼び出すには、引数の型や値を特別のプロパティに設定してやる必要があります。また、スマートフォンでは非同期処理も重要であり、このライブラリ使用もAsyncTaskとして扱います。