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

鴨川にあこがれる日々

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

私なりの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で城ヶ崎美嘉のセリフを学習してみた

はじめに

これに関係した記事になります.
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のときのように研究できるとかというと全くそうではなく,講義ばかりです.
つらいなぁとか思っています.
気づくとニューラルばかりやっているのでもう少しベイズや数学よりのことをしてみたいと思っています.

word embeddingsの演算とデータセットについて知ってること

はじめに

自分が使った分だけですが,まとめました

評価の話

学習した分散表現の評価方法としてよく見るのは

  • word similarity
  • analogy

です*1

この2つであれば
omerlevy / hyperwords — Bitbucket
に評価値を計算するPythonスクリプトとデータセットが入ってますので便利です.

上を包含した評価方法のサーベイ論文がありますのでこちらを参考にするのが良いかと思います*2
Evaluation methods for unsupervised word embeddings
http://aclweb.org/anthology/D/D15/D15-1036.pdf

大雑把にまとめると上に加えて

  • 実タスクの特徴量としてすぐれているか
  • クラウドソーシングを使う

などの評価手法があります.

similarityについては,日本語のデータセットを作成した研究がありまして,データセットも公開されています.
github.com

analogyの演算方法

{ \displaystyle
king-man+woman=?
}

を例にあげます.

いわゆるword2vecの元論文では以下の{w}を探索します

{ \displaystyle
argmax_w cos(king-man+woman, w)
}

これだと一部の項に引っ張られてしまうことがあり,1つの項による影響を小さくするために{\log}をとるような演算に変えます.

{\epsilon} は分母が0になるのを避ける項です.(0.001とか)

{ \displaystyle
argmax_w \frac{cos(king, w)cos(woman, w)}{cos(man, w)+\epsilon}
}


前者を3codAdd,3codMulと呼んでいます.
詳しくは以下の論文
Linguistic Regularities in Sparse and Explicit Word Representations
https://www.cs.bgu.ac.il/~yoavg/publications/conll2014analogies.pdf

word2vecのanalogy.cでは3CosMulがありませんが,gensimと上であげたbitbucketには入ってます.
radimrehurek.com

以上です.

*1:word2vecの論文で使われてるやつ

*2:注:分散表現の獲得手法のサーベイではない

ブログが分裂していた話

はじめに

昨年の12月からqiitaにプログラミング関係の記事を書くようにしたので,このブログを書く機会が減りました*1.使い分けてるのでそのことについて書こうと思います.

一身上の都合によりQiitaの記事をgithub.ioに移行しました.

本題

qiita

コードが出てくる,かつ検索結果で似たようなものがヒットしなかったものだけ書いています.
記事の投稿がしやすいし,数式もかけるので便利です.

qiita.com

ちなみに情報を集める分にはほとんど参考にしません*2
ブックマークがたくさんついたらやっと読むくらいでしょうか.

イベントの参加ログとか他人の情報をまるまる載せてるだけの記事が頻繁に目につくため,まるで参考にならず,そこに自分の記事があることすら嫌になったので古い記事はすべて削除しました.

github.io

数式がメインの記事(LDAの式導出など)か,論文を読んだメモを書いています.
「hatenaでもできるよね」と思われそうですが,はてなブログでは以前まではちゃんと表示されていた式が,展開されず生texで表示されるようになったことがあって,引っ越しました*3
以後ほとんどこれに書こうと思います.


nzw0301.github.io

これ

今この記事があるブログです.
上記であげた以外なので,図書館のデータを分析したとか,DMMのデータ使って遊んだとかになるか,klis advent calendarみたいなポエムを書くかの2択くらいの用途しか残らなくなりました.

ちなみに

ページビューは
qiita > 鴨川にあこがれる日々 > 鴨川η
です.

*1:というか2016年は1回だけ

*2:down voteがないし,勉強会のメモや翻訳など玉石混淆であるため

*3:ブラウザのせい?どのみちjekyllなら見れるので...

難読ラノベタイトル

「主人公は弱いんだけど最強みたいなラノベがたくさんあるよね」という話を友達としていて,それらしいラノベを探していたら,タイトルがほとんど読めませんでした.
キラキラネームみたいですね...
気になったので30分くらいamazonで探しただけなので,網羅性は低いです.

間違いなく,Mecab+IPADICでは正しい読みはとれません...

初級

Q1. 魔法科高校の劣等生
Q2. 空戦魔導士候補生の教官

ヒント:カタカナ読みしません.


初級以外

ヒント:どこかしらでカタカナ読みがあります.

Q3. 不戦無敵の影殺師
Q4. 最弱無敗の神装機竜
Q5. 新米魔王の契約者
Q6. 迫害不屈の聖剣錬師
Q7. 落第騎士の英雄譚
Q8. 世界の終わりの世界録
Q9. 独立学園国家の召喚術科生
Q10. 忘却の軍神と装甲戦姫
Q11. 神装都市の無刃聖機士
Q12. 魔法医師の診療記録
Q13. 聖剣と魔杖の多重継承
Q14. 異界神姫との再契約
Q15. 逃奏劇リアクターズ
Q16. 魔剣の軍師と虹の兵団
Q17. 血風の英雄伝承
Q18. 魔導書姫は教えてくれない
Q19. 再び始まる反救世譚
Q20. 神殺しの英雄と七つの誓約
Q21. 大陸英雄戦記
Q22. 蒼鋼の冒涜者
Q23. いづれ神話の放課後戦争
Q24. 精霊使いの剣舞
Q25. 星刻の竜騎士
Q26. 聖剣使いの禁呪詠唱
Q27. 魔技科の剣士と召喚魔王
Q28. アルケミストの終焉創造術
Q29. 双剣使いの封呪結界
Q30. ロクでなし魔術講師と禁忌教典
Q31. まわせっ! 課金戦乙女のヒルデさん





答え(間違いがあったらすみません)

A1. 魔法科高校の劣等生 まほうかこうこうのれっとうせい
A2. 空戦魔導士候補生の教官 くうせんまどうしこうほせいのきょうかん
A3. 不戦無敵の影殺師(ゔぁーじんないふ)
A4. 最弱無敗の神装機竜(ばはむーと)
A5. 新米魔王の契約者(てすためんと)
A6. 迫害不屈の聖剣錬師(ぶれいどめいかー)
A7. 落第騎士の英雄譚(きゃばるりぃ)
A8. 世界の終わりの世界録(あんこーる)
A9. 独立学園国家の召喚術科生(ひろいっく・すれいやー)
A10. 忘却の軍神(かみ)と装甲戦姫(ぶりゅんひるで)
A11. 神装都市の無刃聖機士(おーでぃん)
A12. 魔法医師(めでぃさん・どぅ・まーじ)の診療記録
A13. 聖剣と魔杖の多重継承(でゅあるほるだー)
A14. 異界神姫との再契約(りゆにおん)
A15. 逃奏劇(えぐぞだす)リアクターズ
A16. 魔剣の軍師と虹の兵団(あるくす・れぎおん)
A17. 血風の英雄伝承(れじぇんず)
A18. 魔導書姫(ぐりもわーる)は教えてくれない
A19. 再び始まる反救世譚(えすかとら)
A20. 神殺しの英雄と七つの誓約(えるめんひるで)
A21. 大陸英雄戦記(あーす・すたーのべる)
A22. 蒼鋼の冒涜者(ぶるーすちーる・ぶらすふぇま)
A23. いづれ神話の放課後戦争(らぐなろく)
A24. 精霊使いの剣舞(ぶれいどだんす)
A25. 星刻の竜騎士(どらぐなー)
A26. 聖剣使いの禁呪詠唱(わーるどぶれいく)
A27. 魔技科の剣士と召喚魔王(ゔぁしれうす)
A28. アルケミストの終焉創造術(にるゔぁーな)
A29. 双剣使いの封呪結界(ろすとまぎか)
A30. ロクでなし魔術講師と禁忌教典(あかしっくれこーど)
A31. まわせっ! 課金戦乙女(ゔぁるきりー)のヒルデさん

おわりに

最初の2つ以外は読めませんでした...
あとこれ本屋さんとか図書館とかが管理するんですよね...大変そうです...