Upload
keiichirou-miyamoto
View
557
Download
1
Embed Size (px)
Citation preview
ゼロから作る Deep Learning輪読会 AND 勉強会
第2章パーセプトロン
宮本圭一郎@miyamotol0105
2016/12/7
もくじ
1 章 Python 入門
2 章 パーセプトロン: 12/6 火
3 章 ニューラルネットワーク: 12/13,20 火
4 章 ニューラルネットワークの学習: 12/27,1/10 火
5 章 誤差逆伝播法: 12/17,1/24 火
6 章 学習に関するテクニック: 1/31,2/7 火
7 章 畳み込みニューラルネットワーク: 2/14,2/21 火
8 章 ディープラーニング: 2/28 火
人工知能分野の全体像
コンピュータサイエンス
AI 、人工知能
自然言語処理
ML 、機械学習 データマイニング統計学
パターン認識
ディープラーニングニューラルネット
なぜ動いてるのかわからない分野
人間脳を少しずつ真似している
・大脳新皮質:教師なし学習・大脳基底核:強化学習・小脳:教師あり学習
脳の機能の例
海馬:記憶を作ったり取り出したり扁桃体:感情の記憶に関係
海馬
扁桃体
ニューロンとシナプス
ニューロン
シナプス
活動電位の伝達
活動電位が伝わってくる
活動電位の伝達
膜電位が上昇。閾値を超えると発火。
活動電位の伝達
神経伝達物質を送る
活動電位の伝達
レセプターとイオンチャネルで受け取る
活動電位の伝達
次のニューロンに信号を送る
フランク・ローゼンブラット( Frank Rosenblatt , 1928 年 7 月 11 日 - 1971 年 7 月 11
日)
アメリカの心理学者。ニューラルネット研究の開拓者のひとり。ローゼンブラットと人工知能研究者マービン・ミンスキーはブロンクス高等学校の同級生であった。コーネル大学に勤務
神経生理学者・外科医であるウォーレン・マカロックと論理学者・数学者であるウォルター・ピッツによって、形式ニューロンというモデルが考えられた。ローゼンブラットはこの形式ニューロンの考え方を基にして
パーセプトロンを開発した。
パーセプトロンとは
丸はニューロンやノードやユニット
X1
X2
Y
w1
w2
2 つの入力のパーセプトロン
0 非発火
1 発火 閾値
y=w1x1+ w2x2≤θy=w1x1+ w2x2> θ重み
パーセプトロンとは
丸はニューロンやノードやユニット
X1
X2
Y
w1
w2
2 つの入力のパーセプトロン
0 非発火
1 発火閾値
y=w1x1+ w2x2≤θy=w1x1+ w2x2> θ
重み
AND ゲート
X1 X2 Y
0 0 0
1 0 0
0 1 0
1 1 1
パーセプトロンを使って論理回路の AND ゲートを表現してみる
y=w1x1+ w2x2≤θy=w1x1+ w2x2> θ
0 非発火
1 発火
AND ゲート
X1 X2 Y
0 0 0
1 0 0
0 1 0
1 1 1
パーセプトロンを使って論理回路の AND ゲートを表現してみる
y=w1x1+ w2x2≤θy=w1x1+ w2x2> θ
0 非発火
1 発火
w1 と w2 は??θ は??
AND ゲート
X1 X2 Y
0 0 0
1 0 0
0 1 0
1 1 1
パーセプトロンを使って論理回路の AND ゲートを表現してみる
(w1 ,w2 ,θ )=(0.5,0 .5,0 .7) y=w1x1+ w2x2≤θy=w1x1+ w2x2> θ
AND ゲート
X1 X2 Y
0 0 0
1 0 0
0 1 0
1 1 1
パーセプトロンを使って論理回路の AND ゲートを表現してみる
(w1 ,w2 ,θ )=(0.5,0 .5,0 .7) y=0.5×0+ 0.5×0≤0.7y=0.5×1+ 0.5×0≤0.7y=0.5×0+ 0.5×1≤0.7y=0.5×1+ 0.5×1> 0.7
NAND ゲート
X1 X2 Y
0 0 1
1 0 1
0 1 1
1 1 0
パーセプトロンを使って論理回路の NAND ゲートを表現してみる
表現できる
OR ゲート
X1 X2 Y
0 0 0
1 0 1
0 1 1
1 1 1
パーセプトロンを使って論理回路の OR ゲートを表現してみる
表現できる
パーセプトロンの実装
def AND(x1, x2): x = np.array([x1, x2]) w = np.array([0.5, 0.5]) b = -0.7 tmp = np.sum(w*x) + b if tmp <= 0: return 0 else: return 1
y=w1x1+ w2x2+ b≤0y=w1x1+ w2x2+ b> 0
0 非発火
1 発火
式がちょっと変わった
パーセプトロンの実装
def AND(x1, x2): x = np.array([x1, x2]) w = np.array([0.5, 0.5]) b = -0.7 tmp = np.sum(w*x) + b if tmp <= 0: return 0 else: return 1
y=w1x1+ w2x2+ b≤0y=w1x1+ w2x2+ b> 0
0 非発火
1 発火
重みとバイアス
パーセプトロンの実装
def AND(x1, x2): x = np.array([x1, x2]) w = np.array([0.5, 0.5]) b = -0.7 tmp = np.sum(w*x) + b if tmp <= 0: return 0 else: return 1
AND(0, 0) # 0 を出力AND(1, 0) # 0 を出力AND(0, 1) # 0 を出力AND(1, 1) # 1 を出力
y=w1x1+ w2x2+ b≤0y=w1x1+ w2x2+ b> 0
0 非発火
1 発火
XOR ゲート
X1 X2 Y
0 0 0
1 0 1
0 1 1
1 1 0
パーセプトロンを使って論理回路の XOR ゲートを表現してみる
表現できない
線形と非線形
1
01
x1
x2
線形で分けれる
0の領域
1の領域
1
線形と非線形
1
01
x1
x2
線形では分けれない
1の領域
0
0の領域
多層パーセプトロン
層を重ねると表現力が高ま
る
インプットセル
アウトプットセル
隠れ層のセル
x=入力
z=出力
w=重み
w=重み
0層目 1層目 2層目
XOR ゲートの実装
回路の組み合わせで XOR ゲートを実現可能
NAND
AND
x2
x1
y
s1
s2OR
XOR ゲートパーセプトロンを使って論理回路の XOR ゲートを表現してみる
X1 X2 S1 S2 Y
0 0 1 0 0
1 0 1 1 1
0 1 1 1 1
1 1 0 1 0
表現できる
XOR ゲートの実装
def XOR(x1, x2): s1 = NAND(x1, x2) s2 = OR(x1, x2) y = AND(s1, s2) return y
1層目
2層目
AND
NAND
OR
0層目 1層目 2層目
s1
s2
x1
x2
y
まとめ
・パーセプトロンでは重みとバイアスをパラメータとして設定
・パーセプトロンを使えば AND ゲートや ORゲートなどの論理回路を表現できる
・単層パーセプトロンでは XOR ゲートを表現できない
・多層にすれば XOR ゲートを表現できる・ソースコードリンクhttps://github.com/oreilly-japan/deep-learning-
from-scratch/
アルゴリズム解説動画紹介
計算のアルゴリズムがわかる今後論文からのコーディングの仕方も掲載されるかも
https://filmuy.com/deeplearning