ディープラーニング方面を中心に、人工知能まわりの個人的な勉強用メモ
用語メモ
- AGI (Artificial General Intelligence)
- 汎用人工知能。今のディープラーニングでうまくできているのは何かに特化した人工知能。対して、人間のように色々なことを自在に学んで思考することができる人工知能のこと
脳科学方面
- neuron(ニューロン)
- 神経細胞のこと。人間の脳は1000億くらいのニューロンで成り立っているらしい。
- synapse(シナプス)
- 神経細胞において、神経細胞間での情報を受け渡しを担う部分。細胞内は電気で情報が伝わり、シナプスではそれが神経伝達物質の受け渡しという形に変換される。
機械学習方面
- ML/Machine Learning(機械学習)
- ディープラーニングに限らず、機械に何かを学習させて活用すること
- NN/Neural Network
- 人間の神経系の働きをモデルにして考案された、データ処理のアルゴリズム的なもの
- classification/分類
- DNNができることは要するに「分類する」ということで、例えば手書きのアルファベットの文字が「a-z」のどれかを分類したり、流れてきた
- Deep Learning/ディープラーニング/深層学習
- 多階層のニューラルネットワーク(ディープニューラルネットワーク)を使った機械学習
使われる関数など
- DNN/Deep Neural Network
- ニューラルネットワークを複数階層重ねて、より脳に近い形で処理させる手法。
- RNN/Recurrent Neural Network
- 一つ前に処理したデータを使って計算するNeural Network。音声やテキスト、映像認識など、前後関係が重要な意味を持つデータの処理をする時に使われる
- LSTM/Long short-term memory
- RNNの一種で、RNNだと前の部分が長い場合にうまくいかないという問題を解消したもの。参考:http://qiita.com/t_Signull/items/21b82be280b46f467d1b
- CNN/Convolutional Neural Network
- 画像などの処理で使う
- 活性化関数
- ニューロンは、複数のニューロンからの電気信号を受取り、その合計によって次のニューロンに信号を送るか/どう送るかが決まる。その仕組みを関数化したものの総称。色んな関数が提案されている。
- ReLU/Rectified Linear Unit(ランプ関数)
- 活性化関数の一つで、入力が0以下なら0、0以上なら入力値を返すような関数。\(f(x)=max(0,x)\)
単純な仕組みながら実際に使うと結構よい結果になる、らしい
- softmax関数
- DNNで出力される最終的な結果は、何かしらの数字の羅列になるのだが、その結果を処理しやすいように全ての数字の合計が1になる(=それぞれの出力の数字がパーセンテージになる)ようにする関数。
- maxout関数
- DNNの処理結果は、確率として表されることになるので、そのうち一番確率の高いものを1としてそれ以外を全部0にする関数
機械学習関連ツール/ライブラリ
- Theano
- 多次元配列の計算など、高度な計算をGPUなども使って効率よく計算するライブラリ
- TensorFlow
- Googleのディープラーニング/機械学習ライブラリ
- Chainer
- 国産のディープラーニング/機械学習ライブラリ
- Keras
- TensorFlowやTheranoのラッパ。様々なアルゴリズムを使ったニューラルネットワークの処理を簡単に書ける
ディープラーニングでやること
- ディープラーニングで解決したい問題をはっきりさせる
- その問題を、プログラム処理できる形にモデリングし、どのアルゴリズムをどう組み合わせるかを検討・実装する
- 大量のデータを用意
- データを処理してみて、望ましい結果かどうか検証する→望ましい結果にならなかったら変数を調整して再挑戦する
- ↑をひたすら繰り返して調整していく
4、5のあたりはフレームワーク側である程度面倒見てくれるので、一番重要なのは2のところになるのかな、という印象。