Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Livebook+Nx+AxonではじめるElixir AI・ML入門

piacerex
November 22, 2022

Livebook+Nx+AxonではじめるElixir AI・ML入門

piacerex

November 22, 2022
Tweet

More Decks by piacerex

Other Decks in Programming

Transcript

  1. All Rights Reserv ed. | CONFIDENTIAL ©︎2021 LiveView JP #12

    Tuesday, Nov. 22, 2022 Livebook+Nx+Axonで はじめるElixir AI・ML入門 ~ Elixirは誕生から10年で機械学習、ディープラーニングの流れを作り始めた ~ Introduction to Elixir AI and ML devs with Livebook + Nx + Axon Elixir has set the trend in machine learning and deep learning in the decade since its birth Jul. 17, 2022 ver 0.5 created Sep. 26, 2022 ver 0.9 updated Nov. 21, 2022 ver 1.0 updated Nov. 23, 2022 ver 1.1 updated Happy Elixir 10th Anniversary!!
  2. All Rights Reserv ed. | CONFIDENTIAL ©︎2021 All Rights Reserv

    ed. | CONFIDENTIAL ©︎2021 my favotite technologies & implements Twitter/NeosVR:@piacere_ex Github/Qiita:@piacerex I've been a programmer for 40 years. I can write 158 programming languages. And I met Elixir 7 years ago. I own 3 companies that develepment software, and I’m a tech advisor at 2 other companies. I founded DigiDock Consulting Ltd, a consulting and development company specializing in Elixir last year. In all of them, I make heavy use of Elixir and Phoenix. Masakazu Mori / piacere “piacere” is an Italian word, means “Joy” == == Real Online VR / AR
  3. All Rights Reserv ed. | CONFIDENTIAL ©︎2021 JP 「ElixirConf Mori」でググってください(YouTube検索でもOK)

    20分と短時間で英語解説ライブコーディング、Phoenixアプリ開発 ElixirConf US 2021でスピーカーとして全世界デビュー! https://www.youtube.com/watch?v=t5TT0-mI2O4
  4. All Rights Reserv ed. | CONFIDENTIAL ©︎2021 JP 活動 ≒

    事業+コミュニティ+育成(エンジニア、学生) • 北九州市立大学 教授級非常勤講師「プログラミング論」 • 北九州高等専門学校 特命教授 コンピュータ研究部指導員 • ラジオFM KITAQ「Technology Cruising Night」パーソナリティ • 株式会社DigiDockConsulting 常務取締役CTO • ほかIT企業2社経営、技術顧問3社担当 • Elixirコミュニティ「fukuoka.ex」創始者 • Elixir国際カンファレンス「ElixirConf JP」創始者 • 「ElixirImp」「LiveView JP」ファウンダー • AIスクール「AIジョブカレ」福岡校開校者 • Elixirスクール「Elixir |> College」創始者 • 高知県 工業技術センター AI・機械学習 研修講師 • 上級AI開発コミュニティ「IAIFukuoka」発足人 • 独立行政法人 中小企業基盤整備機構 コンサルタント
  5. All Rights Reserv ed. | CONFIDENTIAL ©︎2021 All Rights Reserv

    ed. | CONFIDENTIAL ©︎2021 01 はじめてのNx
  6. All Rights Reserv ed. | CONFIDENTIAL ©︎2021 JP Nxの行列操作をLivebook上で行ってみる① •

    Livebook最上部の「Notebook dependencies and setup」にて Mix.installを使ってNxをインストールします
  7. All Rights Reserv ed. | CONFIDENTIAL ©︎2021 JP Nxの行列操作をLivebook上で行ってみる① •

    Nxを始めるには、下記2つの関数が最初の1歩なので、Livebook で動きを確認して、覚えていきましょう ◦ Nx.tensor() ※3次元以上の行列も作ってみましょう ▪ https://hexdocs.pm/nx/Nx.html#tensor/2 ◦ Nx.reshape() ※1→2次元、1→3次元行列の変換にトライ ▪ https://hexdocs.pm/nx/Nx.html#reshape/3 • ※入門者が脱落しやすい関数なのでキチッと理解 • 次に、Nxのhexdocのうち下記の関数を適当にピックアップして Livebook上で遊んでみましょう ◦ https://hexdocs.pm/nx/Nx.html#functions-element-wise ◦ https://hexdocs.pm/nx/Nx.html#functions-conversion ◦ https://hexdocs.pm/nx/Nx.html#functions-aggregates
  8. All Rights Reserv ed. | CONFIDENTIAL ©︎2021 JP Nxの行列操作をLivebook上で行ってみる② •

    コラムに出てくるNx利用を拾って、hexdocで調べてみましょう https://qiita.com/piacerex/items/6a9a5cc5d0e9dd9398ff
  9. All Rights Reserv ed. | CONFIDENTIAL ©︎2021 All Rights Reserv

    ed. | CONFIDENTIAL ©︎2021 02 はじめての機械学習
  10. All Rights Reserv ed. | CONFIDENTIAL ©︎2021 JP お題:画像データの「分類」 •

    「犬」と「猫」を、どこで分割しますか?(xy軸は特徴の強弱) 毛が白地に黒 耳が丸い 耳が尖っている 毛が茶色
  11. All Rights Reserv ed. | CONFIDENTIAL ©︎2021 JP 分割する線をデータから自動学習するのが「機械学習」 •

    最初はランダムな線から始め、正解率が高まった線で終了させる 毛が白地に黒 耳が丸い 耳が尖っている 毛が茶色 1 0.103 0.211 0.415 0.461 0.307 0.448 0.278 0.583 0.797 0.563 0.837 0.690 0.932 0.971 y = 1.2x - 1.1 0
  12. All Rights Reserv ed. | CONFIDENTIAL ©︎2021 JP 2種類の分類だけで無く、複数の種類への分類もあります •

    1種類ずつをクラスと呼ぶので、「多クラス分類」と呼ばれます 角ばっている 直線で構成 直線で構成できない 0 8 1 2 9 7 3 6 5 4 丸い ※実際はもっと 複雑な特徴で 表される
  13. All Rights Reserv ed. | CONFIDENTIAL ©︎2021 JP たまにハズレも出します…予測は学習した通りにならない •

    全14匹中、1匹のハズレは、正解率92.8%という評価になります 毛が白地に黒 耳が丸い 耳が尖っている 毛が茶色 0 1 0.103 0.211 0.415 0.461 0.307 0.278 0.583 0.797 0.563 0.837 0.690 0.932 0.971 0.503 0.5
  14. All Rights Reserv ed. | CONFIDENTIAL ©︎2021 JP これらは機械学習の一部(全部は使わないのでご安心を) •

    モード:学習、予測 • 評価:正解率(Accuracy)、適合率、再現率、F値、混合行列 • 学習タイプ:教師あり学習、教師なし学習、強化学習 • 識別タイプ: ◦ 教師あり学習:分類(二値分類、多クラス分類)、回帰 ◦ 教師なし学習:クラスタリング、アソシエーション分析 • アルゴリズム: ◦ 教師あり学習:線形回帰、ロジスティック回帰、ランダムフォレスト、勾配ブ ースティング、サポートベクターマシン、ニューラルネットワークなど ◦ 教師なし学習:主成分分析(PCA)、NMF、k-means、混合ガウス、LLEなど ◦ 強化学習:動的計画法、モンテカルロ法、時間的差分学習 • 業務: ◦ 画像識別:画像分類、手書き文字認識、物体検知など ◦ 音声識別:多言語翻訳など ◦ 自然言語解析:感情分析など
  15. All Rights Reserv ed. | CONFIDENTIAL ©︎2021 JP 現実で未知データを予測できるようになるまでの流れ ⅰ)モデルの学習(学習データとラベルの関係性を学習)

    ⅱ)テストデータによる評価(予測とラベルの一致率を確認) ⅲ)未知データに対する予測(期待する正解が出れば成功) 学習データ AI・MLモデル テストデータ 予測 未知データ 予測 関係性を学習 学習済み モデル ラベル ラベル ラベル 一致率で評価 ※悪い場合は 学習をやり直し 一致していれば 良いAI・ML ※悪化した場合は 再度、学習し直し 犬(=0) 犬(=0) 犬(=0) 猫(=1) 犬(=0) 「猫だ」 ⅰ) ⅱ) ⅲ)
  16. All Rights Reserv ed. | CONFIDENTIAL ©︎2021 All Rights Reserv

    ed. | CONFIDENTIAL ©︎2021 03 ディープラーニングを動かす
  17. All Rights Reserv ed. | CONFIDENTIAL ©︎2021 JP 手書き文字識別…ディープラーニング界の「Hello World」

    • 直線の式で分割できた「犬」「猫」の例よりは複雑な分割となる 角ばっている 直線で構成 直線で構成できない 丸い ※実際はもっと 複雑な特徴で 表される 0 8 1 2 9 7 3 6 5 4
  18. All Rights Reserv ed. | CONFIDENTIAL ©︎2021 JP 手書き文字識別で出てくるキーワード(紫は前述と同じ) •

    モード:学習、予測 • 評価:正解率(Accuracy)、適合率、再現率、F値、混合行列 • 学習タイプ:教師あり学習、教師なし学習、強化学習 • 識別タイプ: ◦ 教師あり学習:分類(二値分類、多クラス分類)、回帰 ◦ 教師なし学習:クラスタリング、アソシエーション分析 • アルゴリズム: ◦ 教師あり学習:線形回帰、ロジスティック回帰、ランダムフォレスト、勾配ブ ースティング、サポートベクターマシン、ニューラルネットワークなど ◦ 教師なし学習:主成分分析(PCA)、NMF、k-means、混合ガウス、LLEなど ◦ 強化学習:動的計画法、モンテカルロ法、時間的差分学習 • 業務: ◦ 画像識別:画像分類、手書き文字認識、物体検知など ◦ 音声識別:多言語翻訳など ◦ 自然言語解析:感情分析など
  19. All Rights Reserv ed. | CONFIDENTIAL ©︎2021 JP 今回の手書き文字識別で行うことの流れ ⅰ)60,000文字分データをDLし、学習データとテストデータに分割

    ⅱ)モデルの学習(学習データとラベルの関係性を学習) ⅲ)テストデータによる評価(予測とラベルの一致率を確認) ⅳ)未知データに対する予測(期待する正解が出れば成功) 学習データ (48,000文字) AI・MLモデル テストデータ (12,000文字) 予測 未知データ 予測 関係性を学習 学習済み モデル ラベル (48,000文字) ラベル (12,000文字) ⅱ) ⅲ) ⅳ) ラベル 6 2 「4だ」 ⅰ) MNIST データセット (60,000文字のデ ータ+ラベル) ココは次回 ココは次回
  20. All Rights Reserv ed. | CONFIDENTIAL ©︎2021 JP Axonによる手書き文字認識をLivebook上で行ってみる •

    ディープラーニング界の「Hello World」をElixirで実現しました https://qiita.com/piacerex/items/6a9a5cc5d0e9dd9398ff
  21. All Rights Reserv ed. | CONFIDENTIAL ©︎2021 All Rights Reserv

    ed. | CONFIDENTIAL ©︎2021 04 さぁ、Elixir AI・MLに入門!!
  22. All Rights Reserv ed. | CONFIDENTIAL ©︎2021 JP 実際に、Elixir AI・MLに入門してみましょう

    1. 今回セッションを実際に手元のLivebookで動かしてみる 2. Elixirで機械学習コラムを書いている方々のコラムを写経する ◦ haigoさん、RyoWakabayashiさん、shozさん等 3. Nxでゼロからニューラルネットワークを作ってみる ◦ その講義、近々、無料リリース予定です ▪ Elixirディープラーニングの講義シリーズも無料提供予定 4. 機械学習/ディープラーニングの用語をググって学ぶ ◦ (次のページにて) 5. 実際に試した内容をコラム化する ◦ ぜひDiscord「elixirと見習い錬金術師」の「elixirで機械学習 (nx+Axon)」チャンネルにて共有してください
  23. All Rights Reserv ed. | CONFIDENTIAL ©︎2021 JP 機械学習/ディープラーニングの用語をググって学ぶ① •

    モード:学習、予測 • 評価:正解率(Accuracy)、適合率、再現率、F値、混合行列 • 学習タイプ:教師あり学習、教師なし学習、強化学習 • 識別タイプ: ◦ 教師あり学習:分類(二値分類、多クラス分類)、回帰 ◦ 教師なし学習:クラスタリング、アソシエーション分析 • アルゴリズム: ◦ 教師あり学習:線形回帰、ロジスティック回帰、ランダムフォレスト、勾配ブ ースティング、サポートベクターマシン、ニューラルネットワークなど ◦ 教師なし学習:主成分分析 (PCA)、NMF、k-means、混合ガウス、LLEなど ◦ 強化学習:動的計画法、モンテカルロ法、時間的差分学習 • 業務: ◦ 画像識別:画像分類、手書き文字認識、物体検知など ◦ 音声識別:多言語翻訳など ◦ 自然言語解析:感情分析など
  24. All Rights Reserv ed. | CONFIDENTIAL ©︎2021 JP 機械学習/ディープラーニングの用語をググって学ぶ② •

    学習の要素: ◦ モデル構造:入力層、中間層、出力層 ◦ 最適化関数:最急降下法、SGD、モメンタム、RMSProp、Adamなど ◦ 損失関数:MeanSquaredError、BinaryCrossentropyなど ◦ テクニック:バッチ学習、アーリーストップ、ドロップアウトなど • 現在、主流の学習タイプ: ◦ 教師あり学習:事前学習、転移学習 • クラシックなアルゴリズム: ◦ 画像識別:CNN ◦ 音声識別:AutoEncoder ◦ 自然言語解析:RNN • 現在、流行しているアルゴリズム: ◦ 画像識別:MobileNet、YOLOなど ◦ 自然言語解析:Transformer、BERTなど