コース
10年生のAI:ディープラーニングとマルチモーダルAI
PyTorchで、画像・テキスト・音のニューラルネットワークを作り、訓練する。
レッスンを順にやろう。終わるころには、ニューロンの出力を計算し、活性化を比べ、NumPyで順伝播を書ける。損失を選び、勾配降下法と誤差逆伝播を説明し、PyTorchで訓練とテストのループを全部書ける。CNNを訓練して画像を分類し、感情分類器を訓練して肯定と否定のレビューを見分け、アテンションがほかのトークンに重みをつけることを説明し、短い音声クリップを分類できる。過学習を減らし、事前学習済みモデルを新しいクラスで微調整し、間違いをグループにして原因を見つけ、未見の画像で野生動物モニターを発表できる。
このレッスンのつかいかた
- 「これをやる」のレッスンからはじめよう。タイトルの下の文が、ひとりでできたら、つぎにすすもう。
- はじめにゲームをしよう。それからクイズをしよう。10問中8問正解で合格。ワークシートは紙。答えは下にある。
- どのレッスンも、前のレッスンの上に積み上がる。訓練のたびにメモを残そう。設定、損失曲線、テストの点数。
- コードのレッスンは、無料のオンラインノートでPythonとPyTorchを使い、GPUもある。小さなモデルと小さなデータセットで足りる。使ってよい公開データセットだけを使おう。許可のない人の写真では、決して訓練しない。
どのレッスンにもゲーム、クイズ、ワークシートがあります。
0/36
ニューラルネットワークの基礎
- 1ニューロン入力、重み、バイアスからニューロンの出力を計算できる。
- 重みつき和にバイアスを足した式を書く。
- 3つの入力で、手で計算する。
- コードで内積を使って計算する。
- 2活性化活性化のReLU、sigmoid、softmaxを比べられる。
- それぞれの活性化をグラフにする。
- ネットワークに非線形の活性化が必要な理由を説明する。
- softmaxでスコアを確率にする。
- 3層とネットワーク層を積んでネットワークにできる。
- 層を行列の積として書く。
- 各層でデータの形を追う。
- ネットワークのパラメータ数を数える。
- 4小さなネットワークNumPyで小さなネットワークの順伝播を書ける。
- NumPyで2層のネットワークを作る。
- 入力のバッチを通す。
- 出力の形を確認する。
ニューラルネットワークの訓練
- 5損失課題に合う損失を選び、計算できる。
- 回帰には平均二乗誤差を使う。
- 分類には交差エントロピーを使う。
- 下がる損失が何を意味するか言う。
- 6勾配降下法勾配が重みを坂の下へ動かすことを説明できる。
- 損失曲線の傾きを求める。
- 学習率で一歩ずつ進む。
- 学習率が大きすぎるときと小さすぎるときを見る。
- 7誤差逆伝播誤差がネットワークを逆に流れる道を、誤差逆伝播でたどれる。
- 小さなネットワークで連鎖律を使う。
- 勾配を1つ、手で計算する。
- 自動微分と照合する。
- 8ネットワークを訓練する小さなネットワークを訓練し、損失を描ける。
- ミニバッチで訓練する。
- 訓練の損失と検証の損失を描く。
- 検証の損失が改善しなくなったら止める。
ディープラーニングのフレームワーク
- 9テンソルPyTorchのテンソルを作り、形を変えられる。
- テンソルを作り、形と型を確認する。
- 形を変え、積み、切り出す。
- テンソルをGPUへ移す。
- 10モジュールtorch.nnのモジュールでモデルを作れる。
- nn.Moduleのサブクラスを作る。
- Linearと活性化の層を使う。
- モデルとパラメータ数を表示する。
- 11オプティマイザオプティマイザのSGDとAdamで訓練できる。
- zero_grad、backward、stepを使う。
- 1つの課題でSGDとAdamを比べる。
- 学習率のスケジュールを使う。
- 12訓練スクリプト訓練とテストのループを全部書ける。
- DataLoaderでデータを読み込む。
- 訓練し、検証し、テストする。
- 最良のモデルを保存する。
コンピュータビジョン
- 13テンソルとしての画像画像をテンソルとして読み込み、正規化できる。
- 画像をチャネル、高さ、幅として読み込む。
- サイズを変え、正規化する。
- バッチを格子にして見せる。
- 14畳み込み畳み込みフィルタがエッジを見つけることを説明できる。
- 3×3のフィルタを、手で画像の上を滑らせる。
- コードでエッジのフィルタを適用する。
- stride、padding、poolingを説明する。
- 15CNN畳み込みニューラルネットワーク、CNNを作れる。
- 畳み込み、活性化、poolingの層を積む。
- 平らにして分類ヘッドを足す。
- ネットワークを通る形を追う。
- 16画像分類器CNNを訓練して画像を分類できる。
- 小さな画像データセットで訓練する。
- テストの正解率を報告する。
- 分類を間違えた画像を見せる。
自然言語処理
- 17トークン化トークン化でテキストをトークンとIDにできる。
- 単語トークンとサブワードトークンを比べる。
- 語彙を作る。
- 系列を同じ長さまでパディングする。
- 18埋め込み埋め込みが似た単語を近くに置くことを説明できる。
- 埋め込み層を使う。
- ある単語に近い単語を探す。
- 埋め込みを2次元で描く。
- 19テキストモデルトークンの列を読むテキストモデルを作れる。
- 埋め込みを平均して1つのベクトルにする。
- 簡単な再帰層を使う。
- 2つを比べる。
- 20感情分類器感情分類器を訓練して、肯定と否定のレビューを見分けられる。
- レビューのデータセットで訓練する。
- 正解率、適合率、再現率を報告する。
- 皮肉のように、モデルをだますレビューを見つける。
Transformer
- 21アテンションアテンションがほかのトークンに重みをつけることを説明できる。
- query、key、valueを説明する。
- 短い文のアテンションの重みを計算する。
- アテンションが離れた語の意味に役立つ理由を言う。
- 22TransformerブロックTransformerブロックの部分のなまえを言える。
- マルチヘッドアテンション、フィードフォワード、正規化層のなまえを言う。
- 残差接続を説明する。
- 位置エンコーディングを説明する。
- 23事前学習済みモデル事前学習済みTransformerを課題に使える。
- 事前学習済みモデルとトークナイザを読み込む。
- それでテキストを分類する。
- 自分の感情分類器と比べる。
- 24アテンションマップアテンションマップの可視化を読める。
- アテンションの重みをヒートマップにする。
- トークンがどの語に注目するか見つける。
- アテンションが完全な説明ではない理由を言う。
音声とマルチモーダルAI
- 25データとしての音音を波形とスペクトログラムにできる。
- 音を読み込み、波形を描く。
- サンプリング周波数を説明する。
- スペクトログラムを作る。
- 26音声分類器短い音声クリップを分類できる。
- スペクトログラムを画像として扱う。
- その上でCNNを訓練する。
- 背景雑音でテストする。
- 27マルチモーダル入力モデルがマルチモーダル入力の画像とテキストを組み合わせることを説明できる。
- 入力ごとの別々のエンコーダを説明する。
- 共有埋め込み空間を説明する。
- マルチモーダルなアプリを3つあげる。
- 28画像とテキスト事前学習済みモデルで画像とテキストのキャプションを合わせられる。
- 画像とキャプションを埋め込む。
- 各画像のキャプションを順位づける。
- テキストのクエリで画像を検索する。
モデルの改善
- 29正則化正則化のドロップアウトと重み減衰で過学習を減らせる。
- ドロップアウトを足す。
- 重み減衰を足す。
- 検証曲線を比べる。
- 30データ拡張データ拡張で、反転した画像と切り抜いた画像を訓練セットに足せる。
- 反転、切り抜き、色の変化を適用する。
- データ拡張は訓練セットだけにする。
- テストの正解率の変化を測る。
- 31転移学習転移学習で、事前学習済みモデルを新しいクラスに微調整できる。
- 事前学習済みの層を凍結する。
- ヘッドを取りかえ、訓練する。
- 凍結を解き、小さい学習率で微調整する。
- 32間違いの分析間違いをグループにし、原因を見つけられる。
- 多くのクラスの混同行列を読む。
- 間違いをグループに分ける。
- いちばん大きいグループへの直し方を選ぶ。
ディープラーニングのプロジェクト
- 33野生動物データ公開の野生動物画像データセットを選び、分けられる。
- 公開のカメラトラップか野生動物のデータセットを選ぶ。
- 5から10の種を選ぶ。
- 場所で分けて、テストが公平になるようにする。
- 34モデルを微調整する画像分類器を野生動物のクラスで微調整できる。
- 事前学習済みモデルを微調整する。
- 検証の正解率を追う。
- 最良のチェックポイントを保存する。
- 35デモ画面アップロードした画像の予測を見せるデモ画面を作れる。
- アップロードした画像を受け取る。
- 上位3種とそのスコアを見せる。
- 確信度が低いときは「わからない」と見せる。
- 36知的な野生動物モニター未見の画像での正解率と、野生動物モニターの主な間違いを発表できる。
- 未見の画像での正解率を報告する。
- 主な間違いとその原因を見せる。
- 次に何を変えるか言う。