SSブログ

何がわからないのかわかった気がする機械学習。 [プログラミング]

今から機械学習の中のディープラーニングをやろうとChainerを扱おうとしているけれども、Macに入れたり、Linuxに入れたり、Windowsに入れようとして苦戦したりしている。まぁインストールするまでが遠足です、的な終着点だけにはしたくないので、きちんと動かすところまでは行きたいと思う。

んでChainerですが、前にMNISTを使って数字判別できるようにしよう、としたのですが、ChainerのこうしきHPにQuick Startのところにガッツリと有ったりする。特に私家版のMNISTのディープラーニングを行わなくても、公式ページでやってるやん、というところである。


英語を大して読まなくても実行はできるのはわかったところで、何がわかってないのかがわかってないので、ググって色々見回ってみたりしたのでした。

http://qiita.com/IshitaTakeshi/items/4607d9f729babd273960

この文章はqiitaにしてはとても良い資料になった。Qiitaってかなり玉石混淆だし、しょうもない情報をオレがオレが的な奴がさえずってることも多いんだよね。


・ 「機械学習で何をしたいのか」を決めてほしい
やりたい事は自然言語の処理。まぁつまるところ自然な言語を話させたい。実用的なところまでやらせたい。りんなみたいな遊びなんだかガチなんだかよく分からない存在ってのも中途半端だし、RSSいろいろなところから取ってきて、いろいろ判断させて提供とか、要約とか、いろいろ考えてはいる。人工無脳の人工知能化をしたいというか。


・理論の完璧な理解は後回しでいい
・最初から理論を理解するのは無理
理論から実装へ、というのはまともなパスなんだけど、機械学習はハードルが高いので、順番は違っていてもいいよって書いてある。まぁ一応動かしてみて、ソース見て改造ってのがよくやることなので、順番的にはそのままでいい気はする。わりとソース見てから技術的裏付けをとったりするのは普通のことだから。

というか、現行動いているOSSでないと、ソースを手を入れようにも実証がないことには進みようがない。なのでスクラッチした賢い人に感謝するってことになるわけだ。一からスクラッチしてある程度まで持ってくのってしんどいしな。仕事以外でやりたくはない。


んで、機械学習がどれだけテクニカル的に難しいかという話。

 http://www.slideshare.net/ShinyaShimizu/ss-11623505

さっぱりわかりませんw。全体の概要はわかっても、各論としてはさっぱりの状態。やはり数学の知識が歪なまでに欠けているところに問題があるか。いや、中学の数学までは良かったんだが、高校数学が単位落とさない程度にしか勉強をしてないし、理系のくせに微分・積分を大学試験で使わなかったから、特に微積に関しては散々な状態だ。

ん〜パーセプトロンとサポートベクターマシンの違いすらわからないな。SVMのカーネル法のところなんて全然わからん。ベクターとかカーネルとかいう言葉からすると、GPGPUみたいに聞こえちゃうけど、たぶん直接は関係ない。

「無限次元のカーネルトリック(シュタゲのサブタイトルっぽい)」ってところで笑うくらいの知識しかない。まぁそんなもんだよなぁ。MP3の時にもフーリエ変換を勉強しようと思ったけど、ほぼ思っただけで何も頭の中に残っていないし。


・ある程度の理解でいいから、アルゴリズムを実装してみよう
んで問題になるのが、微積が必要になりそうなところ。なんにしても学習作業を数式にしないといけない。CNNとかだともうわかっていることだからいいのだけれど、

http://qiita.com/icoxfog417/items/5fd55fad152231d706c2

でも、これはここまで詳しく説明しているから分かることなんだけど、自分の欲しいものに当てはめるのはしんどそうだなと思ったり。


・入力データをそのまま学習できるわけではない
そこのところは、学習させる量と計算の速さとのバランスなのだろうと思う。できればあまり考えないでたくさんデータを食わせて完成させたいところだ。

用途にもよるのだろうけどCUDAとかのGPGPUを使わないとかなりきついのだろうなと。それもファンレスとかだとパフォーマンスでないから家にある古いのではダメだな。まぁデータ転送のほうがボトルネックになっていたわけだけれども…。


MacにChainerを入れたはいいものの、持っているMacBookProがAMDのRadeonだということが判明し、NVIDIAなCUDAを使えないことがわかった。なのであまり重いタスクは実行できない。どこかにGeForceのカード入れて専用機を作ろうかなぁ。前のOpenCLとかよりかはマシになっているだろうし、何にしても自分が描いたものを使わず実績のあるものを使えるというのはいいものだ。お気軽お手軽がモットーなもので。

どうでもいいけどOpenCLとかAppleの妄想でしかなかったよな。まぁGPGPU自体扱いにくいものではあるんだけど、CPUの隣についている時代だし、メモリも共有している時代だし、いろいろなんとかなりそうなもんだけどね。最近はどうなったのかな~。

コメント(0) 
共通テーマ:パソコン・インターネット

コメント 0