LUT-Networkの最新資料更新
FPGAXでお話のお時間を頂いて資料を作ってからある程度開発が進展してきました。
Twitter上中心に、多くの方からご支援いただけたことをまことに感謝しております。
特に marsee101さんには、FPGAの部屋にてBinaryBrainの記事を記載いただきました。この場をお借りして厚く御礼申し上げます。
さて、肝心の BinaryBrain Version3 ですがGPGPU(CUDA)に対応したことで計算速度が増加したのもありますが、前回書いた確率的LUTが極めて効率的に動き始めたというのが、もっとも大きな成果かと思います。
このようなオリジナルの素子の実験がやりやすくなったこともVer3の改善点です。
更新版の資料を
https://www.slideshare.net/ryuz88/lutnetwork-revision2
にアップロードいたしました。
また、今回はTOEIC300点台の私が、無謀にもgoogle翻訳頼みで英語版を作成するという暴挙にも出ております。(^^;
今回の更新は、アルゴリズムレベルというか、ニューロン(パーセプトロン)のモデル自体を生物の脳の模倣から電脳(電子計算機)の模倣にシフトしたという点で、ディープラーニングのあり方にもっと根本的な議論を投げかけることが出来たのでは無いかと思っています。
これが凄いことなのかどうかは私もAI分野の知識が浅いので測りかねていますので、有識者のご意見をお待ちする次第です。
いずれにせよ、LUTを使ったリアルタイム機械学習認識が高速高精度に行える道がだいぶ開けてきたのはそのとおりなので、新しい計算機の応用の道が増えれば嬉しくは思います。
LUT-NetworkはもちろんFPGA用なのですが、例えば6入力LUTの64bitテーブルは64bitCPU(ARMとか)のint型にパッキングできますし、4入力(16bit)なら16bitCPUでも1命令でテーブル引きできます。
ARMのNEONなどでさらに並列化も出来るかもしれず、組み込みAI分野にもっと手広く応用できる可能性も感じております。
これらは、TensorFlowなどの既存のDLのプラットフォームを使って、その範囲で試行錯誤していたのではたどり着けなかった成果かとは思っているので、最終形が仮にTensorFlowで実現可能であったとしても、BinaryBrain作ってよかったなと思っている次第です。
まだまだ、実用的なネットのインプリが出来ていないという点で先は長いですし、価値のあるものになるかは未知数なのですが、ちょっとした思い付きからここまで来れたのは本当に多くの方に支えられてのことだなと思います。
引き続き頑張りたいと思います。
<追記>
海外の方で同じようなアイデアを思いついた方々が出始めたようです。
LUTNet: Rethinking Inference in FPGA Soft Logic
教えてくださった方々有難うございます。
マイナーな分野なんで、いろいろ心配だったのですが、同じようなことを考える人が居るのは嬉しいことです。
FPGA特化なので人口少ないですが、AIの主戦場分野は本当に切磋琢磨の世界なのだろうなと思います。
<さらに追記>
FaceBookで「Activation無しで線形性が出せるのか?」という話が少し盛り上がったので転記しておきます。
もともと隣の入力に逆伝播している時点で線形性のある式ではなくなっているとは思っていますが、私の考えとして、特に2入力LUTの場合、「AND/OR/NOR/XOR/etc.. ないろんなゲートが確率的に重なり合って存在している状態」を想像してもらうと良いんじゃないかなと考えました。
ゲートごとにも距離があるので、答えをテーブルで数値に置き換えて、最適にするために選択するゲートの確率比率が連続的に変動していくと。で、それを6bitテーブルなどに拡張していってもちゃんと機能しているということです。
もともとボルツマンマシンのモデル自体確率モデルですし、そこからやり直したほうがいいのかもしれません。
今はまだ、「テーブルを確率変数に置き換えて立式したもので学習に成功した」という結果論でとまっているのでまだまだこれからですね。
今のAIは「説明できないけどうまく行っている」は沢山あるので、順番が逆になる(理論が後から着いてくる)のはそれほどおかしなことでもないのかもしれません。
« 祝! LUT-NetworkのLUTモデルの逆伝播学習動作 | トップページ | パーセプトロンに代わる素子の可能性について »
「FPGA」カテゴリの記事
- LUT-Networkの蒸留とMobileNet風構成とセマンティックセグメンテーション(2020.03.09)
- LUT-Networkの蒸留(Distillation)について(2019.12.29)
- FPGAでのDNN(Deep Neural Network)の整理(LUT-Netまとめ)(2019.12.15)
- LUT-NetのFPGAリソースについて(2019.12.08)
- MNIST認識のリアルタイム動作環境更新(2019.09.02)
「Deep Learning」カテゴリの記事
- Deep Learning の開発フロー(2020.03.23)
- LUT-Networkの蒸留とMobileNet風構成とセマンティックセグメンテーション(2020.03.09)
- LUT-Networkの蒸留(Distillation)について(2019.12.29)
- FPGAでのDNN(Deep Neural Network)の整理(LUT-Netまとめ)(2019.12.15)
- LUT-NetのFPGAリソースについて(2019.12.08)
この記事へのコメントは終了しました。
コメント