おおまかな内容
GitHubにアカウントを取得し、当ブログで実験している最新の自己符号化器(AutoEncoder)のソースコード(Pythonで実装)をアップしました。今後は皆さまとおなじようにGitHubでソースを管理していきます。赤面するような継ぎはぎプログラムではありますが、実験用途なのでご容赦ください。
プログラムの特徴
・CPUだけでもそこそこ動作する。
・深層学習フレームワークを使っていないので、いろんな部分に手を入れて各種実験や改造ができる。
・ボクがわかるようなソースをもとにしているので、比較的わかりやすく、挙動にくせがない。(主観はいってます。実験の感想でもあります。)
・実験結果を要約したレポート出力機能を作った。
・計算終了後、実験結果を保存しており、あとからレポートのみ作成できる。
・レポート部分はちゃんとジブンで実装しました!
おさらい
ボクは機械学習や人工知能やUFOにとっても興味があります。いろいろなディープラーニングのフレームワークがあり、いくつかインストールして実行してみました。とても興味深く、楽しいのですが、フレームワークである故に中で何をしているかまったくわからない部分があります。魔法のようにすら思えました。たぶん理論を理解していれば気にならないようなことがとっても気になり、フレームワークによらないニューラルネットのプログラムでいろいろ試したいと考えました。
幸い、自己符号化器(AutoEncoder)のプログラムはフレームワークをつかわないチュートリアルやいろいろなサイトの説明、実装の公開などがあり、何をしているかわかりそうな部分を切り貼りして作成しました。(「実装」というのはおこがましく、切り貼りなので、「フル」スクラッチではないですが、コアな部分はとてもシンプルなのでジブンでソースを修正していけます。)そのあと、実験のプログラムの表示方法を工夫して、レポートプログラムを作成しました。これはボクのオリジナルで、こちらのほうが(ボクがジブンでつくったので)とっても時間がかかりました。
また、実精度向上よりも、機能理解・実験を主体としたかったので、できる範囲で高速化(精度を犠牲)を行いました。それによりMNISTであればなんとかフレームワークやGPUにたよらなくても実験上支障のないものになりました。
プログラムの不透明な部分がどこにもないので、実験や改造がとてもやりやすいです。
CIFAR-10とかもやりたくてたまりませんが、ボクのマシンではさすがに資源不足なので、入出力を「音系」にして「自己符号化器」の実験を継続しています。(そして本題でないところでつまづき中)
ソースプログラムについて
にあります。
説明などをまだアップしていません。順次アップする予定です。
リファクタリングしてもっと効率よくシンプルにしていくかもしれません。
「GitHubにあげるなら」、と意味もなく無理してコメントを英語にしました。
(追記)説明をアップロードしました。ほぼ準備(その4)の内容です。
ボク何年も英語勉強してるよね?
ほぼ遊びごころで英語に挑戦しましたが、あまりに英語がわからないので落ち込みました。翻訳ソフトのだした翻訳がよいか悪いかすらわかりません。地道に勉強します。
(追記)地道なのはボクの最も苦手なことなので、楽してボクの英語を向上させるプロジェクトを立ち上げようと思います。(いつもの単なる思い付きですが)題して「Please teah me Ellen! Project」です。Ellen Baker 先生がやさしくボクに教えてくれるよう、「Ellen先生を」プログラムします。
((冷静になったボクが再追記)勢いにもほどがある)
グラフィックにも凝りたいので、イラストも勉強します。
((冷静になったボクが再追記)そっちかぁ~)