verilog書く人

自称ASIC設計者です。どなたかkaggle一緒に出ましょう。

ディープラーニングフレームワーク開発競争に見る、ライブラリ国際競争の本質

数ヶ月前、chainerがガラパゴスである、という文言をインターネットで見たchainer信者である私は衝撃だった。

だってchainerは公式ドキュメント全部英語じゃん!
githubで全世界に公開してるじゃん!
コードレビューだって英語でやってるじゃん!
英語のgoogle group作って質問答えてるじゃん!

 

続きを読む

chainerでVAT(準教師学習)

準教師学習とは一部のデータにのみ正解ラベルがつけられていて、残りはラベルがないという状態で、学習を行うことです。

ディープラーニングに必要な1クラスあたり数千のラベルを用意するのは大変なので、準教師学習の応用範囲は広いと考えています。

全てのデータセットにラベルがついてる場合でも準教師学習の手法を導入することによって性能が上がる場合があります。

 

今回はVAT(Virtual Adversarial Training)を使ってみます。

続きを読む

零細OSSでセカンドコントリビューターを得るには

一行のPRを送ってくれる人も非常にありがたいのだが、コードを読み込めて理解して機能提案してくれる有力コントリビューターがいるとプロジェクトにも技術者としての自分にも非常にいい影響がある。

 

例えば、

■コード、ドキュメントの量が増える。
二人で書くんだからもちろん増える。

■コード、ドキュメントの質が上がる。
二人で見るとお互いが気づかないところを直すので、穴が少ないコードに仕上がる。お互いの技術力向上にも繋がる。
英語ネイティブが直してくれるとほんとに助かる。

■モチベーションが上がる
外人は基本的にテンションが高い。お前のこの仕事すげえなといわれるとやる気が上がる。楽しい。

といったところだ。
ただ、有名OSSならともかく、零細OSSにとってはコントリビューター確保は簡単なことではない。

 

続きを読む

chainerで作ったDeep Learningモデルのハイパーパラメータチューニングを自動化してみる

ディープラーニングは各層の種類、活性化層の種類、オプティマイザの種類、オプティマイザのハイパーパラメータ、などなどたくさんあり、
手で最適化していくのは大変です。

そんなとき、

1. グリッドサーチ:パラメーターの候補の組み合わせパターンを全て調べる。
2. ランダマイズドサーチ:パラメーターの候補の組み合わせパターンを全て調べる。
3. その他賢いアルゴリズム系のサーチ:ベイジアン最適化、Tree-structured Parzen Estimator Approach(hyperopt)

といった、ものが使えます。

グリッドサーチはハイパーパラメータが少ない機械学習アルゴリズムでは有効ですが、ディープラーニングではあまりおすすめしません。実際には2.か3.を選ぶことになります。

賢い系のアルゴリズムはより有望そうなパラメータを試そうとしてくれます。

 

今回はhyperoptを使った例を書いてみます。

エッセンスはGpyopt(ベイジアン最適化)などほかのライブラリでも変わりません。

 

続きを読む

エイプリルフールなので、chainerのGUIクライアントを作った。

GitHub - fukatani/ChainerWing: GUI deep learning IDE based on chainer.

※一応動きます。

 

f:id:segafreder:20170401224342p:plainこんな感じ。

ぽちぽちやってるとニューラルネットが組みあがります。chainerベースです。

 

めちゃ機能が少ないですが、今後充実する予定。たぶん。

続きを読む

【PFIセミナーまとめ】chainerMNはなぜ速いのか、今後の提供は?

f:id:segafreder:20170203235939p:plain

 

先日このグラフで世界を驚かせたchainerMNの中身の話をchainerMNによる分散学習 - YouTubeでやっています。

chainerは分散ディープラーニングフレームワークとして現在世界最速だそうです。

視聴したのでメモ。おもしろかったです。

語り手はchainerMNの作者秋葉さん(iwiwi)
Top coderで四位、数々のプログラミングコンテストで受賞歴を持つすごい人。

 

動画を見る限り今までchainerで作っていたモデルをchainerMNに移し替えるのも簡単そうです。

続きを読む

numpyやchainerでのベクトル、行列、テンソルの積関連演算まとめ

年末年始にテンソル積と格闘しわけがわからなくなったのでメモ。

 

numpyのいわゆる積と呼ばれるAPIには、

numpy.multiply, numpy.dotnumpy.vdotnumpy.innernumpy.crossnumpy.outernumpy.matmulnumpy.tensordotnumpy.einsumとまあ結構たくさんあります

特にnumpyについてまとめますが、chainerやtensorflowで同名のAPIが存在する場合、numpyと同じインターフェイスで設計されていますのでほぼ同じ計算をします(はずです)。

 

続きを読む