先日、本屋で以下の本を見つけて
ジャケ買いしてしまった。
というわけで、
現在自然言語処理を学習している。
…のだが、ただ勉強するだけでは
なかなか定着しづらい。
というわけで、それを忘れないように
ここで解説しようということで書き始めた。
で、なぜ自然言語処理なのに
機械学習なのか?ということだが、
それも併せて解説しよう。
なお、上にも書いたように、
今まさに勉強しているところだ。
そのため、理解不足だったり
誤りがある可能性も十分にある。
疑問に思ったら各自で調べて欲しい。
そして、間違いがあったら
ご指摘頂けると幸いだ。
自然言語処理
自然言語処理とは
まず、自然言語は、私たちが日常で使っている
日本語や英語などの言葉を指す。
コンピュータ上で使用されるプログラミング言語などは、
対比させて人工言語と呼んだりする。
で、自然言語処理とは、この自然言語を
コンピュータ上で処理してやろうぜという技術だ。
具体例としては、
- 文字を入力するときの変換
- 検索エンジン
- 自動翻訳
- 対話システム
などなど。
結構身近にも使われている技術だ。
自然言語処理の手法
大きく、二つのアプローチが取られている。
- 文法、構文などの規則から意味を推論する手法
- 統計的手法
一つ目は、私たちが英語を学習するときのように、
単語や文法をアルゴリズムとして実装、
それに読み込ませて中身を理解しようという手法だ。
だが、この方法は
知識を人の手により記述しなければならず、
またアルゴリズムもかなり大きい計算量が必要で、
限界があった。
それに対し、統計的手法では、
多量の参考データを使って、
確率的にどういう答えになりそうかというものを計算する。
現在では、こちらの統計的手法が主流だ。
統計的手法の利用方法
では、この統計をどのように使うか、
というお話になる。
ここで出てくるものの一つが、機械学習だ。
他にもあるが、参考にしている本が
これをメインに扱っているので、
ここでも機械学習の話を進めることにしよう。
機械学習
機械学習とは
機械に学習させる、というと
わけがわからないのでもう少し具体的に。
機械学習とは、たくさんの学習データというものを
入力することにより法則性を見つけ、
その法則によって問題を解決しよう、という技術だ。
例えば、画像データと、それが
人かどうかという組を入力して、
人が写っている画像を学習させる。
その後、別の画像を入力したときに、
学習した内容から人が写っているかを判断する、
といったようなものだ。
この機械学習は様々な種類があり、
以下のように分類されている。
- 機械学習
- 教師あり学習
- 分類
- 回帰
- 教師なし学習
- クラスタリング
- 次元削減
- 強化学習
- 深層学習
- 教師あり学習
分類、回帰やクラスタリング、次元削減は
その学習によって何を得るかが異なる。
教師あり学習
これは、学習時に入力データと、その正解となる
解答データを同時に入力し、学習させるもの。
これにより、別のデータを入力したときに、
どんな解答となるかを推測する。
答えとなるデータもある、
つまり教師あり、ということだ。
上にちらっと出した画像判定は
この教師あり学習と言えるだろう。
教師なし学習
こちらは、もう読んで字のごとくだ。
今度は正解となる解答データはなく、
純粋にデータのみを入力する。
そこから規則などを推測する、というものになる。
これだけだとちょっとイメージが湧きづらい。
具体的な例としてはクラスタリング、
これは入力をいくつかのグループに分類するものだ。
例えばアンケートの自由記述を
これによって処理したいとしよう。
文章の中身をいちいち全部読むのは手間がかかるので、
内容ごとに分類してしまおう。
そうすると、賛成意見、反対意見などで
まとまるよ、ということだ。
一つ注意だが、教師あり学習の画像判定も、
人が写っているかどうかという二つの分類を行っている。
これと何が違うかだが、
分類する対象を人の手によって指定しているか、
それともどう分類するかも機械に任せるか、
という違いだと解釈している。
強化学習
有名な実例があるタイプだ。
これは、出した結果に対してフィードバックを与える。
それによって、どのような結果を出せば
フィードバックが良くなるかを考え、
より良い出力を出そうとするのだ。
有名な実例というのが、囲碁を行うAlpha Goだ。
ちょっと前に、機械学習したコンピュータが
プロ棋士に勝ったとして話題になったと記憶している。
これは、対局内容を出力とし、その勝敗を
フィードバックとして受け取ることにより、
より良い打ち方を学習していった。
深層学習
深層学習とは、多層のニューラルネットワークを
用いて学習する方法、らしい。
らしい、というのは、まだあまり理解できていないのだ。
しかし、本ではこの概要が文章で書いてある程度だった。
なので、一通り終わったら
他の本などで触れてみようかと思っている。
おわりに
今回は、初回ということでとりあえず
自然言語処理と機械学習ってなんぞや
という部分を解説した。
一言ずつで表すと、
自然言語処理は人が使ってる言葉を
機械で扱おうぜという技術。
機械学習は具体的なデータから
法則性を見つけようぜという技術だ。
…ちょっと簡略化しすぎた気もするが、
私はこういうイメージでとらえている。
さて、次回は具体的な機械学習の内容に触れよう。
機械学習の中でも教師あり学習…
さらにその中の分類に焦点を当てる。
まだまだ学習中なので理解できるか不安もあるが、
なんとかやってみようと思う。
コメント