私なりの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:注:分散表現の獲得手法のサーベイではない

2015年の振り返り

忘年会シーズンですが,2015年忘れたくないので振り返りをします.

月ごとに振り返り

1月

12月に研究室に配属されて年明け

ずっと研究室にはいったら輪講をしたいと思っていたので,名著「言語処理のための機械学習入門」を週1章ペースで読んでた.

ダーツを買った(あんまりやってない)

2月

DocomoAPI使ったコンテストに研究室の同期4名と出ました.
開発期間は数ヶ月間設定されていたが,締め切りの前日から24hで開発.
Newsを🍣に見たてて回すアンドロイドアプリをつくった.

あとは,筑波大学図書館の新着図書が欲しかったのでクローラ書いてWebアプリをつくった.
春休み期間になったので,輪講がストップしたのでLDA関係の論文を読んだ.

なんか後半からやる気が無くなって鬱々としていた.

3月

今年が割とうまく行った理由がここにあるような気がしている.

上旬にCookpadと日経電子版のハッカソンに参加して,B3のときの論文のネタをほぼそのまま使った.
そしたら賞が取れた.
nzw.hatenablog.jp


Cookpadインターンに誘ってもらい,その末から10日間参加しました.
テーマを抽象的なものにしたのがわりとよかったのか頭をやたら使いました.
Cookpadインターンは楽しいです.

4月

B4になりました
M1の講義を先取りできるので,それをとりはじめた.
自分が受講した範囲では,大学院の講義も学類と大差がないなと思った.
スライドを使って発表させる講義がやたらあるのでその準備が結構大変.

グラフに興味があったので,SimRankをjuliaでつくってみてJuliaTokyo#3でLTした.

輪講PRMLを扱うようになって問題を解いてた.
数ヶ月間やりましたが,途中で挫折.

5月

PRMLを読んでた.

研究のテーマが決まらなかった.

6月

それっぽいテーマを決めて着手発表会に挑んだ.
着手発表では,卒研でなにをするのかを発表するだけなので問題設定とか手法が妥当かみたいなことを質疑で聞かれる気がします.
質疑がうまくいかなくても死ぬわけではないし,テーマは変えられるので適当にこなした.

7月

推薦の大学院入試が上旬にあった.
試験で課されるプレゼンでは着手のスライドが使えるのでほぼ流用.
落ちるわけがないと思っていたので控室では論文読んでた.

受験後に他大の院も考慮し始めた(やや遅かった).
首都大学東京を見学してみたが,とても良い環境だった.

学類の学生と数学勉強会を立ち上げた.
線型代数の基礎をやっています.

KLCのチューターをクビになった.(これはよかった)


指導教員に「論文を書きたい」と伝えたらWebDBForumをオススメされたので,実験やらサーベイをやりはじめた
なんとなく卒論とは違うテーマにした

8月

夏休み
学会の論文締め切りが8月末だったのでひたすら実験と執筆をしていた.
自分がこの結果では出せないなと認識していたが,指導教員の出せるといってくださったのでその感覚が違っていて,参考になった.

9月

WebDBForumで卒研が停滞していたのでそっちを勧めた.
この時期にサーベイをやっていた気がする.

ツイートがやたら消えてたので,あんまり中身の無い月だったと思う.

B2からやってたバイト先がゴニョゴニョして,事実上バイトがなくなった.

10月

卒研の中間発表があった.
スライドに例を載せなかったら質疑がでなくて悲しくなった.

輪講PRMLするのをやめて論文読み会にした.
おかげで12月の論文執筆の時期にはほとんどサーベイせずに済んだ.

あとEMNLP読み会に参加した.
説明がよくわからないと言われたので頑張ろうと思うなどした.
connpass.com

11月

WebDBForumがあった.
db-event.jpn.org
ポスターと口頭発表があってその準備でほぼ潰れた.
学会に参加したおかげで他大の院生や教員と知り合いが増えたので,(査読がある)会議には積極的に出していきたい.
優秀論文発表賞をいただけた.

深層学習勉強会を始めた.
これが思ってた以上に需要があったのか,結構な人が参加してくれている.
DLやってる研究室と一緒にやれているのがかなり大きいと思う.

12月

卒論提出の5日前に論文誌の締め切りがあり,卒論のテーマとは違っているので完全に並行作業をしつつ,卒論を書いていた.
卒論を書く書くいって仕上がったのが提出日の朝7時だった.

新しくバイトを始めた.(12月にはじめたけどなんとかなった)

その他

今年は,研究の仕方みたいなhow to系と森博嗣とSFと電子書籍のマンガを100冊くらい読んだ.
数学とか機械学習系の本もけっこう買ったんだけど読めてない.

飲酒をほぼしなくなったし,できるだけ遊びに行かないようにした.
お金の減り方がだいぶ変わったので,かなりいい習慣だと思っている.(とくに前者)

来年のこと

  • 大学院の講義で時間を取られて研究できないという話をきいているので,なんとかうまくこなす
  • わりと基礎がおざなりになっているので,数学と英語(?)をやる
  • できるだけ研究以外のことにかかわらない
  • 誤字がひどくって書き上げるのが早くないと,出せる状態になってないことがあるので,誤字を減らしたい

以上です.

大学院入ってないけど,大学院について

はじめに

おはようございます,klis advent calendar 2015の主催をしておりますnzwです.
この記事はその12月1日分です.

最初に説明するとこのカレンダーは,以下の2つを満たした有志の方によって行われています.

  • 記事中に"klis"を含む
  • 知識情報・図書館学類の関係者

空きがまだありますのでご興味のある方がぜひよろしくお願いいたします.
www.adventar.org

本題

貧乏神が!*1」について書こうかとも思ったのですが,少しまじめに大学院の話でもしようと思います.

春先,B4の私は進学するつもりしかなかったのですが,進路に関して3日くらい悩んだのでその話をします.


さて私の興味は機械学習自然言語処理,グラフあたりにあります.


いまいるklisの上の大学院:図書館情報学メディア研究科は,名前の通り(?)図書館情報学がわりとコアな研究科なので,科目にそういったものが多いです.機械学習や最適化に関する科目はたぶん2つくらいしかありませんでした.

講義科目を自分の関連分野で絞るとぎりぎり必修単位分に届く程度で選択肢がほぼありません.
興味のない単位に修士の時間を使うのはアホらしいと思っているので,これはマイナスです.


さらにシラバスを見ると学類で既に受講したような科目もあり,さきどり制度を使って大学院科目を受講していると「学生さんのバックグラウンドが多様である」という理由で学類でやったところから復習する科目がいくつかあり,私的には不満がありました.(講義の中で先生がおっしゃっていた)

というわけで自分の進学先としてこの研究科が最適であるかはかなり微妙でした.

加えて現在の研究室が2013年から学生を受け入れ始めており,Dの先輩がいらっしゃらないのでなかなか不安です.


たしかこのようなことを同研究科のD3の方に相談し*2,その夜に他大学の研究室を見学依頼のメールを出しました.

結局,1つの研究室を見て,現在の研究室にそのまま残る意思が強くなりました.
主な理由は先生との個別の打ち合わせがどの程度とれるかを重視していたためだったと記憶しています.*3

受講したい科目が少ない問題は,幸いなことに大学の制度で他研究科の科目を卒業に必要な単位のいくつかとして数えられるので研究に繋がりそうな科目はそっちで取ればいいと考え直しました.


というわけで,7月頭に図書館情報メディア研究科の推薦入試をちょちょっと受けて合格しました.
来年4月から図書館情報メディア研究科の博士前期課程の情報学プログラムというところに進学する予定です.
めでたしめでたし.

*1:最近揃えたマンガです amzn.to

*2:ドクターの方は偉大だ,仲良くしよう

*3:ちなみに研究室内の勉強会が盛んかどうかは全然気にしていなくて,自分で主催すればいいと思っているし,輪講もしかりだと思っている.研究室の人数が少なければ,分野が近い人たちを誘って巻き込めばいい.もちろん頭数そろえるには苦労はするけど.