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
NaITE__32_First_ML.pdf
Search
Culvert
June 29, 2019
0
330
NaITE__32_First_ML.pdf
Culvert
June 29, 2019
Tweet
Share
More Decks by Culvert
See All by Culvert
受け入れテスト駆動開発で不確実性に段階的に対処する/Addressing Uncertainty Incrementally with Acceptance Test-Driven-Development
culvert
3
1.1k
ソフトウェアの設計を学び、メンテナンスしやすいテストを作ろう / Learn software design, Create tests that are easy to maintain
culvert
3
2.2k
私が経験したアジャイルテスト
culvert
4
1.2k
naite31_jstqb_tm
culvert
0
480
地域の子どもを地域で育てる
culvert
0
150
モヤモヤと向き合う
culvert
0
520
デブサミに行ってきた話
culvert
0
110
Featured
See All Featured
Product Roadmaps are Hard
iamctodd
PRO
48
10k
Web development in the modern age
philhawksworth
204
10k
The Art of Programming - Codeland 2020
erikaheidi
48
13k
Side Projects
sachag
451
42k
How to Think Like a Performance Engineer
csswizardry
15
910
4 Signs Your Business is Dying
shpigford
179
21k
Building Better People: How to give real-time feedback that sticks.
wjessup
359
18k
The Language of Interfaces
destraynor
153
23k
A Modern Web Designer's Workflow
chriscoyier
690
190k
Code Reviewing Like a Champion
maltzj
518
39k
YesSQL, Process and Tooling at Scale
rocio
167
14k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
157
15k
Transcript
機械学習を学び始める人のための 最初の一歩 NaITE #32
アジェンダ 1. なぜ、機械学習を学ぶのか? 2. 学習の仕組みを知る 3. 機械学習プログラムの仕組みを知る 4. 機械学習の仕組みを知る
アジェンダ 1. なぜ、機械学習を学ぶのか? 2. 学習の仕組みを知る 3. 機械学習プログラムの仕組みを知る 4. 機械学習の仕組みを知る
なぜ、機械学習を学ぶのか?
最初の1分:個人ワーク 次の2分:隣の人に対して発表(各1分) ワーク:3分間 〜あなたが今日ここに来た理由〜
➢ 漠然とした不安 ➢ 数学アレルギー 私の場合
正体がわからないものは 恐ろしい
この勉強会が、不安と向き合う 最初の一歩になれば幸いです
機械学習のプログラムが 何をしているのかざっくり知りたい人 このセッションの対象者
機械学習の概要は知っているが、 プログラムを書く手順がわからない人 このセッションの対象者
藤原 考功(Takanori Fujiwara) ニックネーム:Culvert(暗渠) 推しメン:西住みほ(GuP) 座右の銘:諦めない 特技:ブラックボックステスト 探索的テスト
アジェンダ 1. なぜ、機械学習を学ぶのか? 2. 学習の仕組みを知る 3. 機械学習プログラムの仕組みを知る 4. 機械学習の仕組みを知る
そもそも、 学習とは?
辞書の定義(大辞林) 1. まなびおさめること。勉強すること。 2. 生後の反復した経験によって、個々の個体の行動に環境に対 して適応した変化が現れる過程。 3. 過去の経験によって行動の仕方がある程度永続的に変容す ること。新しい習慣が形成されること。 4.
新しい知識の獲得、感情の深化、よき習慣の形成などの目標 に向かって努力を伴って展開される意識的行動。
None
眠くなってしまうので 実際にやってみましょう
ワーク:3分間 ペンギンの分類
ワーク:3分間 ペンギンの分類 イワトビペンギン イワトビペンギン コウテイペンギン コウテイペンギン ケープペンギン ケープペンギン ケープペンギン イワトビペンギン
覚えられましたか?
ではここでクイズです!
クイズ:コウテイペンギンはどれ?
クイズ:コウテイペンギンはどれ? ケープペンギン コウテイペンギン コガタペンギン アデリーペンギン ???
???
実は、もうひとつ コウテイペンギンの画像がありました
コウテイペンギン (赤ちゃん)
クイズ:コウテイペンギンはどれ? コウテイペンギン (赤ちゃん) ケープペンギン コウテイペンギン コガタペンギン アデリーペンギン
ペンギンを識別できるようになるためのプロセス 1. ペンギンの画像を見る 2. 種別ごとの特徴を画像から判断する 3. 判断した結果を記憶する 4. 新しく、ペンギンの画像を見る ※ただし、学習していないことは判断できない
あらためて、 「学習」の定義を 見てみましょう
辞書の定義(大辞林) 1. まなびおさめること。勉強すること。 2. 生後の反復した経験によって、個々の個体の行動に環境に対 して適応した変化が現れる過程。 3. 過去の経験によって行動の仕方がある程度永続的に変容す ること。新しい習慣が形成されること。 4.
新しい知識の獲得、感情の深化、よき習慣の形成などの目標 に向かって努力を伴って展開される意識的行動。
いま体験した「学習」は、 データを見て法則を見出すこと
[まとめ]学習のプロセス 1. 複数のデータを得る 2. データに対して、暗黙的に特徴を見出す 3. 特徴を記憶する 4. 新しく得たデータに対して、記憶をもとに判断する
機械学習のプログラムも考え方は全く同じ 1. 複数のデータを与える 2. プログラムが、データの特徴を自動的に判断する 3. 判断した結果を記憶する(=学習結果) 4. 新しく得たデータに対して、学習結果をもとに判断する
次!
アジェンダ 1. なぜ、機械学習を学ぶのか? 2. 学習の仕組みを知る 3. 機械学習プログラムの仕組みを知る 4. 機械学習の仕組みを知る
機械学習のプログラムを 実際に書いてみました
参考書籍 すぐに使える! 業務で実践できる! Pythonによる AI・機械学習・ 深層学習アプリのつくり方
機械学習のプログラムを作成するまでの手順 1. 環境を構築する 2. 写経する 3. 実行する ※まずは動けばよかろうなのだ!
1. 環境を構築する 1) Windowsの場合 2) Macの場合 いずれも、書籍に従ってツールをインストールする
1. 環境を構築する 今回使ったツール ➢ Jupyter Notebook ◦ Pythonのエディタと実行環境のセット ◦ ブラウザを起動するだけで使えるのでとても楽
1. 環境を構築する(つまづいたポイント) 1) Windowsの場合 特になし 2) Macの場合 Dockerイメージが起動できない (未解決)
2. 写経する 本のとおりにコードを書くだけの簡単なお仕事 (10〜20行程度)
3. 実行する 実行ボタンを押すだけの簡単なお仕事
3. 実行する(つまづいたポイント) ➢ 動かない ◦ 単純な構文ミス(エラーメッセージがわかりづらい) ◦ 正しく写経しているのに動かない→環境の再起動 ※つまり、大きな挫折ポイントなし
実際にやってみてわかったこと ➢ 簡単なプログラムを作成するだけなら、ハードルは低い ◦ 環境構築が楽 ◦ コードの行数が少ない ◦ 仕組みを理解しなくても、動くものは作れる
書籍を見て実際に書いてみたプログラム 1. AND演算 と XOR演算 をする 2. アヤメの品種を識別する 3. ワインの品質を分類する 4. 過去のデータから天気を予測する
続いて
プログラムの構成
処理の流れ(プログラムに関わらず共通) 1. データを準備し、読み込む 2. 読み込んだデータを学習用とテスト用に分ける 3. アルゴリズムを指定して、学習用データを学習させる (=識別器を作る) 4. テストデータを与えて、結果を得る
1. データを準備し、読み込む
2. 読み込んだデータを学習用とテスト用に分ける 学習用 テスト用 学習用
3. アルゴリズムを指定して、学習用データを学習させる 学習用 テスト用
4. テストデータを与えて、結果を得る 学習用 テスト用
[まとめ]構成は驚くほどシンプル 1. データを集めて、分けて、プログラムに与えるだけ 2. アルゴリズムは、用意されているものから選択する 3. 与えるデータによって結果は変わる
アルゴリズムは、用意されているものから選択する 1. (識別器を作るだけが目的なのであれば) 既に存在するアルゴリズムから 精度が出るものを選択するだけ 2. 選択したアルゴリズムによって結果(精度)は変わる
与えるデータによって結果は変わる 1. データを与えなければ学習できない 2. データの数と質が大事
さいごに
アジェンダ 1. なぜ、機械学習を学ぶのか? 2. 学習の仕組みを知る 3. 機械学習プログラムの仕組みを知る 4. 機械学習の仕組みを知る
あらためて、機械学習とは?
[まとめ]学習機能をソフトウェアに持たせること 1. 学習機能を持ったプログラム(識別器)を作成する 2. 識別器にデータを与え、学習させる 3. 識別器にデータを与え、結果を得る
従来型のプログラムは、演繹的アプローチ 1. ロジックが先、データが後 2. まず現実世界をモデル化し、ルールを決める 3. ルールに従ってデータが処理される
機械学習プログラムは、帰納的アプローチ 1. データが先、ロジックが後 2. 与えたデータをもとに識別器が学習する 3. 識別器が学習した結果に従ってデータが処理される
機械学習ができること(代表例) 1. 分類:データを分類する 例:ペンギンの分類 2. 回帰:過去のデータから、未来の値を予測する 例:天気予報 3. 推薦:あるデータに関連する情報を導き出す 例:あなたへのおすすめ
機械学習を使うには、目的を決めることが大事 データを分類したい? 未来の値を予測したい? 関連する情報を導き出したい?
機械学習の分類 1. 教師あり学習:データとともに正解を教える ※正解は教えるがロジックは教えない 2. 教師なし学習:データは与えるが正解は教えない 3. 強化学習:行動した結果に対して正解を与える 例:どんな形でもゴールに辿り着けば正解とする →プログラムは、最適なルートを自ら導き出す
機械学習プログラムの構築プロセス 1. 目的を決める 2. 識別器(モデル)を作成する 3. データを集め、整形・加工・分割する 4. データを学習させる 5.
結果に応じてデータやアルゴリズムを調整する
素朴な疑問
機械学習プログラムを テストすることはできる?
従来型のプログラムは、演繹的アプローチ 1. ロジックが先、データが後 2. まず現実世界をモデル化し、ルールを決める 3. ルールに従ってデータが処理される 4. 上記3.が保証されていることをテストすれば良い
機械学習プログラムは、帰納的アプローチ 1. データが先、ロジックが後 2. 与えたデータをもとに識別器が学習する 3. 識別器が学習した結果に従ってデータが処理される 4. 結果は確率的であり、ロジックはテストできない
とを見分けるために 1. 赤色は、オレンジ色はと人間が定義するのが 従来型のプログラム 2. 複数のデータをもとに はリンゴ、はオレンジとプログラムが判断するのが 機械学習のプログラム
機械学習プログラムの評価ポイント 1. 目的を決める 2. 識別器(モデル)を作成する 3. データを集め、整形・加工・分割する 4. データを学習させる 5.
結果に応じてデータやアルゴリズムを調整する
機械学習はデータが命 1. データを与えなければ学習できない 2. データの数と質が大事 3. 識別器(モデル)だけではなく、 データも評価しなければならない
識別器(モデル)を評価する 1. 選択したアルゴリズムによって精度は変わる 2. 目的に応じてデータを加工する必要もある 3. アルゴリズムとデータを適切に選んで、 初めて有効な識別器となる
機械学習プログラムを評価する際の注意点 1. どのような学習結果を得たかは、厳密にはわからない 2. データを変えれば結果も変わる 3. 識別器(モデル)を一部変えれば全てが変わる
全体のまとめ
このセッションでお伝えしたこと 1. 学習の仕組みを知る 2. 機械学習プログラムの仕組みを知る 3. 機械学習の仕組みを知る
機械学習、最初の一歩(※) 1. 人は、経験によって学習する 2. 機械学習とは、学習機能を持つプログラムを作ること 3. 簡単なプログラムであれば、作成自体は容易 4. 識別器(モデル)とデータを評価する必要がある ※あくまで最初の一歩です。学習が進むと例外も出てくるでしょう。
ここまで理解すれば、 最初の一歩はクリアです!
本セッションが、みなさまの 一助となりましたら幸いです☺
おつかれさまでした