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
510
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
「深層学習による自然言語処理」読書会 第2章2.1~2.5
「深層学習による自然言語処理」読書会
第2章2.1~2.5
Kei Shiratsuchi
PRO
August 24, 2017
More Decks by Kei Shiratsuchi
See All by Kei Shiratsuchi
モノリスとマイクロサービスの橋渡し - ベターからモアベターへ
kei_s
PRO
0
140
なぜ リアーキテクティング専任チームを作ったのか
kei_s
PRO
2
1.7k
実践 Rails アソシエーションリファクタリング / Rails association refactoring in practice
kei_s
PRO
8
10k
「Go言語でつくるインタプリタ」を Rust で移植してみた / "Write An Interpreter In Go" In Rust
kei_s
PRO
1
2.1k
Rust言語で作るインタプリタ / Write An Interpreter In Rust
kei_s
PRO
2
820
育児休業のご報告と、育児グッズとしてのスマートスピーカー / Parental Leave and SmartSpeaker
kei_s
PRO
0
900
「深層学習による自然言語処理」読書会 第6章2.7
kei_s
PRO
0
490
「深層学習による自然言語処理」読書会 第5章5.1
kei_s
PRO
0
510
最近個人的に気になるプログラミング言語おさらい Ruby, Python, Go, Rust, Julia
kei_s
PRO
0
1.1k
Other Decks in Technology
See All in Technology
Sansan Engineering Unit 紹介資料
sansan33
PRO
1
5k
形式手法特論:Hyperproperty とモデル検査 #kernelvm / Kernel VM Study Tokyo 19th
ytaka23
1
890
NANDでも描画したい!
nichica906
3
810
LLMアプリ、 雰囲気で運用してませんか? 〜LLMOpsの現在地〜
taka_aki
1
560
Oracle AI Databaseデータベース・サービス: BaseDB/ExaDB-Dの可用性
oracle4engineer
PRO
1
960
アクセスキーが漏れた日にやるべきこと- 無効化の先にある本当の対応
kazzpapa3
0
360
AI駆動開発をチームに根付かせる - 「1行も書かない」チームがHarnessを育てた1年 -
kenichirokimura
6
3.3k
Bill One 開発エンジニア 紹介資料
sansan33
PRO
7
20k
Kiro Crew で始める マルチエージェント開発
miu_crescent
PRO
0
200
「ミスを許さない手順書」を作ってみた 〜 個人的にはこれ以上できることはあまりなさそう/20260827-ssmjp-operation-procedure-update
opelab
14
9.9k
EUDIWの枠組みを出発点に民間エコシステムの在り方を考える(OAuth/OIDC Numa (Immersion) Workshop 2026)
oidfj
PRO
0
350
OAuth SPIFFE Client Authentication(OAuth/OIDC Numa (Immersion) Workshop 2026)
oidfj
PRO
0
350
Featured
See All Featured
BBQ
matthewcrist
89
10k
Art, The Web, and Tiny UX
lynnandtonic
304
22k
YesSQL, Process and Tooling at Scale
rocio
174
15k
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.7k
Visualization
eitanlees
152
17k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.3k
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
2.1k
Building Applications with DynamoDB
mza
96
7.2k
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
1
1.6k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
950
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
430
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