Submit Search
Upload
MicroPythonで作る人工生命っぽい何か
•
2 likes
•
3,503 views
Makoto Koike
Follow
Unagi.py@豊橋 東海ちほー合同大勉強会(2018/10/27)
Read less
Read more
Engineering
Report
Share
Report
Share
1 of 29
Download now
Download to read offline
Recommended
ROSでつながるVRChat
ROSでつながるVRChat
Hirokazu Onomichi
見やすいプレゼン資料の作り方 - リニューアル増量版
見やすいプレゼン資料の作り方 - リニューアル増量版
MOCKS | Yuta Morishige
スタートアップの 3 分ピッチテンプレート
スタートアップの 3 分ピッチテンプレート
Takaaki Umada
優れた研究論文の書き方―7つの提案
優れた研究論文の書き方―7つの提案
Masanori Kado
ブレインパッドにおける機械学習プロジェクトの進め方
ブレインパッドにおける機械学習プロジェクトの進め方
BrainPad Inc.
続・パワポは「最後」に開く-もっとみがく!プレゼン資料作成術「大掃除編」
続・パワポは「最後」に開く-もっとみがく!プレゼン資料作成術「大掃除編」
Michiyo Fukada
【Unity】 Behavior TreeでAIを作る
【Unity】 Behavior TreeでAIを作る
torisoup
研究発表を準備する(2022年版)
研究発表を準備する(2022年版)
Takayuki Itoh
Recommended
ROSでつながるVRChat
ROSでつながるVRChat
Hirokazu Onomichi
見やすいプレゼン資料の作り方 - リニューアル増量版
見やすいプレゼン資料の作り方 - リニューアル増量版
MOCKS | Yuta Morishige
スタートアップの 3 分ピッチテンプレート
スタートアップの 3 分ピッチテンプレート
Takaaki Umada
優れた研究論文の書き方―7つの提案
優れた研究論文の書き方―7つの提案
Masanori Kado
ブレインパッドにおける機械学習プロジェクトの進め方
ブレインパッドにおける機械学習プロジェクトの進め方
BrainPad Inc.
続・パワポは「最後」に開く-もっとみがく!プレゼン資料作成術「大掃除編」
続・パワポは「最後」に開く-もっとみがく!プレゼン資料作成術「大掃除編」
Michiyo Fukada
【Unity】 Behavior TreeでAIを作る
【Unity】 Behavior TreeでAIを作る
torisoup
研究発表を準備する(2022年版)
研究発表を準備する(2022年版)
Takayuki Itoh
【メタサーベイ】基盤モデル / Foundation Models
【メタサーベイ】基盤モデル / Foundation Models
cvpaper. challenge
ラボラトリーオートメーションのためのソフトウェア思想教育(非プログラマ―が知っておくべきプログラミングの本質)
ラボラトリーオートメーションのためのソフトウェア思想教育(非プログラマ―が知っておくべきプログラミングの本質)
Tokoroten Nakayama
DX時代のITエンジニアに送る、アジャイル式「いきいき」ヘルスマネジメント
DX時代のITエンジニアに送る、アジャイル式「いきいき」ヘルスマネジメント
Takeshi Kakeda
G2o
G2o
Fujimoto Keisuke
[DL輪読会]Pixel2Mesh: Generating 3D Mesh Models from Single RGB Images
[DL輪読会]Pixel2Mesh: Generating 3D Mesh Models from Single RGB Images
Deep Learning JP
社会シミュレーションとデジタルゲーム
社会シミュレーションとデジタルゲーム
Youichiro Miyake
つたわるスライド
つたわるスライド
Kazuyoshi Goto
なぜあの人のプレゼンテーションはいつもイイねと言われるのか0716
なぜあの人のプレゼンテーションはいつもイイねと言われるのか0716
Dai Murata
Devil is in the Edges: Learning Semantic Boundaries from Noisy Annotations
Devil is in the Edges: Learning Semantic Boundaries from Noisy Annotations
Kazuyuki Miyazawa
しょぼいプレゼンをパワポのせいにするな! by @jessedee
しょぼいプレゼンをパワポのせいにするな! by @jessedee
「MakeLeaps」請求書の作成、管理、郵送
良いプレゼン 良いスライド
良いプレゼン 良いスライド
京大 マイコンクラブ
はじめようRGB-Dセンシングと画像処理
はじめようRGB-Dセンシングと画像処理
Takashi Yoshinaga
協働ロボットCOROの開発における形式的仕様記述KMLの開発と適用
協働ロボットCOROの開発における形式的仕様記述KMLの開発と適用
Life Robotics
【プレゼン】見やすいプレゼン資料の作り方【初心者用】
【プレゼン】見やすいプレゼン資料の作り方【初心者用】
MOCKS | Yuta Morishige
マッチングサービスにおけるKPIの話
マッチングサービスにおけるKPIの話
cyberagent
四脚ロボットによるつくばチャレンジへの取り組み
四脚ロボットによるつくばチャレンジへの取り組み
kiyoshiiriemon
エンジニアから飛んでくるマサカリを受け止める心得
エンジニアから飛んでくるマサカリを受け止める心得
Reimi Kuramochi Chiba
Fortranが拓く世界、VSCodeが架ける橋
Fortranが拓く世界、VSCodeが架ける橋
智啓 出川
LiDAR点群とSfM点群との位置合わせ
LiDAR点群とSfM点群との位置合わせ
Takuya Minagawa
あなたの手元の本よりいい方法がある! UXデザインのプロはこうやってユーザーのインサイトを確実に見つける
あなたの手元の本よりいい方法がある! UXデザインのプロはこうやってユーザーのインサイトを確実に見つける
Yoshiki Hayama
3Dプリンタでロボット作るよ#4___マニピュレータを3Dプリンタで作ってみたよ
3Dプリンタでロボット作るよ#4___マニピュレータを3Dプリンタで作ってみたよ
Yoshihiro Shibata
Kichijoji-mini #010:うちの残念な開発環境を正常な状態にするには?
Kichijoji-mini #010:うちの残念な開発環境を正常な状態にするには?
YASUKAZU NAGATOMI
More Related Content
What's hot
【メタサーベイ】基盤モデル / Foundation Models
【メタサーベイ】基盤モデル / Foundation Models
cvpaper. challenge
ラボラトリーオートメーションのためのソフトウェア思想教育(非プログラマ―が知っておくべきプログラミングの本質)
ラボラトリーオートメーションのためのソフトウェア思想教育(非プログラマ―が知っておくべきプログラミングの本質)
Tokoroten Nakayama
DX時代のITエンジニアに送る、アジャイル式「いきいき」ヘルスマネジメント
DX時代のITエンジニアに送る、アジャイル式「いきいき」ヘルスマネジメント
Takeshi Kakeda
G2o
G2o
Fujimoto Keisuke
[DL輪読会]Pixel2Mesh: Generating 3D Mesh Models from Single RGB Images
[DL輪読会]Pixel2Mesh: Generating 3D Mesh Models from Single RGB Images
Deep Learning JP
社会シミュレーションとデジタルゲーム
社会シミュレーションとデジタルゲーム
Youichiro Miyake
つたわるスライド
つたわるスライド
Kazuyoshi Goto
なぜあの人のプレゼンテーションはいつもイイねと言われるのか0716
なぜあの人のプレゼンテーションはいつもイイねと言われるのか0716
Dai Murata
Devil is in the Edges: Learning Semantic Boundaries from Noisy Annotations
Devil is in the Edges: Learning Semantic Boundaries from Noisy Annotations
Kazuyuki Miyazawa
しょぼいプレゼンをパワポのせいにするな! by @jessedee
しょぼいプレゼンをパワポのせいにするな! by @jessedee
「MakeLeaps」請求書の作成、管理、郵送
良いプレゼン 良いスライド
良いプレゼン 良いスライド
京大 マイコンクラブ
はじめようRGB-Dセンシングと画像処理
はじめようRGB-Dセンシングと画像処理
Takashi Yoshinaga
協働ロボットCOROの開発における形式的仕様記述KMLの開発と適用
協働ロボットCOROの開発における形式的仕様記述KMLの開発と適用
Life Robotics
【プレゼン】見やすいプレゼン資料の作り方【初心者用】
【プレゼン】見やすいプレゼン資料の作り方【初心者用】
MOCKS | Yuta Morishige
マッチングサービスにおけるKPIの話
マッチングサービスにおけるKPIの話
cyberagent
四脚ロボットによるつくばチャレンジへの取り組み
四脚ロボットによるつくばチャレンジへの取り組み
kiyoshiiriemon
エンジニアから飛んでくるマサカリを受け止める心得
エンジニアから飛んでくるマサカリを受け止める心得
Reimi Kuramochi Chiba
Fortranが拓く世界、VSCodeが架ける橋
Fortranが拓く世界、VSCodeが架ける橋
智啓 出川
LiDAR点群とSfM点群との位置合わせ
LiDAR点群とSfM点群との位置合わせ
Takuya Minagawa
あなたの手元の本よりいい方法がある! UXデザインのプロはこうやってユーザーのインサイトを確実に見つける
あなたの手元の本よりいい方法がある! UXデザインのプロはこうやってユーザーのインサイトを確実に見つける
Yoshiki Hayama
What's hot
(20)
【メタサーベイ】基盤モデル / Foundation Models
【メタサーベイ】基盤モデル / Foundation Models
ラボラトリーオートメーションのためのソフトウェア思想教育(非プログラマ―が知っておくべきプログラミングの本質)
ラボラトリーオートメーションのためのソフトウェア思想教育(非プログラマ―が知っておくべきプログラミングの本質)
DX時代のITエンジニアに送る、アジャイル式「いきいき」ヘルスマネジメント
DX時代のITエンジニアに送る、アジャイル式「いきいき」ヘルスマネジメント
G2o
G2o
[DL輪読会]Pixel2Mesh: Generating 3D Mesh Models from Single RGB Images
[DL輪読会]Pixel2Mesh: Generating 3D Mesh Models from Single RGB Images
社会シミュレーションとデジタルゲーム
社会シミュレーションとデジタルゲーム
つたわるスライド
つたわるスライド
なぜあの人のプレゼンテーションはいつもイイねと言われるのか0716
なぜあの人のプレゼンテーションはいつもイイねと言われるのか0716
Devil is in the Edges: Learning Semantic Boundaries from Noisy Annotations
Devil is in the Edges: Learning Semantic Boundaries from Noisy Annotations
しょぼいプレゼンをパワポのせいにするな! by @jessedee
しょぼいプレゼンをパワポのせいにするな! by @jessedee
良いプレゼン 良いスライド
良いプレゼン 良いスライド
はじめようRGB-Dセンシングと画像処理
はじめようRGB-Dセンシングと画像処理
協働ロボットCOROの開発における形式的仕様記述KMLの開発と適用
協働ロボットCOROの開発における形式的仕様記述KMLの開発と適用
【プレゼン】見やすいプレゼン資料の作り方【初心者用】
【プレゼン】見やすいプレゼン資料の作り方【初心者用】
マッチングサービスにおけるKPIの話
マッチングサービスにおけるKPIの話
四脚ロボットによるつくばチャレンジへの取り組み
四脚ロボットによるつくばチャレンジへの取り組み
エンジニアから飛んでくるマサカリを受け止める心得
エンジニアから飛んでくるマサカリを受け止める心得
Fortranが拓く世界、VSCodeが架ける橋
Fortranが拓く世界、VSCodeが架ける橋
LiDAR点群とSfM点群との位置合わせ
LiDAR点群とSfM点群との位置合わせ
あなたの手元の本よりいい方法がある! UXデザインのプロはこうやってユーザーのインサイトを確実に見つける
あなたの手元の本よりいい方法がある! UXデザインのプロはこうやってユーザーのインサイトを確実に見つける
Similar to MicroPythonで作る人工生命っぽい何か
3Dプリンタでロボット作るよ#4___マニピュレータを3Dプリンタで作ってみたよ
3Dプリンタでロボット作るよ#4___マニピュレータを3Dプリンタで作ってみたよ
Yoshihiro Shibata
Kichijoji-mini #010:うちの残念な開発環境を正常な状態にするには?
Kichijoji-mini #010:うちの残念な開発環境を正常な状態にするには?
YASUKAZU NAGATOMI
IoT x オープンイノベーション MERC丸の内院生ラウンジ
IoT x オープンイノベーション MERC丸の内院生ラウンジ
Jun Harada
Rubyだけでチンチロをつくる
Rubyだけでチンチロをつくる
K K
Bot Builder V4 SDK + QnA Maker / LUIS
Bot Builder V4 SDK + QnA Maker / LUIS
Yoshitaka Seo
モノタロウECプラットフォームを支える開発運用モダナイゼーションの取り組み #devsumi
モノタロウECプラットフォームを支える開発運用モダナイゼーションの取り組み #devsumi
株式会社MonotaRO Tech Team
[PyConJP2019]Pythonで切り開く新しい農業
[PyConJP2019]Pythonで切り開く新しい農業
Makoto Koike
機械学習でテスト実行を効率化するLaunchable.pdf
機械学習でテスト実行を効率化するLaunchable.pdf
yusuke shibui
3分で実装完了!エッジ AI デモ
3分で実装完了!エッジ AI デモ
Tomoyuki Sugita
20180829 ガチラボ vol.9
20180829 ガチラボ vol.9
Satoshi Fujimoto
Iot2bio2 20160521
Iot2bio2 20160521
Takao Ikoma
Mft2014 defeated
Mft2014 defeated
裕士 常田
Rubyでオリジナルプログラムをつくろう
Rubyでオリジナルプログラムをつくろう
K K
20180822 ガチラボ vol.8
20180822 ガチラボ vol.8
Satoshi Fujimoto
Shizuoka.py #6 lt 確定申告をpythonで乗り切る
Shizuoka.py #6 lt 確定申告をpythonで乗り切る
hiroshi sano
Rosbag search system
Rosbag search system
yusuke shibui
Ml system in_python
Ml system in_python
yusuke shibui
Botkit4.x Has Come!
Botkit4.x Has Come!
Hikaru Uchiyama
秋葉原IT戦略研究所のご紹介(2016/05/04)
秋葉原IT戦略研究所のご紹介(2016/05/04)
Junichi Noda
Webを支える組み込み技術
Webを支える組み込み技術
Yuji Chiya
Similar to MicroPythonで作る人工生命っぽい何か
(20)
3Dプリンタでロボット作るよ#4___マニピュレータを3Dプリンタで作ってみたよ
3Dプリンタでロボット作るよ#4___マニピュレータを3Dプリンタで作ってみたよ
Kichijoji-mini #010:うちの残念な開発環境を正常な状態にするには?
Kichijoji-mini #010:うちの残念な開発環境を正常な状態にするには?
IoT x オープンイノベーション MERC丸の内院生ラウンジ
IoT x オープンイノベーション MERC丸の内院生ラウンジ
Rubyだけでチンチロをつくる
Rubyだけでチンチロをつくる
Bot Builder V4 SDK + QnA Maker / LUIS
Bot Builder V4 SDK + QnA Maker / LUIS
モノタロウECプラットフォームを支える開発運用モダナイゼーションの取り組み #devsumi
モノタロウECプラットフォームを支える開発運用モダナイゼーションの取り組み #devsumi
[PyConJP2019]Pythonで切り開く新しい農業
[PyConJP2019]Pythonで切り開く新しい農業
機械学習でテスト実行を効率化するLaunchable.pdf
機械学習でテスト実行を効率化するLaunchable.pdf
3分で実装完了!エッジ AI デモ
3分で実装完了!エッジ AI デモ
20180829 ガチラボ vol.9
20180829 ガチラボ vol.9
Iot2bio2 20160521
Iot2bio2 20160521
Mft2014 defeated
Mft2014 defeated
Rubyでオリジナルプログラムをつくろう
Rubyでオリジナルプログラムをつくろう
20180822 ガチラボ vol.8
20180822 ガチラボ vol.8
Shizuoka.py #6 lt 確定申告をpythonで乗り切る
Shizuoka.py #6 lt 確定申告をpythonで乗り切る
Rosbag search system
Rosbag search system
Ml system in_python
Ml system in_python
Botkit4.x Has Come!
Botkit4.x Has Come!
秋葉原IT戦略研究所のご紹介(2016/05/04)
秋葉原IT戦略研究所のご紹介(2016/05/04)
Webを支える組み込み技術
Webを支える組み込み技術
MicroPythonで作る人工生命っぽい何か
1.
MicroPythonで作る 人工生命っぽい何か #2018/10/27 東海ちほー合同勉強会
2.
自己紹介 KOIKE Makoto ○ 湖西市で農家をやってます ○ 元組込みエンジニア ○
雑誌にAIやIoT記事を寄稿した りしてます 2
3.
メイカームーブメントに感動!ものづくりを始める ● 2013年 MA9 ●
2014年 MA10 ● 2015年 MA11 ● 2016年 MFT2016, GUGEN2016, MA2016 ● 2017年 MFT2017,GUGEN2017,MA2017 ● 2018年 MFT2018 https://protopedia.net/prototyper/makotokoike 3
4.
ディープラーニング使って キュウリ選別システム作ってます キュウリ 仕分け機 ディープラーニング 農家 おじさん 4 Prototype - 3
: Raspberry Pi3 TensorFlow Kivy
5.
試作4号機 開発中 ● テーブル無しの仕分け装置 5 進捗 seems
to be missing!
6.
今日話すこと ● 人工生命(みたいなの)を作りたいのぉ! ロボスタ(2016/8/4記事):https://robotstart.info/2016/08/04/alter-mirai.html 2016年,日本科学未来館で展示された「機械人 間オルタ」.大阪大学石黒研と東京大学池上研と の共同プロジェクトにより開発された.ロボットの 制御にはCPGとスパイキング・ニューラルネット ワークが使われており,手や顔の動作は 人間に より事前にプログラムされたものではなく,各種セ ンサの値から自発的に作られている
. 生きているように振る舞うようプログラ ムされたロボット 自身の置かれた環境から自律的に振 る舞いを獲得している 6
7.
人工生命とは 人工生命は,人間によって設計,作製された生命.生化学やコンピュータ 上のモデルやロボットを使って,生命をシミュレーションすることで,生命に 関するシステムを研究する分野である.人工生命は生物学的現象を「再 現」しようと試みる点で生物学を補うものである.また,人工生命をALifeを 呼ぶことがある. - wikipediaより オライリー・ジャパン 作って動かすALifeー実装を通した人工生命モデル理論入門 岡 瑞起,池上
高志,ドミニク・チェン,青木 竜太,丸山 典宏 著 生命性をコンピュータ上でシミュレートすることにより,生命の本質に 迫る「ALife(人工生命)」は,「AI(人工知能)」の発展系 として,近年 改めて注目されつつある分野です. ※面白そうだけど,まだ読んでないです.ということで,今日話す内容も初学 者の薄っぺらい知識なので間違ってるかもしれませんがご容赦を・・・. 7
8.
ALifeの興味深い点 ● 人工知能(AI) ○ トップダウン的手法 ○
頭脳が知的な振る舞いを計算し,手足などの細部を制御する ● 人工生命(ALife) ○ ボトムアップ的手法 ○ 細部1つ1つの単純な振る舞いが相互作用することで,全体として知的な振る 舞いになる 8 ロドニー・ブルックス ロボティクス,人工知能の研究者で, iRobot創業者 &CTO,ルンバの開発者としても知られる. 1986年,“サブサンプション・アーキテクチャ( SA)”を提 唱.SAとは,複雑な知的振る舞いを多数の単純な振る 舞いモジュールに分割し,モジュールの階層構造を構築 する.各層は何らかの目的に沿った実装であり、上位層 に行くに従ってより抽象的になる。 (wikipediaより)
9.
人工生命といえば・・・ ● ライフゲーム ●
ボイド(鳥の群れのモデル) ただ,コンピュータ上でのシミュレーションだけじゃちょっと味気ないですよね. 両方ともALife本のGithub(https://github.com/alifelab/alife_book_src)サンプルコードから 9
10.
作った! 10 8本の触覚 (タッチセンサー) 動力 (振動モーター) 光る (LED) 脳 (ニューラルネット) 人工昆虫?的なもの
11.
使ったのはこれ!【ハード編】 ESP32-DevKitC 価格:1,480円(秋月電子通商) Wi-Fi,Bluetoothが使えるモジュール ESP-WROOM-32の評価ボード.USBでPCに繋ぐ だけで直ぐに開発を始められる超お手軽無線 ボード.開発環境は,ArduinoIDEや MicroPythonなどに対応している.そして安い. ● CPU:テンシリカ Xtensa
LX6 ● SRAM:520KB ● Flash:4MB ● 周辺リソース ○ I2C,SPI,ADC,DAC,・・・ ○ 静電容量タッチセンサー x10 秋月電子通称 (http://akizukidenshi.com/catalog/g/gM-11819/) 11
12.
使ったのはこれ!【ソフト編】 MicroPython MicoroPythonは,マイクロコントローラ上での動 作に最適化されたPython3の処理系.2013年か ら開発が始まり,オープンソースとして公開されて いる.標準Pythonと比較し,少ないリソースで動 作させるために標準ライブラリなどがかなり削られ ており,若干慣れが必要(import thisもない).あ と,未対応のリソースや制限などがあることに注意 が必要. pyboard,WiPy,ESP8266, ESP32などに対応. URL:http://micropython.org ※ESP32に関して言えば,MicroPythonの他に公式開発環境の
ESP-IDF(C++)やArduino Core for ESP32 (arudinoライク)などがある.どうしても Pythonで書きたいという訳ではない場合は, Arduino IDEがオススメ! 12
13.
MicroPython標準パッケージ一覧 ● パッケージ名の接頭語“u”はMicroバージョンの実装を表す ● マイコンリソースへのアクセスはmachineパッケージで行う ●
対応するSoC用パッケージもある(例:pyb,wipy,esp,esp32,...) ● upipでPyPIからのインストールも可(一般的にはmicropython-*) 13 詳細は:https://docs.micropython.org/en/latest/library/index.html MicroPython v1.9.4-665
14.
先ずは,こんなのを作る ● 震えたり,光ったりするだけの昆虫っぽいもの ● 8本の触覚を持つ ●
振る舞いはリアルワールドから自律的に学習する ○ 学習の動機となる欲求(恐怖的な?)をパラメータとして設定しておく ○ ※これを人間(創造主)が設定しては人工生命ではない?(ココらへんはよくわかんない) 14 触覚 ニューラルネットワーク 震える 光る 入力 出力 触られるのは怖い
15.
自律的に学習 ● 今回は強化学習のアルゴリズムである“Q学習”を使用 15 【Q学習とは】 行動価値関数Q(s,a)を,実際に行動して得られた結果で更新していく手法. 状態sの時に,行動aを 行う価値 状態sの時に,行動aを 行った際に得られる報 酬 行動後の状態s’での価値 ※価値が最大となる行動を取る とする(off-policy learning) <更新(学習)方法>
TD誤差 ざっくり言うと,ある状態 sでおこなう行動aの価値は,行動したことで直ぐに得られる報酬と その行動で将来得られるであろう報酬を多少割り引いて合計したもの. このQ(s,a)を求める(=試行結果から近似する)ことが Q学習の目標. 試行して得られた結果 行動評価関数学習率 何回も試行を行うことで,実際の結果と見込み Q(s,a)の誤差が0に向かう
16.
ついでにDQN(Deep Q-Network) ● ATARIのゲーム(Pong,Space
Invaders,...)をプレイする人工知能 ● Q学習+Deep Learning ○ 行動価値関数Q(s,a)を畳み込みニューラルネットワークを使って学習する ● 何がスゴイのか ○ ゲーム画面から直接学習した(どんなゲームも学習できる!?) 16 【今まで】 【DQN】 畳み込みニューラルネットワークを使って 行動価値Q(s,a)を近似 ゲーム画面 ゲーム画面 CNN Q(s,a) 行動価値 自機座標:x,y ボールの座標:x,y ボールの角度:θ 等 ゲームの状態 ※ゲーム毎に異な る Q学習 Q(s,a) 行動価値 ゲーム毎に何を状態を 表すパラメータとするか 考える必要があった
17.
今回の手法(ESP32で動かすために) ● Deep Q-Networkはたぶん動かせない ●
でも,ニューラル・ネットワークは使いたい ○ ディープじゃないものを使用 ● 計算量を極力減らす ○ 触覚は8本用意したが OR入力とした ○ 振動モーターとLEDも同時出力とした ● ニューラルネットワーク+Q学習 ○ 状態sは,「触覚」と「 LED・振動出力状態」でどちらもブーリアン ○ 行動aは,「a0 :出力停止」と「a1 :出力開始」の2つ ○ それと・・・ 17 NN 中間層:1層 ユニット数:8 触覚(8本のOR) 0:触られていない 1:どれか触られたいる 出力状態 0:停止中 1:出力中 Q(s,a0 ) Q(s,a1 )
18.
世界1秒前仮説を大胆に採用 ● 「世界は1秒前に始まり,始まりから1秒後には終わっている」とする ● 1ターンで終わる世界 ●
つまり,こう 18 将来など考えない目先の報酬が全て ※こうすることで,学習時のNN順伝搬の計算をカット(計算量削減)
19.
報酬を考える ● Q学習を行うためには報酬Rの設定が必要 ● 今回作る人工生命は昆虫的なものをイメージ ●
昆虫は敵に襲われると恐怖を感じる→敵がいないと安心する→安心感を報酬とし た ● 昆虫は動くと疲れる→なるべく動きたくない→怠惰なことを報酬とした 19 【報酬一覧】 状況 報酬 触覚に触れていた外敵が去った (触覚の入力が1→0になった) 1.0 動かなかった (出力状態が0の時) 0.2 上記以外 なし(0)
20.
実装 ● ざっくり仕様が決まったので実装するよ ○ 入力はESP32のタッチセンサー8本をOR ○
LEDと振動モーターの出力は同時に行う ○ ニューラルネットワーク(入力層:2ユニット→中間層:8→出力層:2) ○ Q学習は1ターンしか考えない ○ 報酬は2つ(安心感と怠惰) 20
21.
ハードウェア実装 ● 回路図(動けばいいだけのざっくり実装) ○ タッチセンサー8本 ○
LED出力 ○ 振動モーター ○ 電池駆動CR2 21 ESP32 触覚0 触覚1 触覚2 触覚3 触覚4 触覚5 触覚6 触覚7 GPIO4 GPIO12 GPIO13 GPIO14 GPIO15 GPIO27 GPIO32 GPIO33 GPIO26 GPIO25 100R M GND 3V3 振動モーター FM34F 2SK4017 CR2電池 3V 初め3Vボタン電池 を使おうとしたが 動かなかった. 高いけどCR2電池 を使うことにした. 振動モーターは ,GPIOからの出 力では動作が不 安定だったため, リレー駆動にした.
22.
ニューラルネットワークの実装 ● もちろんTensorFlowやChainerなどのライブラリは使えない ● ゼロから実装するしかない? 22 オライリー・ジャパン ゼロから作るDeepLearning 斎藤
康毅 著 ディープラーニングの入門書. 外部のライブラリに頼らずに ,Python3 によってゼロからディープラーニングを作ることで,ディープラーニン グの原理を楽しく学べます. (https://www.oreilly.co.jp/books/9784873117584/)
23.
いきなりつまずく numpyが使えるわけなかった・・・ えっ,numpyなしで実装しないといけないの!? 23
24.
MicroMLP ● MicroMLP(a micro
artificial neural network multilayer perceptron) ○ https://github.com/jczic/MicroMLP ○ MicroPythonで実装された多層NNフレームワーク ○ “microMLP.py”1ファイルのみ ○ 基本的な機能のみの実装(Keep it simple, stupid ) 24 【基本的な使い方:チュートリアル XORの学習】 from microMLP import microMLP mlp = MicroMLP.Create([2,2,1], MicroMLP.ACTFUNC_TANH, MicroMLP.LayersFullConnect) nnFalse = MicroMLP.NNValue.FromBool(False) nnTrue = MicroMLP.NNValue.FromBool(True) mlp.AddExample([nnFalse, nnFalse], [nnFalse]) mlp.AddExample([nnFalse, nnTrue ], [nnTrue ]) mlp.AddExample([nnTrue , nnTrue ], [nnFalse]) mlp.AddExample([nnTrue , nnFalse], [nnTrue ]) learnCount = mlp.LearnExamples(maxSeconds=60*3) print(mlp.Predict([nnFalse, nnFalse])[0].AsBool) ESP32の場合,学習時間を3分ぐ らいにすると上手く行った.
25.
実装 ● 処理の流れ 25 GPIOの初期化 ニューラルネットワーク構築(学習済みモデルがある場合はレストア) 行動履歴リスト(max=100)の初期化 while do for
n = 1 to 10 do /* 取り敢えず10回行動してみる */ 触覚センサの読み取り 試行のためのアクションを決める( ε-greedy法) 行動結果(状態,アクション,報酬) <- 試行を実施 行動結果を行動履歴リストに追加 end for for step = 1 to 100 do /* 100個の行動履歴を使って学習 */ 行動履歴リストからランダムに履歴を選択 履歴を使ってNNを学習 end for 学習済みモデルをファイル (json形式)に保存 end while
26.
学習テクニック ● ε-greedy法 ○ 行動を選択する時は,最も期待値が高いものを選択する(
greedy法) ○ ただこれだと,初期値や部分局所解にハマり学習が進まなくなる場合がある ○ ある定数(0<ε<1,一般的には0.3ぐらい)で,行動をランダムに選択する(つまり探索する)ことでよ り適切な解を探せるようにする ● Experience Replay ○ 行動履歴(状態,アクション,報酬)を保存しておき,学習時は履歴からランダムに選択する ○ 時系列の相関を排除することで学習を安定させる 26
27.
学習 ● しばらく触って学習させた ○ 触っている時,振動・LEDが光ったらびっくりして手を離すを繰り返す 27 しばらく学習した後の
Q(s,a) 分り易くQテーブルで表現す ると Q(s,a0 ) ※出力しない価値 Q(s,a1 ) ※振動・光る価値 S0 =[0,0] ※[触覚,出力] 0.18 0.11 S1 =[1,0] 0.09 0.79 S2 =[0,1] 0.23 0.02 S3 =[1,1] 0.12 0.41
28.
Demo デモします 28
29.
まとめと今後の課題 ● 単純な振る舞いを自動的に学ぶ人工生命っぽいものはできた(のかな?) ● 今後はこんなのを大量生産して「群」にしたらどう振る舞うだろう ○
EPS32は無線通信を使えるため,通信を使って個体ごとの相互作用を作って みる(アリのフェロモンを使ったコミュニケーションのような) ○ 記憶やNNの重みの共有,連結などを試してみたい ● リアルワールドに放置して学習させてみる ○ 最終的には,自律的に害虫を追い払うような人工昆虫(植物)を作りたい 29 群れを作る 人工生命(ALife)おもしろいよ! 池上教授曰く,“ポストAIは必ずあと数年の内 に来るので,その時にはALifeエンジン入の 機械が注目を浴びるようになると思う” (https://www.youtube.com/watch?v=s0NOH0WY8GQ) 今から勉強して,将来自律性をもつシステム を作れるようになろう! ミサカネットワーク
Download now