mitolab's diary

東南アジアで頑張って生きてる人のブログ

『畳み込みニューラルネットワークによるテキスト分類を TensorFlow で実装する · けんごのお屋敷』を理解するための前知識

ちょっと機械学習してみよう、って思って勉強してたら自分がいまどこに居るのかわかりかねてきたので(汗)、頭の整理のためにこれまでの学習の軌跡をまとめてみます。実際には掲題の記事を理解するためのリンク集みたくなりましたので予めご了承ください。

目標

自然言語における5W1H(誰が、いつ、どこで、何を、なぜ、どのように)を、機械学習を用いて分類する。

上記はmecab-pythonだけで出来るんや...(しかもオフラインで!スゲェ!)ということで、、マヌケながら実際はこの前段(or後段)で文章のカテゴリ分類をする必要がありそうなので、その部分で機械学習を取り入れることを目標とします。

動機

とあるアプリにそういう機能をつけたく。

筆者の数学的知識

数学は高校2年まで。偏微分や行列などは独学で学び、わからなければ都度調べる形。

機械学習って?

機械学習(きかいがくしゅう、英: machine learning)とは、人工知能における研究課題の一つで、人間が自然に行っている学習能力と同様の機能をコンピュータで実現しようとする技術・手法のことである。

機械学習の目的は、訓練データから学んだ「既知」の特徴に基づく予測である。

via 機械学習 - Wikipedia

目標達成のためのマイルストーン

TensorFlowを使えばなんとかなるんじゃね?という安易な考えからスタート。「TensorFlow 自然言語処理」でググってよさげだなと思ったサイトが以下。まずはこの記事の理解のために学習する方針とした。

畳み込みニューラルネットワークによるテキスト分類を TensorFlow で実装する · けんごのお屋敷

道筋

上記記事中に、対象とする読者としてこう書いてあった:

ので、10年も前になぜか購入していた以下の本を読んでニューラルネットワークについてまずは復習。

学習とニューラルネットワーク (電子情報通信工学シリーズ)

中古価格
¥1,543から
(2016/9/4 13:24時点)

基本的なニューラルネットワークの考え方、勾配法、誤差逆伝播法(バックプロパゲーション法)、シグモイド関数などの理解に役立った。7章の途中くらいからボルツマンマシンの話になり、めんどくさそうだなと思って読んでない。それでも、この本を読んでから上記WEB記事を見ると理解度は前よりは上がった。それでもわからない単語が出てきたので都度調べた(以下)。

畳み込みニューラルネットワーク(CNN)

自然言語処理における畳み込みニューラルネットワークを理解する · けんごのお屋敷

画像認識における例から、それを自然言語処理(NLP)にどう適用するか、の説明がなされていてイメージしやすかった。

word2vec

これについてはなんとなくイメージはつかめる程度。以下で理解しようと試み中。

Word2Vec のニューラルネットワーク学習過程を理解する · けんごのお屋敷

Vector Representations of Words

enakai00.hatenablog.com

qiita.com

qiita.com

MNIST For ML Beginners

neuralnet.hatenablog.jp

MNIST For ML Beginnersで実行していることは何なのか、softmaxはシグモイド関数の多変量版だとかのくだりが非常に理解しやすかった。また、関連する交差エントロピーについても以下の記事で理解が進んだ。

neuralnet.hatenablog.jp

過学習

ここがよさ気だけどまだ読んでない。

tjo.hatenablog.com

活性化関数

活性化関数 - Wikipedia

ということで

今後も理解を深めつついい加減コードを書いていけるようにしないと。