$30 off During Our Annual Pro Sale. View Details »

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!!

    View Slide

  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

    View Slide

  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

    View Slide

  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」発足人
    ● 独立行政法人 中小企業基盤整備機構 コンサルタント

    View Slide

  5. All Rights Reserv ed. | CONFIDENTIAL
    ©︎2021 All Rights Reserv ed. | CONFIDENTIAL
    ©︎2021
    01 はじめてのNx

    View Slide

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

    View Slide

  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

    View Slide

  8. All Rights Reserv ed. | CONFIDENTIAL
    ©︎2021
    JP
    Nxの行列操作をLivebook上で行ってみる①

    View Slide

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

    View Slide

  10. All Rights Reserv ed. | CONFIDENTIAL
    ©︎2021
    JP
    Nxの行列操作をLivebook上で行ってみる
    コラムに出てくる
    Nxの行列操作を
    ライブコーディング
    で試していきます

    View Slide

  11. All Rights Reserv ed. | CONFIDENTIAL
    ©︎2021 All Rights Reserv ed. | CONFIDENTIAL
    ©︎2021
    02 はじめての機械学習

    View Slide

  12. All Rights Reserv ed. | CONFIDENTIAL
    ©︎2021
    JP
    お題:画像データの「分類」
    ● 「犬」と「猫」を、どこで分割しますか?(xy軸は特徴の強弱)
    毛が白地に黒
    耳が丸い 耳が尖っている
    毛が茶色

    View Slide

  13. 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

    View Slide

  14. All Rights Reserv ed. | CONFIDENTIAL
    ©︎2021
    JP
    2種類の分類だけで無く、複数の種類への分類もあります
    ● 1種類ずつをクラスと呼ぶので、「多クラス分類」と呼ばれます
    角ばっている
    直線で構成 直線で構成できない
    0
    8
    1
    2
    9
    7
    3
    6
    5
    4
    丸い
    ※実際はもっと
    複雑な特徴で
    表される

    View Slide

  15. 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

    View Slide

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

    View Slide

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

    View Slide

  18. All Rights Reserv ed. | CONFIDENTIAL
    ©︎2021 All Rights Reserv ed. | CONFIDENTIAL
    ©︎2021
    03 ディープラーニングを動かす

    View Slide

  19. All Rights Reserv ed. | CONFIDENTIAL
    ©︎2021
    JP
    手書き文字識別…ディープラーニング界の「Hello World」
    ● 直線の式で分割できた「犬」「猫」の例よりは複雑な分割となる
    角ばっている
    直線で構成 直線で構成できない
    丸い
    ※実際はもっと
    複雑な特徴で
    表される
    0
    8
    1
    2
    9
    7
    3
    6
    5
    4

    View Slide

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

    View Slide

  21. 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文字のデ
    ータ+ラベル)
    ココは次回
    ココは次回

    View Slide

  22. All Rights Reserv ed. | CONFIDENTIAL
    ©︎2021
    JP
    Axonによる手書き文字認識をLivebook上で行ってみる
    ● ディープラーニング界の「Hello World」をElixirで実現しました
    https://qiita.com/piacerex/items/6a9a5cc5d0e9dd9398ff

    View Slide

  23. All Rights Reserv ed. | CONFIDENTIAL
    ©︎2021
    JP
    Axonによる手書き文字認識をLivebook上で行ってみる
    コラムに沿って
    Axonによる手書き
    文字認識を
    ライブコーディング
    で行ってみます

    View Slide

  24. All Rights Reserv ed. | CONFIDENTIAL
    ©︎2021 All Rights Reserv ed. | CONFIDENTIAL
    ©︎2021
    04 さぁ、Elixir AI・MLに入門!!

    View Slide

  25. 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)」チャンネルにて共有してください

    View Slide

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

    View Slide

  27. All Rights Reserv ed. | CONFIDENTIAL
    ©︎2021
    JP
    機械学習/ディープラーニングの用語をググって学ぶ②
    ● 学習の要素:
    ○ モデル構造:入力層、中間層、出力層
    ○ 最適化関数:最急降下法、SGD、モメンタム、RMSProp、Adamなど
    ○ 損失関数:MeanSquaredError、BinaryCrossentropyなど
    ○ テクニック:バッチ学習、アーリーストップ、ドロップアウトなど
    ● 現在、主流の学習タイプ:
    ○ 教師あり学習:事前学習、転移学習
    ● クラシックなアルゴリズム:
    ○ 画像識別:CNN
    ○ 音声識別:AutoEncoder
    ○ 自然言語解析:RNN
    ● 現在、流行しているアルゴリズム:
    ○ 画像識別:MobileNet、YOLOなど
    ○ 自然言語解析:Transformer、BERTなど

    View Slide

  28. All Rights Reserv ed. | CONFIDENTIAL
    ©︎2021
    JP
    That’s all for my talk
    Thank you very much

    View Slide