====== Artificial Neural Network ====== Artificial Neural Network(ANN, 人口ニューラルネットワーク): 脳内におけるニューロンの動きを人工的にシミュレーションする手法 深層学習: deep learning = deep(multi layer) Artificial Neural Network Neural Network にブレイクスルーをもたらした要因 * Backpropagation(バックプロパゲーション): どこで学習が間違ったのかを学習させる仕組み。誤差逆伝播法と言う。 * 勾配算出を高速化することに成功した。 * 偏微分を利用することで、重みを変えると結果にどれくらいの影響があるかを考えながら重みの調整ができるようになった。 * Convolutional Neural Network(CNN,畳み込みニューラルネットワーク): パターンを見つける。例えば別角度から見たリンゴもリンゴだと識別するための方法。 Reference * Wikipedia * [[https://ja.wikipedia.org/wiki/%E3%83%8B%E3%83%A5%E3%83%BC%E3%83%A9%E3%83%AB%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AF|Japanese]] * [[https://en.wikipedia.org/wiki/Artificial_neural_network|English]] ===== Basic ===== {{:programming:perceptron.png?400|}} Perceptron(パーセプトロン): NAND論理演算が可能。NANDを組みわせると全ての演算(ブール演算)が可能(functionally complete ,完全性という)。この完全性は昨今のコンピュータにも当然備わっているが、ニューラルネットに置いてはInput(入力)に対するweight(重み付け)に学習結果を反映させることでNAND論理演算のOutput(出力)が変わる。これが機械学習における学習の基本である。 ===== Convolutional Neural Network ===== Convolutional Neural Network(CNN,畳み込みニューラルネットワーク): 画像認識で成果を上げている。 Reference * How do Convolutional Neural Networks work? * [[http://brohrer.github.io/how_convolutional_neural_networks_work.html|English]] * [[http://postd.cc/how-do-convolutional-neural-networks-work/|Japanese]] ===== Technical Term ===== ==== Evaluation ==== * feature(特徴量): * Epoch: 計算が実時間で終わるようにDatasetからデータをサンプリングする。これを「ミニバッチ手法」と言う。しかしながら、Dataset全体を網羅した学習をしたいため、確率的にDataset全体を網羅するように処理をn回繰り返す。このn回を1Epochと言う。 * Epoch = Dataset全体数 / Batch Size ==== Algorithm ==== * affine(アフィン): 入力全て(i1-in)に重み付け(w1-wn)を掛けて、さらにバイアス(b)に重み付け(w)を掛けたものを足した総和。 * affine = (i1*w1 + i2*w2 + ... in*wn) + bw * activation function(活性化関数): 学習結果にメリハリをつけてニューロン発火「する」「しない」を明確にする。閾値以下を0、閾値以上を1のように分類するために使うため「正規化」とも言う。 * sigmoid function(シグモイド関数): (-∞,∞)->(0,1) の変換を行い 0.0-1.0 の範囲に正規化する。 * ReLU(Rectified Linear Unit, ramp function, ランプ関数):max(0,x) * tanh(tanh関数):双曲線関数の一つであるタンジェント関数 * LOSS function(損失関数): 正解と学習結果の差を求めて損失を割り出す関数 * cross entropy(交差エントロピー): * Softmax cross entropy(ソフトマックス交差エントロピー): * Convolutional Neural Network(CNN,畳み込みニューラルネットワーク):Convolution Layer (畳み込み層)と Pooling Layer (プーリング層)からなる Neural Network * Convolution Layer: 入力されたニューロンの一部(局所領域やwindowと言う)に対して畳み込み演算をする。局所領域をスライドしながらニューロン全体に対して畳み込み演算を行い「特徴マップ」を求める。 * Pooling Layer: 入力されたデータを規則を適用して圧縮する。 * Max Pooling: 局所領域内で最大の値を採用する。 * Average Pooling: 局所領域内の値の平均値を採用する。 ==== Dataset ==== * mnist: Mixed National Institute of Standards and Technology database * 手書きの数字「0~9」に正解ラベルが与えられているデータセット ====== 機械学習の種類 ====== * 教師あり学習: 学習の答えを用意する * 分類問題: 画像などを**仕分け**する * 画像の場合、ピクセルを行列として扱うことで学習する * 回帰問題: 数値などから傾向を学習し、今後の変動などを**推測**する * 教師なし学習: 学習の答えを用意しない ====== Tools ====== * [[programming:neuralnetworkconsolebysony|Neural Network Console by sony]] ====== Libraries ====== * [[https://nnabla.org/ja/|Neural Network Libraries by sony]] * [[https://www.tensorflow.org/|TensorFlow by google]]