読者です 読者をやめる 読者になる 読者になる

鴨川にあこがれる日々

軽い技術っぽい記事かいてます

8月の振り返り

雑感 プログラミング イベント

技術的なこと

サーバ

気づいたらcronの実行にしか使っていなかったので,レンタルサーバを解約した.実は図書館系のデータ*1をずっと集めていたのだが,気づいたら解約日になっていたので闇に消えた.cronで実行していたコードは,PC起動時にスクリプト実行してslackやTwitterに通知させればいいかなと思ったので,時間ができたらやるかも.

Keras

翻訳が滞っていたので少しだけ更新した.
RNNを頑張る方がいるので,Bidirectionalとかが取り込まれててNLPの人間としては嬉しい.

Juliaを久しぶりに書いた

Pythonは遅い,Keras,scikit-learn,numpy/scipy,pandas,jupyterの内部で収まっていればいいが,自前でモデルを書いた場合に,データに対してスケーラブルでない.かといってCythonを書いてしまうと柔軟性が失われてしまう*2.今までだとJavaで書いていたけれど,やっぱりPythonくらい柔軟に拡張したくなる*3.というわけでほぼ1年ぶりにgadfly以外の用途でJuliaを書いた.当時はv0.3だったけど,今はv0.4になっていた.Juliaの速度は申し分ないし,PythonをCythonで書くよりも労力が少なかったので感動した.オブジェクト指向ではないので,そこに慣れてしまえば書きやすいと思う*4.ただし,言語としてまだ若いので研究室でおすすめはまだできないかなぁという感じもする.

イベント

河原林ERATOの感謝祭

Program | ERATO感謝祭 SeasonⅢ
トップ会議頑張って出そうと思いました(小並感).

分散表現の研究に興味があるので,AAAIの論文の論文のことをざっくり書くと,

  • embeddngsの性能をあげる方向性として言語資源(辞書)を使う
  • gloveの最適化の式に言語資源の情報を正則化として加える(類義語とか)
  • 学習データが少ない時に上がり幅が大きい
  • 言語資源の中では,類義語を使う場合がもっともよい
  • w2vでも可能だが,glovenのほうが良い (あとで思ったが,w2vの場合は正則化項といれるよりも正例や入力にいれるなどの使った方がよさそうな印象)

という感じでした.

合同ゼミ合宿

那須に行った.研究をどうしていくかでやや盛り上がったので,合同ゼミのページを作るなどしていた.github pagesはjekyll,git,github が使えればブログページが公開できるのだが,誰かひとりがずっと担当していると引き継ぎに失敗した場合作りなおしになりかねない.なので,できるだけ低コストでやりたいのだけれど,github pagesよりも楽に管理できる方法があれば知りたい...
那須は素晴らしいところで気分転換にもなったが,車がないと移動がしんどいところだったので,自動運転の時代が早く気てほしいなぁとか思っていた.

ちなみにこれです.

slis-ml.github.io

生活的なこと

研究科

研究科選びを失敗したなとか思って憂鬱になっていた.書きながら振り返ると別にTwitterに書いても講義はよくなるわけでもないので,黙って研究だけしていようと思うなどした*5.学部のころは授業アンケート*6にぶつけていたが,大学院ではそれがないため,講義担当の教員への直接的なフィードバックができない気がしている.

その他

「のぼる小寺さん」という漫画に感銘を受けたので友人たちを誘って駅前にあるボルダリングに行った.このスポーツが研究と似ているとは薄々思っていたが,ルールを聞いてみるとやっぱり似ていた(気がする).

ルールを説明しましょう.壁にホールド*7が埋め込まれています.これは全部使っていいわけではなくて,コースによって手で掴んでいいホールドが決められています.ただし,足はスタート位置が決められているだけなので,好きなところを踏んでよいです.コースごとにゴールとなるホールドが定められており,それを両手でつかむとクリアです.このため,登りながら次に使うホールドを決めていると疲れるため,登る前にどのような体運びでゴールを目指すかを考える必要があります*8.説明おわり.

ボルダリングは腕力がなくても足の可動域が広ければ楽な体勢がとれるので,そういったところで筋力をカバーできる気がした.
運動不足がたたり,1h体験コースだけで翌日は筋肉痛に襲われた.

*1:以前ブログにも出てきた図書館を含むTweetとNDLの全国書誌

*2:あれば別言語にしか見えない

*3:Java力が低いせいかもしれない

*4:これも自分のJulia力が低いので,誤解があるかもしれない

*5:エネルギ使うだけ無駄なので講義に使う労力と時間を最小化すればよい

*6:噂だと全体で3人くらいしか出さないらしい

*7:壁に埋め込まれただいたい単色の岩

*8:ある事柄を知りたいというゴールは1つであるがそのアプローチは様々である研究に似ているような...似てない?

7月の振り返り

雑感

月末はバタバタしそうなので,先に書いておきます.

技術的なこと

上旬に以前の環境が壊れた研究室のサーバーの再構築の手伝いをした.ユーザ作成,ライブラリ再インストールの作業がめんどくさいのだが,自動化ツールを身につけるほどの頻度でもないので,難しい.

同じゼミの人と「やっぱりKaggleしないとだめですよね」というような話になって,とりあえずMNISTを使った例題をCNNで解いた.雛形の賞金がもらえるタスクはAWS使わないと厳しい印象を持っているので挑戦しないつもり.日本でもいくつかKaggleの類似サイトがある.賞金はでないが,論文の共著者になれるというものがあり,それに5日間取り組んだ.1つ上の順位の人と大差が付いているが,そこそこの順位になっているのでこのまま進んで欲しい.自分はこの手のものに参加すると他のことが手につきにくくなるので,控えめに続けていきたい.

研究室でしばらくやっていなかった論文読み会を再開した.
wkblab.github.io
機械学習系に興味のある学生と教員から構成されるSlackを思いつきでつくったので,そこの人に参加を呼びかけたのだが,やっぱり英語論文だと難しいのか,時間の都合がつかないのかで人が集まらなかった.初回では自分はKDD2016のnode2vecを紹介した.
nzw0301.github.io

Twitterで話題になった論文をよく見たらTomas Mikolov氏が入っていたことにgoogle alertで気づいたので,急いで読んだ.
CNNで頑張るより3層のNNでも同じような精度出せるし,学習速いよというものであった.特殊なケースについてはモデルの再実装も行った.Kerasを使うとやっぱり速く作れる.
nzw0301.github.io

賞罰関係として,昨年の11月のWebDBForumの発表を情報処理学会のCS領域奨励賞に選んでいただいた.
2016年度受賞者-情報処理学会
大変ありがたい....

その他

先輩がチケットを余らせてしまったということで行きたかった凛として時雨のライブにいった.以前EGOISTのライブで

  • 聴衆がうるさい
  • 聴衆のペンライトが邪魔

とライブに向いてない人間であることがわかっていたのだが,今回はペンライトもないし,聴衆も静かで最高だった.アンコールがないのもかなりポイントが高い.また行くかもしれない.

B1の3月くらいから入っている図書館情報学チャンネルが400回記念放送ということで某所での放送に参加した.おそらく50回ぶりに出た気がする.

知人の就職した会社が主催でBotハッカソンを開催したので,発表を見に行った.PC操作になれていると現状の対話インターフェースはまだイライラするので,なかなか難しいとずっと思っていた.そういえばBotって何で流行ったんだろう.りんなあたり?

6月の振り返り

雑感

技術的なこと

月初めにKerasの日本語訳化がほぼ完了したとのことだったので,気になった翻訳にPR投げたり,本家に追従するPR投げるとかしていました.
Keras Documentation

「語彙統一したいです」みたいなissueを立てたはいいけど,そればかりやってると時間が溶けるので,しばらく抑えめにやろうと思います.

あとは,たまにKerasを使っててバグっぽいやつがあったので細かいPR投げてました.
最初は,手の出しようもない完成されたOSSであとは深いところを理解している人たちがPRを投げるものかと思っていましたが,ライブラリを使っていると意外と見つかることがわかりました.


イベント的なものとしては,オタク機械学習勉強会に参加しました.
otakuml.connpass.com

アニメはSFっぽいやつか暗い話を1クールに1つ見る程度なので,頻繁にスライドのネタで使われる「ご注文はうさぎですか?」とかが全然わからず,オタク的な内容がさっぱりでした*1

ちょうどRNNの言語モデルを組んでみたかったので,こんな発表をしました.

SCRNはMikolovらが提案しているモデル*2です.
SCRNの構造がシンプルなので実装が数時間でできたのと,LSTMよりも学習が速いので気に入っています.

研究的なこと

能力不足であんまり進んでいないです.
7月からはなんとか...

生活的なこと

インターンが結局決まっていない.

togetter.com

雑感

研究室の掃除があり,そこそこ快適な環境になりました.
全員分の椅子がない&全員座れるスペースがないのは相変わらずですが,自由座席なので,なんとかなってる感じがします.

*1:今期はカバネリだけ

*2:今年のICLRでその発展版が出てます.

私なりのDeep Learningに関する情報の集め方

deep learning プログラミング

はじめに

aonotas.hateblo.jp

に感化され,被りがないように書いてみました.
深層学習歴(?)は半年でして,研究では使ってないので深いことは書けませんが...
好きなフレームワークはKeras*1です.

本題

arxivfeedlyで購読

私は以下の3つを登録して,信号待ちの時間とか適当な隙間時間で眺めています.

  • cs.AI
  • cs.CL
  • stat.ML

hotなものはそれっぽいマークが付くのでオススメです.

ベースとなっているのはこの記事です.
d.hatena.ne.jp

Kerasをwatch

Kerasに限った話ではないですが,深層学習のフレームワークリポジトリ,新手法やアルゴリズムを実装してほしい/したというようなissueやPRがとびます.
それをwatchするとそれらの存在を知ることができますし,あわよくば実装方法などもわかります.
例えばNadamとか.

github.com

Google scholar

Google scholarはキーワードが入った論文を通知するだけでなく,
特定の論文を引用した論文や特定の著者が書いた論文を引用した論文についても通知されます.

去年は分散表現に関係する論文を追っていたので,主に以下の3名

  • Tomas Mikolov
  • Yoav Goldberg
  • Omer Levy

の論文(どれか一つでも)を引用した論文のアラートを登録してました.
ただし,読む癖をつけないとメールボックスに溜まっていきます...

以上です.

*1:日本語docsもあります

5月の振り返り

雑感 大学

技術的なこと

4月から深層学習のフレームワークであるkerasにはまり,片っ端から基礎的なニューラルネットの記述をしていたので,その続きをしていました.
そんなところ4月末くらいに機械学習勉強会に参加されている先生から「kerasのチュートリアルやってよ」みたいなことを頼まれたので引き受けて,それを作っていました.2週間くらいかかったと記憶しています.
github.com

あとkerasが流行ってほしいと思い,Qiitaとはてなブログにそれぞれ5記事,1記事を投稿しました.

生活的なこと

来年には就活があるので,夏のインターンシップに応募する時期になりました.
5月頭からぼちぼちと募集していました.

docs.google.com

雑感

大学入学前に地元の図書館で借り,その後も文庫も買って2回ほど読み直した本に「喜嶋先生の静かな世界」というものがあります.

主人公とその指導教官の自伝的小説になっていて,大学院生の生活がとても魅力的に感じられました.
現実の大学院もこんな感じだったらどんなに幸せかと思っていましたが,しかし現実は全くそんなことはありませんでした.(当然?)
高校生のHRのような研究に1mmも役に立たない講義に研究する時間を奪われています*1
6月が終われば必修講義がだいぶなくなるので,それまでの辛抱だと思ってやるしかありませんが.

*1:その他に教員の分野の国際会議を選んで読ませる講義がある,もちろんためになる講義もあるが多くはない

NNLMで城ヶ崎美嘉のセリフを学習してみた

deep learning NLP python プログラミング 機械学習 keras

はじめに

これに関係した記事になります.
nzw.hatenablog.jp



当時はnumpyを使ってNNを記述しましたが,ここ最近は遊びでchainerとかkerasなどのライブラリを使っています.
今回は思いつきでkerasでセリフの再現ができるが試してみました.

手前味噌で申し訳ないですが,関連する情報としては

github.com

  • nzwが書いたQiitaのkeras記事

qiita.com

あたりを参考にしてください.


入力の系列は思いつきでして,日本語は英語と違い明確な文の区切りがないため,形態素解析を行い単語に分割する必要があります.
そこで単に1文字単位で入力するとどうなるのかを試してみました.

NNLMはざっくりいうとニューラルネットワークを使って1つ前の単語系列を使って次にくる単語の予測(確率値を求める)を行うモデルです.

環境

本題

www18.atwiki.jp
から片っ端に城ヶ崎美嘉のセリフをとってきます.

とってきたデータは以下の様な感じです.

はじめまして★城ヶ崎美嘉だよー。アイドルだろうと何だろうと、どうせやるならオンリーワンよりナンバーワンになりたい!ってことで、一緒にトップアイドル、目指そうね!

いい話ですね.
まずこれを文字ごとに分割し,文末であることを明示するために末尾に <eos> を加えます.

は じ め ま し て ★ 城 ヶ 崎 美 嘉 だ よ ー ...

これを使って学習を行います.

最初は
"は"を入力として受け取って使って"じ"を出力する確率が高くなるようにNNを学習します.
次は
"は じ"を入力として受け取って使って"め"を,
"は じ め"を入力として受け取って使って"ま"を,
というふうに末尾まで行い,これを全セリフ218件を使って学習します.

その結果を使い,セリフの最初の適当な1文字をいれて,その次にどのような文字がくるのかを予測させます.
それを文の最後(<eos>)まで繰り返せばセリフが再現できるはずです.


コードは以下になります.


gistc5fcfa0b1c62590764d4097387e16604


だいじなのは

Epoch 1/1
7049/7049 [==============================] - 46s - loss: 5.1615    
0 プ ぎ カ ロ 、 ア い 、 ュ も 愛 ご な と ロ カ タ ? ー シ っ ん <eos>

の読み方で,
0というのが0スタートで学習した回数です.
1回につきすべてのセリフを使って学習をしています.
ギャル語みたいな文字列は,"プ"を入力として与え<eos>がでるまで予測を繰り返し行った結果です.
次にくる単語はその確率にしたがってサンプルをしています.

101回目までくると

100 プ ロ デ ュ ー サ ー 、 ア タ シ は 近 そ 見 か 車 い て て ゃ ね ★ <eos>

私たち"プロデューサー"という文字列を含んだ文らしきものができています.

1番最後は"プ"を入力としたときに次に来る確率が最も高い単語をつかいます.
予測した単語を含めた状態で,また最も高い単語をという風に<eos>がでるまで繰り返しています.

その結果

プ ロ デ ュ ー サ ー 、 ア タ シ の 飲 み か け し か な い け ど … コ レ 飲 む ?

完璧です!!!


以上です.

4月の振り返り

雑感

はじめに

技術的なことはqiitaかgithub.ioに記述するようになってしまい,以前ほどこちらにコンテンツをあげることが減りました.
その月にしたことを,振り返ってみようかと思います.

技術系のこと

keras

頭が悪いので,深層学習のフレームワークでchainerすら難しいです.
もうちょっと楽にかけるのを探してkerasを見つけたので,4日くらい触ってみました.

qiita.com
qiita.com

Deepなものをまだ書く機会がないので,MNIST+αや数層であればこれでいいかなと思っています.
層をメソッドで積んでいくのはかなり直感的で好きです.

ニューラルネットワーク

研究室の論文読み会でsequence to sequenceの紹介をしました.
speakerdeck.com

あと,今月から機械学習勉強会というのを立ち上げて隔週くらいで行うようになりました.
初回では自分が(やっと)CBoWの紹介をしました.
speakerdeck.com

雑感

4月なので大学院に入学したのですが,B4のときのように研究できるとかというと全くそうではなく,講義ばかりです.
つらいなぁとか思っています.
気づくとニューラルばかりやっているのでもう少しベイズや数学よりのことをしてみたいと思っています.