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
機械学習&ディープラーニング入門
Search
Etsuji Nakai
January 16, 2022
Technology
1
440
機械学習&ディープラーニング入門
Etsuji Nakai
January 16, 2022
Tweet
Share
More Decks by Etsuji Nakai
See All by Etsuji Nakai
Lecture course on Microservices : Part 1
enakai00
1
3.1k
Lecture course on Microservices : Part 2
enakai00
1
3k
Lecture course on Microservices : Part 3
enakai00
1
3k
Lecture course on Microservices : Part 4
enakai00
1
3k
JAX / Flax 入門
enakai00
1
380
生成 AI の基礎 〜 サンプル実装で学ぶ基本原理
enakai00
7
3.6k
大規模言語モデルを支える分散学習インフラ Pathways
enakai00
3
440
Python × 数学ブートキャンプガイド
enakai00
1
670
Riemann幾何学ユーザーのための情報幾何学入門
enakai00
0
340
Other Decks in Technology
See All in Technology
IBC 2024 動画技術関連レポート / IBC 2024 Report
cyberagentdevelopers
PRO
1
110
インフラとバックエンドとフロントエンドをくまなく調べて遅いアプリを早くした件
tubone24
1
430
Platform Engineering for Software Developers and Architects
syntasso
1
520
誰も全体を知らない ~ ロールの垣根を超えて引き上げる開発生産性 / Boosting Development Productivity Across Roles
kakehashi
1
230
【Pycon mini 東海 2024】Google Colaboratoryで試すVLM
kazuhitotakahashi
2
540
エンジニア人生の拡張性を高める 「探索型キャリア設計」の提案
tenshoku_draft
1
130
Application Development WG Intro at AppDeveloperCon
salaboy
0
190
初心者向けAWS Securityの勉強会mini Security-JAWSを9ヶ月ぐらい実施してきての近況
cmusudakeisuke
0
130
rootlessコンテナのすゝめ - 研究室サーバーでもできる安全なコンテナ管理
kitsuya0828
3
390
RubyのWebアプリケーションを50倍速くする方法 / How to Make a Ruby Web Application 50 Times Faster
hogelog
3
950
The Role of Developer Relations in AI Product Success.
giftojabu1
0
140
BLADE: An Attempt to Automate Penetration Testing Using Autonomous AI Agents
bbrbbq
0
320
Featured
See All Featured
Building Applications with DynamoDB
mza
90
6.1k
Done Done
chrislema
181
16k
Build your cross-platform service in a week with App Engine
jlugia
229
18k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
226
22k
The Straight Up "How To Draw Better" Workshop
denniskardys
232
140k
Building Adaptive Systems
keathley
38
2.3k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
6
430
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
93
16k
Building a Modern Day E-commerce SEO Strategy
aleyda
38
6.9k
Documentation Writing (for coders)
carmenintech
65
4.4k
Stop Working from a Prison Cell
hatefulcrawdad
267
20k
Art, The Web, and Tiny UX
lynnandtonic
297
20k
Transcript
第1部 (入門編) 機械学習 & ディープラーニング入門 中井悦司 / Etsuji Nakai 2022/1/12 ver1.0
※ 第三者著作物を含むページを公開用に一部削除しています。
専門用語の手話表現 • 機械学習 (Machine Learning) • ディープラーニング(深層学習)(Deep Learning) • ニューラルネットワーク
(Neural network) • 教師あり学習 / 教師なし学習 (Supervised / unsupervised learning) • 強化学習 (Reinforcement learning) • クラスタリング (Clustering) • 入力値 / 出力値 (Input / Output values)
専門用語の手話表現 • 変数 / パラメーター • 構造化データ:スプレッドシートなどに格納された数値データ (Structured data) •
非構造化データ:写真、動画、テキスト文書などのデータ (Unstructured data) • 分類アルゴリズム (Classification algorithm) • 回帰分析 (Regression analysis) • 確率 (Probability) • 予測 • グラフ (Chart / Graph)
4 機械学習とディープラーニングの基礎 4
5 AI/ディープラーニング/機械学習 AI:知性を持っているかのような機能を 提供する製品・サービスを実現 ディープラーニング:非構造化データに 高い予測性能を発揮する機械学習の一手法 機械学習:「過去のデータ」を基にして 「未知のデータ」に対する予測を行う技術 5
6 機械学習の基本 • 過去データを収集して、データの特徴をアルゴリズムで分析する • 新しいデータの特徴と比較して、新しいデータについて予測する スパムメールを 収集する スパムメールの 特徴を分析する
新しく届いたメールが 「スパムメールの特徴」を 持っているか判断する (*) 実際にはアルゴリズムを 使って自動分析する 6
7 ディープラーニングの誕生 • 「ニューラルネットワーク」の考え方は古くからあったが、多くの研究者は、 「アイデアとしては面白いが実用化は難しい」と考えていた • 2012 年に Google の研究者が「階層の深いニューラルネットワーク」を用い
て、 YouTube のデータから「猫」(などの物体)を識別することに成功 • これをきっかけにして、「階層の深いニューラルネットワークを用いた機械学 習」=「ディープラーニング」の実用化がはじまる 7
8 ディープラーニングとニューラルネットワーク 8
9 ニューラルネットワークの仕組み Input ニューラルネットワークの本質は 「入力データから予測値を出力する関数」 “cat” コンピューターから見れば 各ピクセルの色を表す 数字の集まりにすぎない たくさんの関数で順番に
計算を行って、結果を出力 レイヤー ノード それぞれのノードから 計算結果が出てくる 9
10 関数に含まれる「パラメーター」とは? 関数 パラメーター 入力値 出力値 パラメーター の値を変えると、出力値が変化する。 10
11 「教師あり学習」の仕組み label, input 正解ラベルのついた「トレーニングデータ」 に対して、予測の正解率が向上するように 関数に含まれるパラメータをチューニング “cat” “dog” “car”
“apple” OUTPUT 11
12 ディープラーニングが実用化された要因 • 学習アルゴリズムの研究 ◦ 膨大な数のパラメータを効率的に最適化する手法 • 学習データの蓄積 ◦ 膨大な数のパラメータを最適化するのに十分なデータ量
• 計算リソース ◦ 並列計算技術、GPUを用いた計算技術の発展 12
13 機械学習アルゴリズムの種類 13
14 機械学習アルゴリズムの種類 • 教師あり学習 ◦ 「正解ラベル」を持ったデータを元に学習を行う方法 • 教師なし学習 ◦ 「正解ラベル」を持たないデータを分析する方法
• 強化学習 ◦ 環境内を行動する「エージェント」が自分でデータを集めながら学習する 方法 14
15 機械学習あり学習の例 • 分類アルゴリズム(Classification) ◦ 複数のクラスに分類された既存のデータを用いて、新しいデータがどのク ラスに属するかを予想する ◦ スパムメールの判定、画像の分類など •
回帰分析(Regression) ◦ 具体的な数値を予測する ◦ 実際には、データの背後にある「関数」を見つけ出して、それを元に予測 値を計算する 15
16 回帰分析の例 • 広告宣伝費と売上(宣伝効果)の関係につい て、過去の実績をプロット • これらの背後にある関数(この例では直線) を予測 • 次回の広告宣伝費を決める際の参考になる
16
17 分類アルゴリズムの例 • 画像分類など ◦ この後の第2部で詳しく説明します! 17
第2部 (中級編) 分類アルゴリズムの基礎
19 • パラメーターを含む関数を用意する • 学習データを用意した関数に入力して、その出力値(予測結果)が「正解ラベ ル」にできるだけ一致するようにパラメーターの値を調整する • 線形判別法(分類アルゴリズムの中で最もシンプルなアルゴリズム) ◦ 予測に用いる関数として、一次関数(直線)を使用する
◦ パラメーターの数が少ないので、学習処理(パラメーターの調整)が簡単 分類アルゴリズムの仕組み 考え方はニューラル ネットワークと同じ 19
20 (復習)ニューラルネットワークの仕組み Input ニューラルネットワークの本質は 「入力データから予測値を出力する関数」 “cat” コンピューターから見れば 各ピクセルの色を表す 数字の集まりにすぎない たくさんの関数で順番に
計算を行って、結果を出力 レイヤー ノード それぞれのノードから 計算結果が出てくる 20
21 • 学習用データ ◦ (x, y) 平面上の N 個の点 ◦
◦ と × の 2 種類があり、 の正 解ラベルが与えられている 線形判別法の例題 • 解くべき問題 ◦ 平面上に直線を引いて、◦ と × のデータを判別する ◦ すべてのデータに 100% 正解を与えることはできないので、何らかの意味で ベストな直線を決定する 21
22 • 一次関数を用意する • 次の条件を満たす点を集めると直線に なる 直線の表し方 • パラメーター の値を変えると、直線の位置・方向が変化するので、◦ と
× を(できるだけ)適切に分割できるようにパラメーターの値を決定する 22
23 • 平面上の点 (x, y) に対して、その点の データが ◦ である確率 を計 算する(境界線上は確率
0.5) ロジスティック回帰の考え方 • この確率 P を用いて、パラメーターをチューニングする ◦ 正解が ◦ のデータ ⇨ P が大きくなるように調整 ◦ 正解が × のデータ ⇨ P が小さくなるように調整 実際には、この後で説明する 「バイナリー・クロスエントロピー」 を使ってチューニングする 23
24 • 直線上の点は を満たす • 直線から離れていくと、 の値 は、増加/減少する • つまり、 の値が大きいほど、 ◦
である確率 は大きくなる と考えられる 一次関数 f(x, y) の特徴 の場合 ◦である確率:大 ◦である確率:小 24
25 • シグモイド関数 ◦ 入力値 a が から に変化 すると出力値
は 0 から 1 に 滑らかに増加 • 一次関数 の値をシグモイド関 数に代入すると、確率 に変換 できる 確率 P(x, y) への変換 25
26 • 下記の E(バイナリー・クロスエントロピー)が最小になるようにパラメー ター を決定すると、適切な境界線が得られる • 詳しい説明は、書籍(機械学習理論入門)を 参照してください m(_ _)m
バイナリー・クロスエントロピーの定義 26
27 • 確率 を計算するニューラルネットワークを定義 Keras による実装例 model = models.Sequential() model.add(layers.Dense(1, activation='sigmoid',
input_shape=(2,), name='logistic_regression')) 活性化関数 活性化関数として シグモイド関数を使用 27
28 • バイナリー・クロスエントロピーを最小化するように指定 • 学習データを与えて、学習処理を実行 Keras による実装例 model.compile(loss='binary_crossentropy') model.fit(train_x, train_t,
batch_size=len(train_x), epochs=5000, verbose=0) 28
29 Keras による実装例 https://gist.github.com/enakai00/f31aa0e553ca729359768c740487a7d4 を押すと、Colab でノートブックを開いて実行することができます。 29
30 おまけ:線形多項分類器への応用 • 同じ考え方で、 ◦ 「平面上の点」以外のデータ ◦ 3 種類以上のクラスを持つデータ を分類することも可能
• 複数の一次関数を用いて、複数の境界線を作り、 一次関数に含まれるパラメーターをチューニング する ⇨「線形多項分類器」と呼ばれるモデル 三次元空間の点を分類する例 30
31 おまけ:線形多項分類器への応用 • 例:画像分類器 ◦ 28x28ピクセルのグレイスケール画像は、各ピク セルの値を一列にならべると、784次元空間の点 とみなすことができる ◦ 大量の画像データを784次元空間にばらまくと、
類似画像は互いに近くに集まると予想される ◦ 784次元空間を10分割することで、0 〜 9 の数字 の画像が分類できる 「0」の領域 「1」の領域 31
32 画像データと「高次元空間の点」の対応 x y z (0.8, 1.5, 1.5) 3 次元空間の点は
3 つの数値で表される (0, 0, 0, …., 0.3, 0.4, …) 28 x 28 = 784 ピクセルの画像 は、784 個の数値で表される 784次元空間の 1つの点に マッピングできる 32
33 Keras による実装例 正解例 不正解例 https://gist.github.com/enakai00/7a91296b6fca6ee1f90ff8cf362cdbf4 を押すと、Colab でノートブックを開いて実行することができます。 33
Thank You.