![]() |
2017卒論テーマへの助言http://pepper.is.sci.toho-u.ac.jp/pepper/index.php?2017%C2%B4%CF%C0%A5%C6%A1%BC%A5%DE%A4%D8%A4%CE%BD%F5%B8%C0 |
![]() |
昨年10月の段階で、2017年度卒論のテーマ候補 にテーマのアイデアを提示しています。これらと重複する部分がありますが、今4月の時点でもう少し具体的にリストアップしたのが、以下のリストです。
word2vecは「語の意味をN(=たとえば100)次元のベクトルで表す」ということになっているが、その性質は学習で得たものなので、分からない点が多い。原論文では距離と加法性が論じられている。
意味が近い語は距離が近い(らしい)。逆も真らしい。
類似度similarityとしてベクトル間距離(角度=コサイン距離)を考えることができる(ある程度当たっている)
同じ形容で程度の異なる語は、ベクトル空間上でほぼ直線に並ぶ。もしくは、大と小があるとき中は両者の内分点になっている
また、以前の修論で1つの語に複数の意味があるときには悩ましいことが分かっている。(知久氏の修論)
複数の意味があるとき、語ベクトルとしては1つにむりやりまとめてしまうのだが、周辺語のベクトル値(の平均)を見ると2つ以上の山(クラスタ)に分かれていることがある。但し「複数の意味がある」の状況に依存し、明瞭に2つの意味がある場合や比喩の場合は分かれるが、類似の意味・包含の意味の場合は明瞭ではない
そのほかの性質を考えることができるか? 思いついたものを試してみる。 出発点のアイデアとしては、
語の間の距離を使って、語がどういう配置になっているかを見る。意味のクラスタができるのか? どういう切り口(=ベクトル空間内の面=射影)で切ることになるのか? その切り方(=1段上の抽象概念になる?)が、場合によって共通するのか? 加法性と距離を仮定したとして、定数倍に意味があるのか (内分点に意味があることは原論文で言及されている)
word2vecについては、過去の論文を見たり、絵で理解するWord2vecの仕組み などのHPを見たりして調べてください。
元論文はEfficient Estimation of Word Representations in Vector Spaceです。
単語間の距離に関する性質の分析については、
ノート/テキストマイニング/gensim-word2vecでベクトル空間を試す
ノート/テキストマイニング/gensim-word2vecでベクトル空間を試す(2)
ノート/テキストマイニング/gensim-word2vecでベクトル空間を試す(3)
ノート/テキストマイニング/gensim-word2vecでベクトル空間を試す(4)
にいくつか試した例があります。
語が構造を持って並べられている「文」の意味を、word2vecと同様のベクトル表現に作る。 もっとも単純には、「主要な語」を選んで、それの和・加法平均を取ることが考えられるが、語の役割に応じた「味」を追加することも考えられる。 昨年度の修論では、単語ベクトルを文構造に従って合成する手法を試みている。結果としては、合成はできるが評価結果はあまりよくなかった。問題点として
たとえば、1つの単語のベクトルと比較して、近い単語を探す、というのはどうか? 見かけの結果は「文を1語で表す」という問題になる。
根本氏が参照した中に、このタイプがあったはず。RNNで分析する例はたくさんあるが、大抵は翻訳する。ベクトルとして出力する例はあまり見かけない。
- どうやって意味抽出ができたと評価するか? 用途として「要約」を考えられるか?
画像認識(分類)を学習した結果の行列、特に最終段の行列は、それぞれの出力に対してどういう入力パターンなら起こるのかを、覗き見せてくれているように思われる。
Deep Learning Tutorialの例題をやってみたのdenoising AutoEncoderのフィルタ画像
Deep Learning Tutorialの例題をやってみた(3)のRestricted Boltzmann Machineのフィルタ画像
まず、上記の「最終段行列が云々」がどの程度正しいのか、簡単な実データで試してみる。(原理的には全く正しくないのだが、convolution+poolingのようなローカルな結びつきを使っていると、どうも成り立ってしまいそうな気配がある。) 本格的な学習データ(テストデータとして提供されているもの)を使って、同じ議論が成り立っているか見てみる。
また、もし考えることができれば、RNNのようなタイプの行列についても同じ議論ができるかどうか、検討してみたら面白かろう。
2015年ぐらいまでで、基本的な画像認識(画像の判別)はかなりの角度で出来るようになっている。(ILSVRC、 ILSVRC2012 results、CIFER-10) それ以降は、さらに細かい区別(たとえば犬種の区別とか)が試みられ(ImageNet、Googleの機械学習フレームワーク「TensorFlow」でImageNetの学習データを使った画像認識を試してみた - TensorFlowのインストールから画像認識まで)、これも成功していると言えるだろう。
ここで提案する課題は、形にまたがるような、つまり機械的に形を見分けるのではなくて、共通する性質を見出すような、分類・判別を焼てみたらどうだろうか。といっても、笑顔の判別は既にカメラで実用化されるほどに実現している(口角、目などで判定するらしい。顔の検出・表情の認識技術、デジカメが笑顔を認識できるワケ、[[高速・高精度を両立する 顔検出技術:https://www.toshiba.co.jp/tech/review/2006/07/61_07pdf/rd01.pdf]])。もっと学習らしいものがよかろう。
例として、顔による子供の判別に挑戦してみたらどうか。人の顔を見た時に(たいていの場合)子供か大人か一見して分かる。イヌを見た時にも子犬か成犬かが分かる。なぜ分かるのかを、普通ならば技術者が考え付く特徴量(目の大きさや位置などだろうが)で統計し、分離できるかどうかを見るのだが、(特徴をあらかじめ指定しない)学習による画像認識で挑戦するとどうなるか? もしかすると、種によらず判定できるようになるかもしれない。
しばらく前に、Enc-Decモデルを使ってチャットボットを作る話題が出回った。元論文はBuilding End-To-End Dialogue Systems Using Generative Hierarchical Neural Network Modelsがある。
「やってみた」っぽいレポートとしては
このテーマの問題点は、1つには、学習データ(コーパス)が小さいことであり、おそらくはかなり網羅的な大規模な対話データがないとおかしな答えを返す可能性が高い。何らかの工夫が欲しい。もし教師無し学習もしくはセミ教師あり学習で済ませられる手があれば(VAEなどのアイデアはありそう)、スパッと超えられるかもしれない。
また、長文・範囲拡大へのチャレンジとしては、最近の論文(2017)に
というのがあったので、検討してみてもいいかも知れない。
画像でDCGAN風もいいけれど、同じような技術を何か別のものに使って見られないか? と言っても、すでにいろいろとされている。たとえば画像でイラストを描く、ゴッホ風にする、文章で有名作家風にする、など。この延長で、アプリケーションを考えることはできそうだ。
今手が出ていないのが、音声だろう(「しゃべりをXX風にしてみた」とか)と思うが、結構(道具的に)難しそう。
言語系のテーマを探すなら、たとえば3月に行われた言語処理学会の2017年次大会の発表論文はどうだろう?
教師データは、データにあらかじめ「答」を対応させておく必要があり、作成に非常に手間がかかる。元データをぼやかして見かけの数を増やすなどの工夫もあるが、根本的には教師無し、もしくは「セミ教師あり」がうれしい。いくつかの手法が提案されているので、試してみることができるだろう。 ただし、面白いテーマにするには、うまい応用を考えなければならないのが、障壁である。
Variational AutoEncoder
Ladder Network