ディープラーニング入門演習(全8回)

教材の利用条件: クリエイティブコモンズ 表示-非営利-継承 4.0 国際ライセンス(CC BY-NC-SA 4.0)に基づき、著作者表示・非営利目的・同一ライセンスでの再配布を条件として自由に利用可能である。

資料(動画,スライド)

第1回. ニューラルネットワーク

機械学習は,コンピュータがデータを使用して学習し知的能力を向上させる技術で,データからパターンや関係性を自動で発見する。 入力と正解の組(例:手書き数字画像と数字ラベル)を訓練データとして用いる方式を教師あり学習と呼び,他に教師なし学習や強化学習がある。 ニューラルネットワークは,各ニューロンで入力の重みづけ,合計とバイアスの加算,活性化関数の適用を行い,入力層から出力層へ順伝播する。 その学習は予測と正解の誤差を小さくする最適化であり,バックプロパゲーションにより各層の重みとバイアスを更新する。

スライド資料

[PDF], [パワーポイント] (同じ内容, クリックしてダウンロード)

動画

[動画]

[演習の詳細を表示するには、この行をクリックしてください]

Chromeブラウザの翻訳機能の使い方

画面が英語で読みにくい場合は、以下の手順でページ全体を日本語に翻訳できる。

手順A:ページ上の文字のない場所(余白)を右クリックする。

手順B:表示されたメニューから「日本語に翻訳」を選ぶ。

手順C:ページ全体が日本語に切り替わる。元の英語に戻したい場合は、アドレスバー右側に表示される翻訳アイコン(丸の中にGの形)をクリックし、「英語」を選ぶ。

注意:Googleの翻訳では、専門用語や固有名詞が不自然な日本語になる場合がある。意味が分かりにくい箇所は、元の英語表示に戻して確認するとよい。

演習① Quick, Draw! の体験

Quick, Draw! は,Googleが公開する機械学習の体験サイトであり,登録不要で利用可能である.ユーザが描いた絵を,ニューラルネットワークがリアルタイムで分類する.本演習では,機械学習が持つ知的能力(分類,認識)を体験することを目的とする.

Quick, Draw! のサイト:https://quickdraw.withgoogle.com/

操作手順

  1. アクセスする.タイトル画面が表示される.
  2. Quick, Draw! のサイト:https://quickdraw.withgoogle.com/

  3. 「描いてみよう (Let's Draw!)」のボタンをクリックする.
  4. 画面にお題(例:カヌー)が表示される.「OK」をクリックして開始する.
  5. 20秒以内に,お題の対象をマウスまたはタッチ操作で描く.描いている途中で,画面下にニューラルネットワークによる分類結果の候補がリアルタイムで表示される.正解に到達すると次のお題に進む.20秒経過した場合も次のお題に進む.
  6. 全6問のお題が終了すると,結果画面が表示される.
  7. 結果画面で,描いた絵のいずれかをクリックする.そのお題について,ニューラルネットワークが提示した分類結果の候補が表示される.世界中の他のユーザが描いた同じお題の絵の例もあわせて表示される.
  8. 余裕があれば,意図的に分かりにくい絵を描いて,ニューラルネットワークの分類の限界を確かめる.

ヒント

考察ポイント

演習② Neural Network Playground の体験

Neural Network Playground は,カリフォルニア大学サンディエゴ校(UCSD)のCCoMが公開するWebサイトであり,登録不要で利用可能である.ニューラルネットワークの最小構成を体験できる.ニューロンの数を1個から変化させながら,分類の境目の形状がどのように変化するかを観察できる.本演習では,「ニューラルネットワークは,ニューロンがネットワークを形成する」という仕組みを,最小構成で確認することを目的とする.

Neural Network Playground:https://www.ccom.ucsd.edu/~cdeotte/programs/neuralnetwork.html

注意:本サイトは英語で表示される.操作要素はスライダーとボタンのみであり,英語が不得意でも操作に支障はない.

操作手順

  1. URLにアクセスする.

    Neural Network Playground:https://www.ccom.ucsd.edu/~cdeotte/programs/neuralnetwork.html

  2. ページ上部にデータ点の散布図と,分類の境目を示す曲線(決定境界.2種類のデータ点を分ける線)が表示される.画面下に H=9 と表示されたスライダーを確認する.H は,ネットワーク内部のニューロンの数を表す.
  3. マウスの右クリックと左クリックで、2種類の点を配置。「Clear points」をクリックで全ての点を消去。
  4. 「Start learn」をクリックすることでニューラルネットワークの学習開始。
  5. スライダーを左端(H=1)まで動かす.ニューロンが1個のみとなり,分類の境目が直線1本になることを観察する.
  6. スライダーを少しずつ右に動かし,H=2H=3H=4 と増やしていく.分類の境目が,直線の組み合わせから複雑な形状に変化していく様子を観察する.
  7. スライダーを右端(H=9)まで動かす.赤と青の点の配置にもよるが、曲線的で複雑な分類の境目が形成されることを観察する.
  8. 余裕があれば,同じ作者による関連ページ(手書き数字であるMNIST認識:https://www.ccom.ucsd.edu/~cdeotte/programs/MNIST.html)にアクセスし,手書き数字の分類を体験する.

ヒント

考察ポイント

演習③ A Machine Learning Playground の体験

A Machine Learning Playground(Scienxlab版)は,ニューラルネットワークの学習過程を対話的に可視化するWebサイトであり,登録不要で利用可能である.ニューロンの数,活性化関数,学習の速さなどを変更して,学習をリアルタイムに実行できる.本演習では,「入力の重みづけ,合計とバイアス,活性化関数の適用」「ニューラルネットワークのパラメータ(重みやバイアス)を最適化する」という仕組みを総合的に体験する.

A Machine Learning Playground:https://playground.scienxlab.org/

本サイトは,Googleが公開する TensorFlow Playgroundhttps://playground.tensorflow.org/)の拡張版である.UIと基本操作は原版と同一であり,活性化関数の種類と利用できるデータの追加などの拡張が施されている.他の教材や書籍で「TensorFlow Playground」という名称に出会った際は,同系統のツールである.原版も同じ操作方法で利用できる.

事前準備:演習②を先に体験しておくと理解しやすい.

注意:本サイトは英語で表示される.操作要素は主にボタンとドロップダウンメニューであり,英語が不得意でも直感的に操作できる.

操作手順

  1. 上記URLにアクセスする.

    A Machine Learning Playground:https://playground.scienxlab.org/

  2. 画面左にDATA(使用するデータの選択),中央にFEATURES(入力の選択)とHIDDEN LAYERS(ニューロンの層)の構造図,右にOUTPUT(出力と誤差)が表示される.
  3. 画面上部の実行ボタン(▶)をクリックして学習を開始する.誤差(Training loss と Test loss.訓練時の誤差と検証時の誤差)の値が減少し,右の出力領域で,2種類のデータ点を分類する境目が形成されていく様子を観察する.
  4. 一時停止ボタンで学習を止めることができる.
  5. リセットボタン(↺)で初期状態に戻す.
  6. 左のDATAで,異なるデータ分布を選択する.各データ分布で学習を実行し,分類の難易度の違いを観察する.
  7. 中央のHIDDEN LAYERSの「+」「-」ボタンで,ニューロンの層の数と各層のニューロンの数変更する.変更後に再度学習を実行し,分類の境目の形状の変化を観察する.
  8. 余裕があれば、画面上部のActivation(活性化関数)ドロップダウンで,活性化関数を順に切り替える.各設定で学習を実行し,収束の速さと分類の境目の違いを観察する.
  9. 学習中は,ニューロン間を結ぶ線の(青:正の重み,橙:負の重み)と太さ(重みの絶対値の大きさ)の変化を観察する.
  10. 線にマウスカーソルを重ねると,重みが表示される。.
  11. ニューロンの左下の小さな四角にマウスカーソルを重ねると,バイアスが表示される。.

ヒント

考察ポイント

スライド資料と演習手順の資料は,https://www.kkaneko.jp/mi/index.html で,各回の授業開始時刻までに掲載します。

セレッソコースニュースで授業に関するお知らせを配信します。また,小テスト機能で課題を出します。あわせて確認してください。

本科目の資料は,以下の2種類で構成されています。

  • スライド資料:授業中にプロジェクタで説明するスライド(パワーポイント,PDF同じ内容)
  • 演習手順の資料:演習で使用する

dn-2. ニューラルネットワークの学習不足と過学習

ニューラルネットワークの学習不足と過学習:[PDF], [パワーポイント], [HTML]

  1. テーマ名:人工知能による画像分類,過学習
  2. 内容:ニューラルネットワークによる画像分類、学習曲線(学習と検証のそれぞれでの精度)見て過学習を判断
  3. 事前準備:各自で Google アカウントを取得しておくこと

    Google アカウントの作成手順は、次の動画でも説明している. https://www.youtube.com/watch?v=Wx04o8U1w7c

  4. 基礎:学習曲線、過学習過学習を緩和する技術
  5. 演習で行うこと:学習曲線の考察、過学習を緩和する技術の確認
  6. 演習手順

    次の URL を使用

    https://www.tensorflow.org/tutorials

dn-3. ニューラルネットワークによる画像分類でのデータ拡張

資料:dn-3. ニューラルネットワークによる画像分類でのデータ拡張 [PDF], [パワーポイント], [HTML]

https://www.tensorflow.org/tutorials/images/classification

dn-4. TensorFlow の転移学習のデモ

資料: dn-4. TensorFlow の転移学習のデモ [PDF], [パワーポイント], [HTML]

https://www.tensorflow.org/tutorials/images/transfer_learning_with_hub

dn-5. 顔情報処理(Dlib,InsightFace を使用)

資料: 顔情報処理(Dlib,InsightFace を使用) [PDF], [パワーポイント], [HTML]

  1. テーマ名:顔識別、顔認証
  2. 内容:Dlibを用いた顔識別、顔認証
  3. 事前準備:各自で Google アカウントを取得しておくこと

    Google アカウントの作成手順は、次の動画でも説明している. https://www.youtube.com/watch?v=Wx04o8U1w7c

  4. 基礎:顔識別、データのデータ拡張、顔のランドマーク、顔の特徴ベクトル、顔認証
  5. 演習で行うこと:顔のランドマーク、顔認証などを動作させる
  6. 演習手順

    次の URL を使用

    実験1: https://colab.research.google.com/drive/1S55yEFiQpdIRdjWbdH0zzEYD5VAfklHd?hl=ja#scrollTo=7JdSy61xJGBv

    実験2: https://colab.research.google.com/drive/13fXJ4f2dF-53YI_6i_rAJl17cuYuLE91#scrollTo=PAJ9H2QqRa

dn-6. 3次元データベース,写真からの3次元再構成(Meshroom を使用)

資料: 3次元データベース,写真からの3次元再構成(写真測量)(Meshroom を使用) [PDF], [パワーポイント], [HTML]

  1. テーマ名:3次元データベース,写真からの3次元再構成(写真測量)
  2. 内容:写真をもとに、立体再構成(写真測量)を行う。
  3. 事前準備:NVIDIA GPU 搭載のパソコンが必要である
  4. 基礎:画像の特徴点、Structure from Motion 技術
  5. 演習で行うこと:写真をもとに、立体再構成(写真測量)を行う。
  6. 演習手順

    公開されている次のソフトウェアを使用(利用条件等は,利用者で確認すること)

    Meshroom: https://alicevision.org/

    MeshLab: https://www.meshlab.net/

    使用できる写真のデータ https://www.kkaneko.jp/sample/potato/potato_image.zip

dn-7. TenforFlow のスタイル変換のデモ

資料: TensorFlow のスタイル変換のデモ(TensorFlow, Keras を使用) [PDF], [パワーポイント], [HTML]

  1. テーマ名:TensorFlow のスタイル変換のデモ
  2. 内容:スタイル変換について、Pythonプログラムを実行し結果を見てみる。
  3. 事前準備:各自で Google アカウントを取得しておくこと

    Google アカウントの作成手順は、次の動画でも説明している. https://www.youtube.com/watch?v=Wx04o8U1w7c

  4. 演習手順

    次の URL を使用

    https://colab.research.google.com/github/tensorflow/tensorflow/blob/master/tensorflow/lite/g3doc/models/style_transfer/overview.ipyn

dn-8. TenforFlow のDCGAN のデモ

資料: TensorFlow の DCGAN のデモ(TensorFlow, Keras を使用) [PDF], [パワーポイント], [HTML]

  1. テーマ名:TensorFlow の DCGAN のデモ
  2. 内容:DCGAN について、Pythonプログラムを実行し結果を見てみる。
  3. 事前準備:各自で Google アカウントを取得しておくこと

    Google アカウントの作成手順は、次の動画でも説明している. https://www.youtube.com/watch?v=Wx04o8U1w7c

  4. 演習手順

    次の URL を使用

    https://www.tensorflow.org/tutorials/generative/dcgan