#人工知能 関連用語メモ version 10

2016/04/10 22:30 by zk33 zk33
  :追加された部分   :削除された部分
(差分が大きい場合、文字単位では表示しません)
#ディープラーニング 関連用語メモ #人工知能
ディープラーニング方面を中心に、人工知能まわりの勉強用メモ
ディープラーニング方面を中心に、人工知能まわりの個人的な勉強用メモ

# やることとしては要するに
# 用語メモ

1. ディープラーニングで解決したい問題をはっきりさせる
1. その問題を、モデリングする
1. 大量のデータを用意
1. データを処理してみて、望ましい結果かどうか検証する→望ましい結果にならなかったら変数を調整して再挑戦する
1. ↑をひたすら繰り返して調整
## 脳科学方面

4、5のあたりはTensor FlowやChainerがある程度面倒見てくれるので、一番重要なのは2のところになるのかな。

# 用語メモ

neuron(ニューロン)
: 神経細胞のこと。脳は1000億くらいのニューロンで成り立っているらしい。
: 神経細胞のこと。人間の脳は1000億くらいのニューロンで成り立っているらしい。

synapse(シナプス)
: 神経細胞において、神経細胞間での情報を受け渡しを担う部分。細胞内は電気で情報が伝わり、シナプスではそれが神経伝達物質の受け渡しという形に変換される。

----
## 機械学習方面

ML/Machine Learning(機械学習)
: ディープラーニングに限らず、機械に何かを学習させて活用すること

NN/Neural Network
: 人間の神経系の働きをモデルにして考案された、データ処理のアルゴリズム的なもの


classification/分類
: DNNができることは要するに「分類する」ということで、例えば手書きのアルファベットの文字が「a-z」のどれかを分類したり、流れてきた

Deep Learning/ディープラーニング/深層学習
: 多階層のニューラルネットワーク(ディープニューラルネットワーク)を使った機械学習

# Tool
### 使われる関数など

[TensorFlow](https://www.tensorflow.org/)
: Googleのライブラリ

[Chainer](http://chainer.org/)
: 国産ライブラリ

# 使われる関数など

以下は各フレームワーク側で用意されてそうなので、用語とその意味/役割、どういうパラメータがあるのかを把握しとけばよさそう

DNN/Deep Neural Network
: ニューラルネットワークを複数階層重ねて、より脳に近い形で処理させる手法。

RNN/Recurrent Neural Network
: 一つ前に処理したデータを使って計算する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になる(=それぞれの数字がパーセンテージになる)ようにする関数。
: DNNで出力される最終的な結果は、何かしらの数字の羅列になるのだが、その結果を処理しやすいように全ての数字の合計が1になる(=それぞれの出力の数字がパーセンテージになる)ようにする関数。

maxout関数
: DNNの処理結果は、確率として表されることになるので、そのうち一番確率の高いものを1としてそれ以外を全部0にする関数

## 機械学習関連ツール/ライブラリ

[Theano](http://www.deeplearning.net/software/theano/)
: 多次元配列の計算など、高度な計算をGPUなども使って効率よく計算するライブラリ

[TensorFlow](https://www.tensorflow.org/)
: Googleのディープラーニング/機械学習ライブラリ

[Chainer](http://chainer.org/)
: 国産のディープラーニング/機械学習ライブラリ

[Keras](http://keras.io/)
: TensorFlowやTheranoのラッパ。様々なアルゴリズムを使ったニューラルネットワークの処理を簡単に書ける

# ディープラーニングでやること

1. ディープラーニングで解決したい問題をはっきりさせる
1. その問題を、プログラム処理できる形にモデリングし、どのアルゴリズムをどう組み合わせるかを検討・実装する
1. 大量のデータを用意
1. データを処理してみて、望ましい結果かどうか検証する→望ましい結果にならなかったら変数を調整して再挑戦する
1. ↑をひたすら繰り返して調整していく

4、5のあたりはフレームワーク側である程度面倒見てくれるので、一番重要なのは2のところになるのかな、という印象。

# 学習リソース

https://www.udacity.com/course/deep-learning--ud730

      

ディープラーニング方面を中心に、人工知能まわりの個人的な勉強用メモ

用語メモ

脳科学方面

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のラッパ。様々なアルゴリズムを使ったニューラルネットワークの処理を簡単に書ける

ディープラーニングでやること

  1. ディープラーニングで解決したい問題をはっきりさせる
  2. その問題を、プログラム処理できる形にモデリングし、どのアルゴリズムをどう組み合わせるかを検討・実装する
  3. 大量のデータを用意
  4. データを処理してみて、望ましい結果かどうか検証する→望ましい結果にならなかったら変数を調整して再挑戦する
  5. ↑をひたすら繰り返して調整していく

4、5のあたりはフレームワーク側である程度面倒見てくれるので、一番重要なのは2のところになるのかな、という印象。

学習リソース

https://www.udacity.com/course/deep-learning--ud730