Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
「深層学習による自然言語処理」読書会 第2章2.1~2.5
Search
Kei Shiratsuchi
PRO
August 24, 2017
Technology
0
430
「深層学習による自然言語処理」読書会 第2章2.1~2.5
「深層学習による自然言語処理」読書会
第2章2.1~2.5
Kei Shiratsuchi
PRO
August 24, 2017
Tweet
Share
More Decks by Kei Shiratsuchi
See All by Kei Shiratsuchi
モノリスとマイクロサービスの橋渡し - ベターからモアベターへ
kei_s
PRO
0
93
なぜ リアーキテクティング専任チームを作ったのか
kei_s
PRO
2
1.4k
実践 Rails アソシエーションリファクタリング / Rails association refactoring in practice
kei_s
PRO
8
8.6k
「Go言語でつくるインタプリタ」を Rust で移植してみた / "Write An Interpreter In Go" In Rust
kei_s
PRO
1
1.9k
Rust言語で作るインタプリタ / Write An Interpreter In Rust
kei_s
PRO
2
630
育児休業のご報告と、育児グッズとしてのスマートスピーカー / Parental Leave and SmartSpeaker
kei_s
PRO
0
850
「深層学習による自然言語処理」読書会 第6章2.7
kei_s
PRO
0
450
「深層学習による自然言語処理」読書会 第5章5.1
kei_s
PRO
0
440
最近個人的に気になるプログラミング言語おさらい Ruby, Python, Go, Rust, Julia
kei_s
PRO
0
1k
Other Decks in Technology
See All in Technology
開発組織のための セキュアコーディング研修の始め方
flatt_security
3
2.4k
抽象化をするということ - 具体と抽象の往復を身につける / Abstraction and concretization
soudai
19
8.1k
一度 Expo の採用を断念したけど、 再度 Expo の導入を検討している話
ichiki1023
1
170
Platform Engineeringは自由のめまい
nwiizo
4
2.1k
Nekko Cloud、 これまでとこれから ~学生サークルが作る、 小さなクラウド
logica0419
2
980
OpenID BizDay#17 KYC WG活動報告(法人) / 20250219-BizDay17-KYC-legalidentity
oidfj
0
250
クラウドサービス事業者におけるOSS
tagomoris
2
860
リアルタイム分析データベースで実現する SQLベースのオブザーバビリティ
mikimatsumoto
0
1.4k
転生CISOサバイバル・ガイド / CISO Career Transition Survival Guide
kanny
3
1k
レビューを増やしつつ 高評価維持するテクニック
tsuzuki817
1
730
Cloud Spanner 導入で実現した快適な開発と運用について
colopl
1
710
データマネジメントのトレードオフに立ち向かう
ikkimiyazaki
6
1k
Featured
See All Featured
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
What's in a price? How to price your products and services
michaelherold
244
12k
Art, The Web, and Tiny UX
lynnandtonic
298
20k
Intergalactic Javascript Robots from Outer Space
tanoku
270
27k
Why You Should Never Use an ORM
jnunemaker
PRO
55
9.2k
GraphQLとの向き合い方2022年版
quramy
44
13k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
160
15k
Code Review Best Practice
trishagee
67
18k
Thoughts on Productivity
jonyablonski
69
4.5k
Large-scale JavaScript Application Architecture
addyosmani
511
110k
Building Applications with DynamoDB
mza
93
6.2k
Into the Great Unknown - MozCon
thekraken
35
1.6k
Transcript
ʮਂֶशʹΑΔࣗવݴޠॲ ཧʯಡॻձ ୈষd ⽩⼟ 慧 株式会社レトリバ © 2017 Retrieva, Inc.
ࣗݾհ • 名前:⽩⼟ 慧 • 年齢:33歳 • 所属:株式会社レトリバ(2016年4⽉〜) • 職業:エンジニア
• ⾃然⾔語処理:⼤学の授業レベル。 • 深層学習:⼊社してから少しだけ案件で。 © 2017 Retrieva, Inc. 2
ൣғ • 2. ニューラルネットの基礎 • 2.1 教師あり学習 • 2.2 順伝搬型ニューラルネット
• 2.3 活性化関数 • 2.4 勾配法 • 2.5 誤差逆伝搬法 © 2017 Retrieva, Inc. 3
χϡʔϥϧωοτͷجૅ • この章で紹介すること • 機械学習とは何か • 誤差逆伝搬法 • 広く使われているニューラルネットの構造(次回) ©
2017 Retrieva, Inc. 4
ڭࢣ͋Γֶश • 深層学習は、ニューラルネットを関数近似に使う⼿法 • ニューラルネットはあくまでもデータから関数を学習するため のモデル © 2017 Retrieva, Inc.
5
ڭࢣ͋Γֶशͷఆٛ • 教師あり学習では、訓練データを使って所望の予測モデルを学 習する。 • 訓練データ:正解事例の集合 • 式(2.1):⼊⼒変数x(n)と出⼒変数y(n)について、損失を最⼩化す るようなパラメータθを求める⼿続き •
損失: x(n), y(n) を損失関数にかけた結果の平均値 • つまり学習とは、最適化アルゴリズムを使って、ある関数を最 ⼩化するパラメータ値を求める、最適化問題である © 2017 Retrieva, Inc. 6
ଛࣦؔ • 損失関数を何にするかも設計要素 • fθ (x,y) は予測モデル。本書ではニューラルネットとする • 交差エントロピー損失関数 •
真の分布とモデルとの距離を表す交差エントロピーを、訓練データで 近似する • ヒンジ損失関数 • 正解y(n)と、正解を除いた中で最もスコアが⼤きい "だけを使って損失 を定義する • これを⽤いて学習するアルゴリズムをサポートベクトルマシンと呼ぶ © 2017 Retrieva, Inc. 7
ڭࢣ͋Γֶशʹ༻͍Δσʔλ • 訓練データに対してだけ正しく予測できても意味がない • 本当は世の中全てのデータを訓練データとしたいが、不可能 • 最適化問題と違い、教師あり学習は訓練データに最適化できれば良い わけではない • 評価データと開発データを⽤意する
• 評価データ:学習の最後に、モデルを評価するための正解事例 • 開発データ:学習の過程で使う正解事例 © 2017 Retrieva, Inc. 8
ॱൖܕχϡʔϥϧωοτɺϞσϧ • 最も単純な構造である順伝搬型ニューラ ルネット(FFNN) • ⾏列Wをかけてベクトルbを⾜す、という 作業を層ごとに繰り返す • 活性化関数a(l)を通す •
パラメータθは、{W(1),…W(l),b(1)…b(l)}と なる • 隠れ状態ベクトルの次元数、または層の 数が多いと、⼊⼒データを細かく分類で きる • つまり深いニューラルネットは表現⼒が⾼ いと⾔われる © 2017 Retrieva, Inc. 9 o h(2) h(1) h(0) = x h(1) = a(1)(W(1)x +b(1)) h(2) = a(2)( W(2)h(1) +b(2)) o = W(3)h(2) +b(3)
׆ੑԽؔ • 活性化関数として⾮線形関数を適⽤する • sigmoid • tanh • ReLU •
勾配法と組み合わせるため、微分可能な関数を選ぶ • 活性化関数と性能の関係は明確になっていないので、実験的に選ぶことが多 い • ⾮線形関数を通さない2層のFFNNは、等価な1層のFFNNで構成でき てしまう • 深い構造を有効活⽤するため、⾮線形な活性化関数を適⽤する必要がある © 2017 Retrieva, Inc. 10
ޯ๏ɺޯ๏ʹΑΔؔ࠷খԽ • 2.1節の通り、学習はL(θ) の最⼩化 • ニューラルネットでは勾配法による最適化がよく使われる • パラメータθを下記の式で更新していく • θ(k+1)=θ(k)-η∂L(θ(k))
• 関数Lをθ(k)において偏微分を取り線形近似し、最も減る⽅向(最急降 下⽅向)に向かって、ηぶんパラメータを動かす © 2017 Retrieva, Inc. 11
ϛχόονԽʹΑΔ֬తޯ๏ • 式(2.1)では訓練データのすべての事例を利⽤している。バッチ法と呼ぶ • ⼀回の評価に時間がかかりすぎる • 最急降下⽅向は局所的な性質なので、雑に早く計算してパラメータ更新回数を増や した⽅が、早く良い解にたどり着ける • 事例からランダムに選んで勾配法を実⾏する確率的勾配法がよく使われる
• 1事例だけ使う(オンライン法)だとパラメータ更新回数は多くできるが、 偏微分のバラツキが⼤きい • いいとこ取りをして、事例からランダムに複数選ぶ、ミニバッチ法を⽤い る • 選ぶ個数:バッチサイズ • 全データ数/バッチサイズ:1エポック © 2017 Retrieva, Inc. 12
ޡࠩٯൖ๏ɺχϡʔϥϧωοτͷඍ • 誤差逆伝搬法:ニューラルネットにおいて⽬的関数の偏微分を 計算するアルゴリズム • ⾃分で実装する必要はあまりない • ニューラルネットを合成関数と捉え微分の連鎖律を使うと、 ニューラルネットの微分はそれぞれの導関数の積で表せる ©
2017 Retrieva, Inc. 13
ਂ͍χϡʔϥϧωοτͷ͠͞ • 隠れ層1層を持つニューラルネットをスコア関数 f とすると、 f(x,y) = f(o)(f(1)(x), y)=w y
(o)w(1)x • 損失関数にかけた l(f(o)(f(1)(x), y)) を⽬的関数とすると、f(1)のパラ メータw(1)における微分は(式2.31)、 ' ()) • これは関数評価とは逆⽅向に誤差(損失関数の⼊⼒による微分)が かけられている • 誤差が関数評価とは逆⽅向に伝達されることになるので誤差逆伝搬法 © 2017 Retrieva, Inc. 14
ਂ͍χϡʔϥϧωοτͷ͠͞ • 偏微分の計算は、⽬的関数の計算グラフを逆に辿っていく © 2017 Retrieva, Inc. 15 ⼊ ⼒
︵ 訓 練 デ タ ︶ ⾏ 列 活 性 化 関 数 ⾏ 列 活 性 化 関 数 ⾏ 列 損 失 関 数 順伝搬の計算 偏微分の計算
ਂ͍χϡʔϥϧωοτͷ͠͞ • 隠れ層を2つに増やすと(式2.33)、 ' ) (,)(-) • 層が増えると積の回数が増える • パラメータが⼤きいと、微分の値が⾮常に⼤きくなる:勾配爆発
• パラメータが⼩さいと、微分の値が⾮常に⼩さくなる:勾配消失 • 層を増やすと表現⼒は⼤きくなるが、学習が困難になる • ResNetのような⼿法を⽤いると、1000層も可能になる © 2017 Retrieva, Inc. 16