0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

機械学習で賢いbotを作るには

Last updated at Posted at 2017-03-19

背景

機械学習の意味を知らなかったけど、ツイッターで見て興味がわいた。しかしインターネットを見てもよくわからなかった。本も高いものが多く、何を買ったらいいのかもよくわからなかった…ので知人の知人(詳しい)から、2時間で大体を教えてもらった。それを自分の理解を深めるためにもまとめようと思った。

目的

賢いbotを作る(siriみたいな/大好きなあのキャラクターにしゃべってほしい)

流れ

入力文章→(特徴抽出)→入力の特徴→(変換)→対応する特徴→(文章に変換)→出力文章

機械学習の流れの理解(自分の理解)

数値列に変換

どの部分?

入力文書→★(入力のID列)→(変換)→★(出力文書のID)→出力文書
★の部分

種類

(1)入力文書に一番近い”事前に登録しておいた文”のID列にする
(2)単語(正確には形態素)に分解して、単語毎のIDの列にする
(3)文字毎に分解して、文字のIDの列にする

(1)だと、
入力:おはよう/今日も/いい/天気/だね

データベース

1:おはよう
2:今日
3:良い
4:天気
入力したやつをid列に:1/2/3/4

ここらへんは、
http://developer.yahoo.co.jp/webapi/jlp/ma/v1/parse.html
https://labs.goo.ne.jp/api/jp/morphological-analysis/
を使って頑張れば実現できそう

1:おはよう
2:今日
3:も
4:良い
5:天気
6:だね←キャラクターの特徴を表すことができる要素になったりする

逆に出力の辞書は、ID-返信文章にすればいい。

ここまでできたところ

変換

どの部分?

[1,2,3,4,5,6] → (変換) → [1]
この部分

一般化

[1,2,3,4,5,6] =x
[1]=y
として、よく見るわかりやすい形の
y=f(x)を目指していく。

関数

とりあえず、一番単純に
f(x) = a * x
としておいたとき
yとf(x)が同じに近いほどよいから
y-f(x) = y - ( a * x )
を最小化(=0)する。

入力と出力のペアが一つだけだと
[1]-a*[1,2,3,4,5,6]=0
で解けるけど、xとyはとてもたくさん出てくるので…
y1 - f( x1 ) + y2 - f( x2 ) + y3 - f( x3 ) … を最小化する。

f(x)について

f (x) = a * xでは簡単すぎるので、実際はもっと複雑にする

私にはわからなかったこと

・f( x )の変換1つ分がニューラルネットワークでいう単層パーセプトロンと呼ばれるやつ
 →脳みその神経回路を計算機上で表現するときの、一つの単位がf( x )?
・この変換がたくさん重ねられたもの f1( f2( f3( x ) ) ) が多層パーセプトロンになってディープラーニング

次は、ディープラーニングについて理解したことを追記でまとめます。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?