トリコロールな猫/セキュリティ

思いついたことをぼちぼち書いてます。

機械学習・深層学習の主なアルゴリズムまとめ2〜半教師あり学習・パーセプトロン・ニューラルネットワーク

前回の続き。

security.nekotricolor.com

前回は統計学色が強かったけど、ここからいよいよ「機械学習」色が強まる。気がする。完全に個人用メモで、これを読んだだけではなんだかわからないと思うので参考書籍と一緒にどうぞ。

半教師あり学習

答えのわかっているデータ(ラベル付きデータ)とわかってないデータが混在。ラベルをつけるのは大変なので、少量のラベル付きデータを使ってラベルなしデータにラベルをつけ、それを学習データに利用しようという試み。識別モデルと生成モデルに分かれる。
各モデルのアルゴリズムは調べきれず。基本的には前回の教師あり学習アルゴリズムを使う。

products.sint.co.jp

kento1109.hatenablog.com

www.slideshare.net

www.slideshare.net

強化学習

これはこれで大きな一分野で追っていくときりがないので定義と代表的な学習方法の名前のみ。
強化学習 - Wikipediaより:

ある環境内におけるエージェントが、現在の状態を観測し、取るべき行動を決定する問題を扱う機械学習の一種。エージェントは行動を選択することで環境から報酬を得る。強化学習は一連の行動を通じて報酬が最も多く得られるような方策(policy)を学習する。

TD学習

Temporal Difference Learning、時間的差分学習のこと。

Q学習

Q-Learningとも。

www.atmarkit.co.jp
これとCNNを組み合わせたDeep Q Network(DQN)が流行り。

パーセプトロン

ただ「パーセプトロン」といった場合には、「単純パーセプトロン」のことを指すことが多い。複数の信号を入力として受け取り、各入力に重みを乗算し、その総和がある値(閾値)を超えれば1を、そうじゃない場合は0を出力するアルゴリズムのこと。よくある図を描いておく。◯を「ニューロン」とか「ノード」とか呼ぶ。

f:id:nekotricolor:20190821141001j:plain
パーセプトロン

qiita.com

活性化関数

activation function。入力信号の総和を出力信号に変換する関数のこと。

ステップ関数

活性化関数の一つ。パーセプトロンで使われる。入力が0を超えたら1を、それ以外は0を返す。

ニューラルネットワーク

パーセプトロンに似ている(ニューロンのつながり方は一緒)が、シグモイド関数やReLUなど、ステップ関数ではない活性化関数を使う。ちなみに、パーセプトロンもニューラルネットワークも活性化関数には非線形関数を用いる必要がある。線形関数だと、多層にしても単層で表すことができるので意味がない。詳しくは「0から作るDeep Learning」の「3.2.6 非線形関数」(P.51)に。

活性化関数

シグモイド関数

Sigmoid。ニューラルネットワークで昔からよく用いられる活性化関数の一つ。ステップ関数が0か1かになるのに対し、ヌルヌルと1に近づいていく。

ReLU

Rectified Linear Unit。最近流行りの活性化関数。入力が0以下なら0を、0を超えていればその入力をそのまま返す。3つの関数のグラフを描いてみた:

f:id:nekotricolor:20190821141011j:plain:w350
ステップ・シグモイド・ReLU

出力層の活性化関数

ソフトマックス関数

分類(多クラス分類)に使用する。指数関数を用いる。2クラス分類ではシグモイド関数を使う。出力が0から1.0の実数になるため、確率として解釈することができる(ので分類に使える)。

恒等関数

回帰問題に使用する。入力をそのまま出力する。

畳み込みニューラルネットワーク

CNN(convolutional neural network)ともいう。隣接する全てのニューロン間に結合がある全結合では、例えば3次元のデータでも1次元にする(すべてのニューロンが同じ次元にある)必要があるが、CNNではその必要がなく、形状を維持して計算できる。画像や音声認識によく使われ、とくに画像認識のディープラーニングではほぼすべてがCNNがベースとなっている。畳み込み層(Convolutionレイヤ)とプーリング層(Poolingレイヤ)がある。

再帰型ニューラルネットワーク

RNN(recurrent neural network)ともいう。中間層の出力が自分自身へ戻される帰還路を持つ。これにより情報を一時的に記憶することができ、時系列データに対応することが可能。そのため、音声や言語、動画を扱うのが得意。

Web上の各所でRNNのRをリカーシブとかリカレントとか書かれていて最高にわかりづらいので書籍を参照したところ:

「深層学習」には

再帰型ニューラルネット(recurrent neural network)
回帰(型)ニューラルネット、あるいは循環ニューラルネットと訳されることもありますが、同じものです。*1

「ゼロから作るDeep Learning 2」には

Recurrent Neural Networkは、日本語では「再帰ニューラルネットワーク」
(略)と訳されます(略)
Recursive Neural Network(略)は木構造のデータを処理するためのネットワークで、リカレントニューラルネットワークとは別物です*2

と書かれており、どうやらリカーシブは別物らしい。リカーシブって「再帰」じゃないの・・・?

Long Short-Term Memory

ゲート付きRNNの一つ。中間層を入力/忘却/出力の3つのゲートと記憶(メモリ)セルを使ったネットワークに置き換え、より長い文脈を考慮した学習ができる。ので自然言語処理に強い。

オートエンコーダ

自己符号化器ともいう。ニューラルネットワークを利用した次元削減(Dimensionality reduction:高次元で定義されたデータを、新しい特徴量に変換して次元を減らすこと。計算量の削減や可視化のために用いる。線形では主成分分析(PCA)、対応分析などがある)アルゴリズム。事前学習(ネットワークの重みの良い初期値を得るための学習)に用いられることが多い。

制約ボルツマンマシン

RBM(Restricted Boltzmann Machine)ともいう。ボルツマンマシンは双方向に結合しているニューラルネットワークのことで、RBMは結合の仕方に制約があるもののこと。事前学習に用いられることが多い。

深層学習

Deep Learning。中間層がたくさんあるニューラルネットワークのこと。散々調べたけどそれ以上でも以下でもねえ。

参考書籍

何冊か読んでみましたが、ニューラルネットワークを使わないなら前エントリで紹介した書籍とWebサイトだけで十分だし、ニューラルネットワークを使うなら以下の「ゼロから作る〜」2冊と「深層学習」の3冊だけでいい感じ。ニューラルネットワークに関しては、Webはあてにしない方がいいです。良い記事もありましたがそれ以上に混乱させられる記事が多すぎる。

入門 機械学習

「スパムフィルタ」「暗号解読」などのシステムを構築しながら機械学習を学べる。でも言語がRなんだよねえ(私がRを知らないのが悪いんですが)。翻訳もちょっと読みにくい(のは原文が読みにくいからだと思われる)。Rを使わないなら下の「ゼロから作る〜」の方が日本人が著者で読みやすいしおすすめ。

入門 機械学習

入門 機械学習

  • 作者: Drew Conway,John Myles White,萩原正人,奥野陽,水野貴明,木下哲也
  • 出版社/メーカー: オライリージャパン
  • 発売日: 2012/12/22
  • メディア: 大型本
  • 購入: 2人 クリック: 41回
  • この商品を含むブログ (11件) を見る

ゼロから作るDeep Learning

「最初からそう説明してくれればもっと早く理解できたのに・・」と感じることがたくさん書かれている、大変わかりやすい書籍。パーセプトロンとニューラルネットワークの説明はこれが一番よかった。ほんっっっとにね、わかりやすいんですよ・・日本人著者のありがたみ・・。Pythonインタプリタを使ってその場で簡単に確認できるのも良い。

ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装

ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装

ゼロから作るDeep Learning2

「ゼロから作るDeep Learning」の続編。こちらも大変わかりやすい。RNNはこれなしじゃ理解できなかったです。

ゼロから作るDeep Learning ? ―自然言語処理編

ゼロから作るDeep Learning ? ―自然言語処理編

深層学習

「ゼロから作る〜」があまり数式を使わずに説明していたのに対し、こちらはゴリゴリと数学的に説明していく。教科書としてよく使われているそうで、確かにレイアウトが教科書っぽい。深層学習に関して押さえておくべきことがきっちりと載っている感じ。ちなみにオートエンコーダ(自己符号化器)とボルツマンマシンはこの本には載っているけど「ゼロから作る〜」には載っていない。

深層学習 (機械学習プロフェッショナルシリーズ)

深層学習 (機械学習プロフェッショナルシリーズ)

*1:「深層学習」「7.1 系列データの分類」P.112

*2:「ゼロから作るDeep Learning 2」「5.2 RNNとは」P.183/太字は著者による