機械学習とニューラルネットワーク - ページ 17

 

深層学習と機械学習のための PyTorch – フル コース (パート 5 ~ 10 の説明)


深層学習と機械学習のための PyTorch – フルコース


パート5

  • 04:00:00 このセクションでは、講師が PyTorch で GPU アクセスを確認し、デバイスに依存しないコードをセットアップする方法を説明します。コマンド「torch.cuda.is_available()」を使用して、ユーザーは PyTorch が GPU にアクセスできるかどうかを確認できます。さらに、PyTorch を実行するには、利用可能な場合は GPU を使用するようにデバイス変数を設定するか、デフォルトで CPU を使用するように設定する必要があります。 "args.device=torch.device('cuda' if torch.cuda.is_available() else 'cpu')" を Python スクリプトで使用します。インストラクターは、デバイスに依存しないコードをセットアップすることが、PyTorch を使用する場合のベスト プラクティスであることを強調しています。

  • 04:05:00 このセクションでは、インストラクターが、GPU を使用すると計算が高速になり、テンソル演算などの数値計算を扱う機械学習モデルにどのように役立つかについて説明します。 GPU を使用するには、テンソルとモデルを GPU に転送する必要があり、PyTorch では to メソッドを使用して簡単に転送できます。コードは、GPU が使用可能かどうかに関係なく実行されるように、デバイスに依存しないようにすることができます。同様に、必要に応じてテンソルを CPU に戻すこともできます。これには `cpu()` メソッドを使用できます。インストラクターは、デバイスの問題は PyTorch で 3 番目に一般的なエラーであり、テンソルとモデルが保存されているデバイスの種類を覚えておくことをお勧めします。

  • 04:10:00 このセクションでは、インストラクターが GPU で PyTorch を使用する基本について説明します。彼は、CPU と GPU を切り替える方法と、GPU でテンソルを使用して NumPy 計算を使用する際のエラーを回避する方法について説明しています。彼はまた、learn.pytorch.io で利用できる一連の演習と追加のカリキュラムを通じて、学習者が学んだことを実践することを奨励しています。演習は、前のセクションで説明した内容に基づいており、学習者は PyTorch ドキュメントを使用して演習を完了することをお勧めします。最後に、インストラクターは、2 つの画面を設定してトーチをインポートすることにより、Colab でこれらの演習に取り組む方法についてのヒントを提供します。

  • 04:15:00 このセクションでは、インストラクターが PyTorch コースの演習と追加のカリキュラムについて説明します。演習はコードベースで、演習ごとにテンプレートが含まれています。追加のカリキュラムは読み取りベースであり、インストラクターは、PyTorch の基本チュートリアル、クイック スタート、および tensor セクションを 1 時間かけて学習し、「What's a Tensor?」を視聴することを推奨しています。ビデオ。インストラクターは、データの準備とテンソルへの変換、事前トレーニング済みモデルの選択または構築、損失関数の選択と最適化、トレーニング ループの構築、モデルの適合、モデルの評価、実験を含む PyTorch ワークフローの概要も説明します。訓練されたモデルを改善し、保存してリロードします。インストラクターは、学習者がコードとドキュメントに従い、リソースを検索し、再試行し、PyTorch フォーラムで質問することを奨励しています。

  • 04:20:00 ビデオのこのセクションでは、講師はまず Colab で新しいノートブックを開き、「01 PyTorch ワークフロー」というタイトルを付けます。彼は、彼らが一緒にコーディングし、データの準備と読み込み、PyTorch での機械学習モデルの構築、モデルのトレーニング、モデルの評価、モデルの保存/読み込みを含む PyTorch のエンドツーエンドのワークフローの作成に焦点を当てると説明しています。 .インストラクターはまた、ニューラル ネットワーク用の PyTorch のすべてのビルディング ブロックを含む PyTorch の nn モジュールを使用すると述べています。

  • 04:25:00 このセクションでは、インストラクタは、ニューラル ネットワークで使用される計算グラフの基本的なビルディング ブロックを調べることによって、PyTorch で torch.nn を使用する方法について説明します。これらのビルディング ブロックを組み合わせることで、データ サイエンティストや機械学習エンジニアは、さまざまな種類のニューラル ネットワークを構築できます。インストラクターは、PyTorch ワークフローの最初のステップの重要性を強調しています。これは、モデルがパターンを学習するためにデータを準備して数値表現にロードすることです。データのエンコードに使用される数値表現のタイプは、データ タイプによって異なります。 2 番目のステップでは、ニューラル ネットワークを構築して数値表現のパターンを学習し、学習したパターンを画像認識やスパム分類などの特定のタスクに使用します。

  • 04:30:00 このセクションでは、インストラクターが機械学習の 2 つの部分からなるゲームを紹介します。これには、データを数値表現に変換し、モデルを構築してその表現のパターンを見つけることが含まれます。次に、インストラクターは線形回帰式を使用して既知のデータを作成し、このプロセスを紹介します。数式の重みとバイアスは、モデルがさまざまな例を見て学習するパラメーターとして使用されます。 Python のコードを使用して、数値の範囲を作成し、変数 X に値を割り当て、重みに X とバイアスを掛けたものに等しい Y 式を作成します。 X と Y の長さと値が表示され、X と Y の最初の 10 個の値が表示されます。

  • 04:35:00 このセクションでは、インストラクターが、機械学習におけるトレーニング セットとテスト セットにデータを分割することの重要性について説明します。彼は、大学のコースと試験の類推を使用して概念を説明しています。トレーニング セットはすべてのコース教材に似ており、検証セットは模擬試験のようなもので、テスト セットは最終試験です。目標は、一般化を達成して、モデルが目に見えないデータに適応できるようにすることです。インストラクターは、正確なモデルを作成するためには、データを正しく分割することが不可欠であることを強調しています。

  • 04:40:00 PyTorch フル コースのこのセクションでは、インストラクターが機械学習モデルにおける一般化の重要性と、トレーニングとテストで一般的に使用される 3 つのデータ セット (トレーニング セット、検証セット、テスト セット) について説明します。また、これらの各セットに使用される一般的なパーセンテージ分割についても説明しています。通常、トレーニング セットにはデータの 60 ~ 80% が含まれ、テスト セットには 10 ~ 20% が含まれます。次に、インストラクタは、分割ごとに適切な数のサンプルを選択するインデックスを使用して、X 値と Y 値を持つサンプル データ セットを使用してトレーニング セットとテスト セットを作成する方法を示します。最後に、彼は、より複雑なデータ セットでの検証セットのユース ケースがよくあるものの、最も一般的に使用されるのはトレーニング セットとテスト セットであると説明しています。

  • 04:45:00 このセクションでは、インストラクターは、トレーニング データとテスト データを比較するために使用される「プロット予測」と呼ばれる関数を作成することによって、データを視覚化することの重要性を強調します。この関数は、X トレイン、Y トレイン、X 検定、Y 検定、および予測をパラメーターとして受け取り、matplotlib ライブラリで散布図を使用してトレーニング データを青色でプロットします。テスト データは、同じ散布関数を使用して緑色でプロットされます。この関数は、予測があるかどうかもチェックし、予測がある場合は、散布関数も使用してそれらをプロットします。データを視覚化することで、理解しやすく解釈しやすくなります。

  • 04:50:00 ビデオのこのセクションでは、インストラクターが機械学習モデルのトレーニングと評価のプロセスについて説明します。彼らは、テストデータの値を正確に予測するために、トレーニングデータでモデルをトレーニングすることが目的であると説明しています。彼らは、単純な線形データセットを使用してこれを示しています。トレーニング データは青色でプロットされ、テスト データは緑色でプロットされています。次に、インストラクターは線形回帰の概念を紹介し、線形回帰の PyTorch モデルを構築する次のセクションのステージを設定します。また、Google Colab のトラブルシューティングのヒントもいくつか提供しています。

  • 04:55:00 ビデオのこのセクションでは、純粋な PyTorch を使用して線形回帰モデルを作成する方法を学びます。講師は、PyTorch は nn.module の上に構築されていると説明しています。これは、PyTorch モデルのレゴのビルディング ブロックのようなものです。 PyTorch のほとんどすべてが nn.module から継承され、モジュールには他のモジュールを含めることができるため、複雑なニューラル ネットワークを簡単に構築できます。次に、インストラクターは、init 関数を使用してコンストラクターを作成し、nn.parameter を使用して重みパラメーターを作成し、torch.rand を使用してランダムなパラメーターに設定するプロセスを順を追って説明します。インストラクターはrequires_gradとdtypeの設定方法も説明します。

パート6

  • 05:00:00 このセクションでは、インストラクターが PyTorch を使用して線形回帰モデルを作成する方法を説明します。モデルのクラスを作成し、重みとバイアスのパラメーターで初期化することから始めます。これらは、モジュール属性に割り当てられると、パラメーターのリストに自動的に追加されます。次に、線形回帰式に基づくモデルの計算を定義する forward メソッドを作成します。モデルの目標は、ランダム パラメーターを更新して、機械学習の前提である勾配降下法によってトレーニング データのパターンを表すことです。

  • 05:05:00 このセクションでは、インストラクターがランダム値を調整して、データの重みとバイアスの望ましい値をより適切に表すプロセスについて説明します。これは、勾配降下法と逆伝播法という 2 つの主要なアルゴリズムを使用して行われます。 「requires grad equals true」の使用は、モデルを使用して行われた計算を介して勾配を追跡し、アルゴリズムを正しい方向に微調整するものとして説明されています。オブジェクト指向プログラミングの重要性と、これらのアルゴリズムの実装における PyTorch の役割が強調され、コードの直感を得るのに役立つ追加のリソースが提案されています。インストラクターはまた、現在のモデルが既知のパラメーターを持つ単純なデータセットを扱っている一方で、より複雑なデータセットには多くの場合、nn からのモジュールによって定義されたパラメーターがあるという事実を強調しています。

  • 05:10:00 このセクションでは、インストラクターが最初の PyTorch モデルの作成から得られる主なポイントについて説明します。 PyTorch のすべてのモデルは nn.modgable から継承し、 forward メソッドをオーバーライドして、モデル内で行われている計算を定義する必要があります。さらに、モデルが学習すると、torch.auto grad モジュールを使用して、勾配降下と逆伝播を介して重みとバイアス値を更新します。インストラクターは、この概念を完全に理解するために、トランスクリプトにリンクされている 2 つのビデオをチェックすることをお勧めします。さらに、インストラクターは、ニューラル ネットワークに必要なすべてのビルディング ブロックを含む torch.nn モジュールなど、いくつかの PyTorch モデル ビルディングの必需品を紹介します。

  • 05:15:00 このセクションでは、インストラクターが torch.nn、torch.nn.module、torch.optim、および torch.utils.dataset を含む PyTorch の基本的なモジュールについて説明します。 torch.nn.module は、すべてのニューラル ネットワーク モジュールの基本クラスであり、forward 計算で何が起こるかを定義する forward メソッドを上書きする必要があります。 Torch.optim には、モデルの値を最適化するためのアルゴリズムが含まれています。これは、ランダムな値で始まり、理想的な値をより適切に表現するように調整されます。インストラクターは、PyTorch のチート シートについても、ライブラリをさらに詳しく調べるための役立つリソースとして言及しています。

  • 05:20:00 このセクションでは、講師が PyTorch ワークフローにいくつかの色とコードを追加し、データセットの作成、モデルの構築とトレーニング、モデル パラメーターの最適化、モデルの評価、および実験による改善に使用される重要な PyTorch モジュールについて説明します。次に、インストラクターは、線形回帰モデルのインスタンスを作成し、ドット パラメーターを使用して値のテンソルを確認することにより、PyTorch モデルの内容を確認する方法を示します。また、講師はランダム シードを設定して、一貫した値を持つパラメーターを作成します。

  • 05:25:00 セクションでは、深層学習モデルが重みとバイアス パラメーターのランダムな値で初期化される方法について学びました。また、再現性のためにランダム シード値を使用することの重要性についても学びました。ディープ ラーニングの基本的な前提は、トレーニング データを使用して、勾配降下法と逆伝播法を使用して、これらのランダムな値を理想的な値に可能な限り近づけるように調整することです。次のセクションのビデオでは、モデルのランダム パラメーター値を使用して予測を行う方法について説明します。

  • 05:30:00 このセクションのビデオでは、PyTorch モデルの予測能力をテストするプロセスを説明しています。モデルの forward メソッドは、入力データ X を受け取り、それをモデルに渡して予測を行います。このビデオでは、10 個の変数で構成される X テストを入力し、モデルの出力 Y pred を観察することによって、モデルの予測力をテストする方法を示します。このビデオでは、PyTorch モデルの作成中に発生する可能性がある一般的なエラーにも対処し、その修正を提供します。

  • 05:35:00 このセクションでは、前に定義した Ford メソッドを使用してテスト データを実行することにより、モデルの予測を確認します。この予測は、理想的な予測とは驚くほどかけ離れているようです。コードはトーチ推論モードも導入します。これは、予測を行うときに勾配追跡を無効にするために使用されるコンテキスト マネージャーであり、PyTorch がより少ないデータを追跡し、予測を高速化できるようにします。 torch no grad は同様のことを行うことができますが、PyTorch のドキュメントとビデオで提供されている Twitter スレッドで説明されているように、推論モードには no grad よりもいくつかの利点があります。したがって、推論モードは現在、推論を行うための推奨される方法です。

  • 05:40:00 このセクションの動画では、PyTorch で予測を行う際に torch.inference_mode コンテキスト マネージャーを使用することの重要性について説明しています。これは、モデルがトレーニング モードではなく推論モードであることを保証するためです。ビデオでは、ランダム パラメーターを使用してモデルを初期化するとパフォーマンスが低下する可能性があることも強調されており、ゼロ値の使用や別のモデルからのパラメーターの転送など、初期化のオプションがいくつか提供されています。ただし、ビデオの主な焦点は、損失関数を使用して未知のパラメーターから既知のパラメーターに移動することでモデルをトレーニングすることです。これは、モデルの予測のパフォーマンスがどれほど悪いかを測定します。ビデオでは、「損失関数」、「コスト関数」、および「基準」という用語は、機械学習ではしばしば同じ意味で使用されることに注意してください。

  • 05:45:00 このセクションでは、インストラクターが損失関数の概念を紹介します。損失関数は、モデルの予測が理想的な出力と比較してどの程度間違っているかを測定するために使用されます。インストラクターは、赤と緑のドット間の距離を測定する例を使用して、損失関数の計算方法を説明します。このビデオでは、モデルの損失を考慮し、重みやバイアス値などのパラメーターを調整して損失関数を改善するオプティマイザーの重要性についても説明しています。このセクションでは、損失関数とオプティマイザーの原則は、2 つのパラメーターを持つモデルを扱う場合でも、数百万のパラメーターを持つモデルを扱う場合でも、コンピューター ビジョン モデルでも、直線上の点を予測するモデルのような単純なモデルでも、変わらないことを説明して締めくくります。

  • 05:50:00 PyTorch for Deep Learning & Machine Learning コースのこのセクションでは、インストラクターは、オプティマイザーを使用してモデルのパラメーターを損失関数を下げる値に向けてナッジし、モデルの精度を向上させることの重要性を説明します。予測。 PyTorch には、損失関数とオプティマイザーを実装するための機能が組み込まれており、インストラクターは、予測値と実際の値の絶対差を測定する平均絶対誤差とも呼ばれる L1 損失に注目します。インストラクターは、平均絶対誤差を示すカラフルなグラフを提供し、PyTorch の NN モジュールを使用して損失関数を実装する方法を示します。モデルをトレーニングする目的は、予測値と実際の値の間の距離を最小化し、ひいては平均絶対誤差の全体値を最小化することです。

  • 05:55:00 このセクションでは、インストラクターが機械学習におけるオプティマイザーの役割について説明します。オプティマイザーは、損失関数と連携して、重みやバイアスなどのモデル パラメーターを調整し、損失を最小限に抑えます。 PyTorch には torch.optim があり、確率的勾配降下法 (SGD) や Adam など、さまざまな最適化アルゴリズムが利用できます。どちらもモデル パラメーターをランダムに調整して損失を最小限に抑えますが、特定の問題に最も適したものを選択する必要があります。ほとんどの場合、SGD を選択します。SGD はランダムな調整から始まり、それ以上の調整ができなくなるまで、損失を最小限に抑える方向に調整を続けます。オプティマイザーには、params (オプティマイザーが最適化する必要があるパラメーター) と、最適化時に設定する最も重要なハイパーパラメーターである学習率 (LR) の 2 つの引数が必要です。

パート 7

  • 06:00:00 このセクションでは、講師がモデル パラメーターとハイパー パラメーターとは何か、およびディープ ラーニング プロセスにおけるそれらの役割について説明します。モデル パラメーターはモデルが設定する値であり、ハイパー パラメーターはデータ サイエンティストまたは機械学習エンジニアによって設定される値です。学習率はハイパー パラメーターであり、その値によって最適化中のパラメーターの変化の大きさが決まります。学習率が小さいと変化が小さくなり、学習率が大きいと変化が大きくなります。インストラクターは、特定の問題に対して適切な損失関数とオプティマイザーを選択することの重要性についても話します。最後に、インストラクターは PyTorch でトレーニング ループを構築するプロセスを説明します。

  • 06:05:00 このセクションでは、インストラクターが PyTorch でトレーニング ループとテスト ループを構築するために必要な手順について説明します。最初のステップでは、データを複数回ループして予測を改善し、モデルを順方向に通過させることで損失を最小限に抑えます。講師は、フォワード パスはデータがモデルのフォワード関数を通過するときであり、損失はモデルの予測をグラウンド トゥルース ラベルと比較することによって計算されると説明しています。次に、インストラクターはオプティマイザーを紹介し、逆方向パスが損失に関する各パラメーターの勾配を計算し、オプティマイザーがモデルのパラメーターを調整して勾配降下による損失を改善できることを説明します。インストラクターは、PyTorch が逆伝播と勾配降下の数学を実装していることを強調しており、数学のバックグラウンドが限られている人でも機械学習について簡単に学ぶことができます。

  • 06:10:00 このセクションでは、インストラクターが勾配降下の概念を紹介します。勾配降下は、機械学習でモデル パラメーターを最適化するために使用されます。丘の例を使用して、インストラクターは、丘の底に到達するために傾斜が緩やかな方向に向かってモデルを移動する必要があることを説明します。これはゼロ損失を表します。次に、講師は勾配降下法を実行するためのコードの作成に進みます。これには、エポック数の設定と、"requires grad equals true" パラメーターを使用したモデルのトレーニング モードへの設定が含まれます。インストラクターはまた、pytorch モデルにはさまざまなモードが利用可能であると述べ、視聴者にさまざまな設定を試してみることを勧めています。

  • 06:15:00 ビデオのこのセクションでは、インストラクターが PyTorch モデルをトレーニングするためのフォワード パスの実装について説明します。フォワード パスでは、データをモデルのフォワード関数に渡して予測を行い、MAE 損失関数を使用して実際のトレーニング値と比較します。 optimizer.zero_grad() 関数も導入されました。これは、損失を逆方向に計算し、勾配降下法を使用してモデル パラメーターを更新する前に、すべての勾配をゼロに設定します。これらのステップは、モデルがどのように学習し、コースの後のセクションでさらに最適化および機能化されるかを理解する上で重要です。

  • 06:20:00 このセクションでは、インストラクターは PyTorch のトレーニング ループの 5 つの主要なステップについて説明します。これには、フォワード パス、損失の計算、オプティマイザー勾配のゼロ化、逆伝播の実行、勾配降下によるオプティマイザーのステップが含まれます.インストラクターは、これらのステップの順序があいまいになることがありますが、バックプロパゲーションの後にオプティマイザーのステップを維持することが重要であると指摘しています。インストラクターは、ループ全体での蓄積を防ぐために、各反復でオプティマイザーの勾配をゼロにする必要がある理由についても説明します。インストラクターは、これらの手順をよりよく理解するためにトレーニング ループの作成を練習することを提案し、さらに学習するための歌と追加のリソースを提供します。

  • 06:25:00 ビデオのこのセクションでは、プレゼンターが PyTorch のトレーニング ループの手順を要約します。これには、フォワード パス、損失値の計算、オプティマイザーの勾配のゼロ化、および損失関数の逆伝播の実行が含まれます。トレーニング ループは、モデルがトレーニング データのパターンを学習するのに役立ちますが、テスト ループは、目に見えないデータのパターンを評価します。プレゼンターは、オプティマイザーの勾配をゼロにする理由についても説明し、損失関数の勾配を計算する逆伝播の概念を紹介します。

  • 06:30:00 このセクションでは、講師が PyTorch 深層学習における勾配と損失関数曲線の概念について説明します。パラメーターに対して 'requires grad' を true に設定することにより、PyTorch は各パラメーターの勾配を追跡し、それらすべての損失関数曲線を作成できます。逆伝播とその後の勾配降下の目的は、最小損失を表す曲線の最低点を計算することです。インストラクターは、機械学習における勾配の概念と、勾配降下がステップ ポイントでどのように機能するかについて説明します。ゼロ勾配損失を後方に最適化し、ステップを最適化し、勾配を要求することにより、PyTorch はこの作業の多くを舞台裏で行い、勾配を自動的に追跡し、曲線の底を見つけます。

  • 06:35:00 このセクションでは、インストラクターがオプティマイザーと学習率について説明します。オプティマイザーはモデル パラメーターを取得し、自動勾配計算のために torch autograd と呼ばれるメカニズムを使用して各パラメーターの曲線を作成し、曲線の底に近づけます。学習率は、オプティマイザーが各ステップでパラメーターを変更する大きさと小ささを決定します。収束に近づくにつれて、より小さいステップが実行されます。さらに、インストラクターは、モデルの初期化、オプティマイザーの定義、学習率、フォワード パス計算、後方伝播、およびオプティマイザー ステップを含む、モデルのトレーニングに関連する 5 つのステップに触れます。最後に、インストラクターは、このループを関数に変換できると述べています。これにより、コードの繰り返しを避けることができます。

  • 06:40:00 「ディープ ラーニングと機械学習のための PyTorch – フル コース」のこのセクションでは、モデルがパターンとデータを学習する方法であるため、インストラクターは PyTorch でトレーニング ループを記述することの重要性を強調しています。このビデオでは、バックプロパゲーションと勾配降下法に関する追加のリソースも提供しています。インストラクターは、損失関数とオプティマイザーの選択は各問題に固有であると説明し、回帰問題には MAE 損失と L1 損失、分類問題にはバイナリ クロス エントロピー損失を推奨します。このセクションは、2 つのパラメーターと 1 つのエポックのみを持つモデルを使用したトレーニング ループのデモンストレーションで終了します。

  • 06:45:00 このセクションでは、インストラクターは引き続き PyTorch を使用して機械学習モデルのトレーニングを行い、モデル パラメーターが勾配降下によって更新されるにつれて損失関数がどのように低下するかを示します。インストラクターは、損失値が低いほどモデルの進行状況が良好であることを示しており、機械学習のランダム性による値のわずかな違いは問題にならないことを強調しています。次にインストラクターは視聴者に、コードを 100 エポック実行し、損失値をどれだけ低くできるかを予測するように要求します。最後に、講師はテストの重要性について説明し、テスト コードの記述に関する次のビデオを紹介します。

  • 06:50:00 このセクションでは、インストラクターが、Google やドキュメントなどの外部リソースを使用して新しいトピックを調査および学習することの重要性について説明します。彼らは、学習者が 100 エポックのトレーニング コードを実行してみて、重みとバイアスの値と予測を調べることを奨励しています。次にインストラクターは、テスト コードと model.eval() 関数の目的を説明します。これは、ドロップアウトやバッチ ノルム レイヤーなど、テストに不要なモデルの設定をオフにします。また、torch.no_grad() の目的と、その段階では学習が行われていないため、テスト中に勾配追跡をオフにする方法についても説明しています。最後に、テスト モードでモデルのフォワード パスを記述してセクションを終了します。

  • 06:55:00 このセクションのビデオでは、PyTorch でモデル ゼロを使用してテスト予測を作成し、テスト損失を計算する方法を説明しています。テスト予測は、モデルがこれまでに見たことのないテスト データ セットに対して行われます。これは、見たことのない材料に関する知識を評価するのと同じです。このビデオでは、悪い結果が得られないように、モデルを評価する前にテスト データ セットをモデルに見せないようにすることの重要性を説明しています。このコードは、モデルが 100 エポックのトレーニングを行っている間、10 エポックごとに損失と何が起こっているかを出力します。各エポックで損失が減少することがわかります。このビデオでは、モデルの精度の概念についても説明しています。後で印刷することもできます。

パート8

  • 07:00:00 このセクションでは、インストラクターがモデルをトレーニングし、単純なデータセットで予測を行った前のビデオを確認します。次に、予測された赤い点を実際の緑の点に揃えるモデルの能力を改善する方法を視聴者に求めます。おそらくモデルをより長くトレーニングすることによってです。その後、講師はさらに 100 エポックのコードを再実行し、モデルのテストの損失と予測が大幅に改善されたことを示します。インストラクターは、モデルのトレーニングと評価のこのプロセスは PyTorch を使用した深層学習の基本であり、コースの残りの部分で使用されることを強調しています。また、有用な値を格納するために空のリストを使用してモデルの進行状況を追跡することの重要性についても説明しています。

  • 07:05:00 このセクションでは、損失値を追跡することが重要な理由と、損失値を使用してモデルの進行状況を監視し、将来の実験で改善する方法についてインストラクターが説明します。提示されたコード スニペットは、後でプロットできるように、エポック カウント、現在の損失値、および現在のテスト損失値を別のリストに追加します。インストラクターは、リストから生成された損失曲線のプロットを示し、その重要性を説明します。理想的な損失曲線は、最初は高く、時間の経過とともに減少し、損失値の減少を表します。

  • 07:10:00 このセクションでは、損失値を PyTorch から NumPy に変換して Matplotlib でプロットする方法をインストラクターが説明します。彼は、Matplotlib は NumPy でのみ動作するため、それらを NumPy に変換する必要があることを示しています。彼はまた、トレーニング損失曲線とテスト損失曲線を追跡する方法を説明し、ある時点でそれらが密接に一致する場合、それはモデルが収束しており、損失が可能な限りゼロに近づいていることを意味すると述べています。次に、インストラクターはテスト ループを順を追って説明し、テスト データをモデルに渡し、テスト損失値を計算し、トレーニング中に何が起こっているかを出力して、何が起こっているかの値を追跡する必要があることを説明します。最後に、彼はこれらすべてのステップを関数に入れることを提案し、ステップを覚えておくために非公式の PyTorch 最適化ループ ソングを提供します。

  • 07:15:00 このセクションで学習します - PyTorch でモデルを保存およびロードするための 3 つの主要な方法です。最初のメソッドである torch.save を使用すると、PyTorch オブジェクトを Python の pickle 形式で保存できます。 2 番目のメソッドである torch.load を使用すると、保存された PyTorch オブジェクトをロードできます。 3 番目のメソッドである torch.nn.module.loadStateDict を使用すると、モデルの保存された辞書をロードしたり、状態辞書を保存したりできます。これについては、次のビデオで説明します。これらの方法は、特に大規模なモデルを操作する場合やモデルを他のユーザーと共有する必要がある場合に、モデルを保存して再利用するために重要です。

  • 07:20:00 このセクションでは、講師が状態辞書の概念と PyTorch におけるその重要性について説明します。 PyTorch は、重みやバイアスなどの学習可能なパラメーターを含む、モデルの状態を保持する状態辞書と呼ばれる辞書に、モデルの重要なパラメーターを格納します。インストラクターは、 torch.save および torch.load メソッドを使用して状態ディクショナリを保存することにより、PyTorch モデルの保存とロードを行う方法を示します。さらに、インストラクターは、状態ディクショナリだけでなく、モデル全体を保存することの長所と短所を読んで理解するという追加の課題をユーザーに提供します。最後に、講師はモデルを保存し、models というフォルダーを作成するための PyTorch コードを共有します。

  • 07:25:00 ビデオのこのセクションでは、インストラクターが状態辞書を保存する推奨方法を使用して PyTorch モデルを保存する方法を示します。モデルには名前が付けられ、pathlib ライブラリを使用してパスが作成されます。パスの準備ができたら、モデル状態の辞書は torch.save() 関数を使用して保存されます。最初のパラメーターはオブジェクトで、2 番目のパラメーターはモデルが保存されるパスです。インストラクターは、LS コマンドを使用して、モデルが models ディレクトリに保存されているかどうかを確認する方法を示します。このビデオでは、保存したモデルをローカル マシンまたは Google ドライブにダウンロードするためのガイドも提供しています。さらに、インストラクターは視聴者がドキュメントを先読みし、 torch.load() 関数を使用して保存されたモデルをロードする方法を学習することで、自分自身に挑戦することを奨励します。

  • 07:30:00 このセクションでは、インストラクターが PyTorch モデルのロードとトーチ ドット ロード メソッドの使用方法について説明します。モデルからのクラスの以前に保存されたパラメーターのディクショナリは、状態デックとして読み込まれます。このセクションでは、線形回帰モデル クラスの新しいインスタンスを作成し、保存された状態デックをそれに読み込む方法を示します。 torch nn モジュールのロード状態デック メソッドを使用すると、状態ディクショナリをモデル インスタンスに直接ロードできますが、トーチ ドット ロード メソッドは F を取り込んで、前の状態デックが保存されるモデルの保存パスに渡します。

  • 07:35:00 このセクションでは、インストラクターが PyTorch でのモデルの保存と読み込みについて説明します。テスト データを使用して新しい予測を作成し、同等の equals equals 関数を使用してそれらを元のモデルの予測と比較することにより、読み込まれたモデルをテストします。インストラクターは、モデル予測の新しいセットを作成し、同等性を再度テストすることにより、同等でないモデルをトラブルシューティングします。モデルの保存と読み込みの主な側面をカバーしていますが、詳細についてはチュートリアルを確認することをお勧めします。インストラクターは、これまでに説明したすべての手順を、次のいくつかのビデオでまとめる予定です。

  • 07:40:00 ビデオのこのセクションでは、インストラクターは、PyTorch のインポート、モデルの保存と再読み込み、デバイスに依存しないコードの作成など、PyTorch を使用した深層学習のワークフロー全体を説明します。利用可能か、そうでない場合はデフォルトで CPU。インストラクターは、視聴者が一時停止して自分でコードを再作成することを奨励し、ガイダンスと役立つヒントも提供します.このビデオでは、ダミー データ セットを作成し、データ ポイントをプロットする方法についても説明します。これは、青い点から緑の点を予測することを学習するモデルの構築に使用されます。

  • 07:45:00 このセクションでは、インストラクターは、線形回帰式 y = 重み x 機能 + バイアス を使用してデータを作成する方法を示します。彼らは、これらの値を推定するモデルを構築する原則は同じままであり、トレーニングとテストの値を予測するために使用される x と y の特徴の作成に進むと説明しています。また、データをトレーニング セットとテスト セットに分割し、データをプロットしてデータのパターンを視覚化します。

  • 07:50:00 このセクションでは、インストラクターは、指定された線形ダミー データの PyTorch 線形モデルを構築する概念を紹介します。 nn.module をサブクラス化して、線形回帰モデルを作成し、レイヤーを使用してパラメーターを初期化します。 nn.Linear レイヤーは、フィーチャを入力および出力として取り込み、線形回帰モデルと同じ式を使用して、入力データに線形変換を適用します。モデルの入力形状と出力形状はデータに依存しており、インストラクターは、入力および出力機能のさまざまな例がコース全体で見られることを強調しています。

  • 07:55:00 このセクションでは、インストラクターが PyTorch の線形レイヤーを既存のレイヤーとして使用してモデルを作成する方法を説明します。線形層は線形回帰の形式であり、y は x、転置プラス b、in 特徴、out 特徴に等しくなります。 nn.module をサブクラス化することにより、線形レイヤーを作成し、forward メソッドをオーバーライドして線形レイヤーを介してデータを渡すことができます。これにより、事前定義されたフォワード計算が実行されます。 PyTorch の torch.nn の威力は、舞台裏でパラメーターを作成し、手動で初期化する必要がないことです。さらに、インストラクターは、線形変換、プローブ レイヤー、全結合レイヤー、高密度レイヤー、集中フローなど、線形レイヤーのさまざまな名前について説明します。

パート9

  • 08:00:00 このセクションでは、インストラクターは、たたみ込み、プーリング、パディング、正規化、再帰、変換、線形、およびドロップアウトを含む torch.nn で利用可能なさまざまなレイヤーについて説明します。これらの層の事前構築済みの実装は、一般的な深層学習タスクのために PyTorch によって提供されます。次に、損失関数とオプティマイザ関数を使用して、以前に構築された PyTorch 線形モデルのトレーニングに進みます。オプティマイザーは、モデルの重みとバイアスのパラメーターを最適化して、損失関数を最小限に抑えます。これは、モデルがどの程度間違っているかを測定します。講師は、このタスクのために L1 損失関数と SGD オプティマイザーをセットアップします。

  • 08:05:00 ビデオのこのセクションでは、インストラクターがオプティマイザーに適切な学習率を選択することの重要性について説明しています。ステップが小さすぎたり大きすぎたりすると、モデルのパフォーマンスに悪影響を及ぼす可能性があるからです。フォワード パスの実行、損失値の計算、オプティマイザーのゼロ化、逆伝播の実行、重みとバイアスの調整など、トレーニング ループの作成に関連する手順についても説明します。さらに、インストラクターは torch.manual_seed() を使用して再現可能な結果を確保し、10 エポックごとにトレーニング損失とテスト損失を出力するコードを提供することを提案しています。

  • 08:10:00 PyTorch コースのこのセクションでは、インストラクターがデータのデバイスに依存しないコードを記述する方法を説明し、エラーを回避するには同じデバイスですべての計算を行うことが重要であることを強調します。モデルとデータは、CPU または CUDA の同じデバイス上にある必要があります。 X トレインと Y トレインを使用してターゲット デバイスにトレーニング データとテスト データを配置することで、デバイスに依存しないコードが作成され、モデルのトレーニング時により正確な結果が得られます。講師はまた、推定されたパラメーターが理想値に近いことを示して、ステート デックを使用してモデルを評価する方法についても説明します。このセクションは、ユーザーが予測を作成して評価し、元のデータにプロットするという課題で終わります。

  • 08:15:00 このセクションでは、インストラクターは、PyTorch モデルを評価モードにし、モデルがこれまで見たことのないテスト データで予測を行うことの重要性について説明します。モデルの予測を視覚化するためにプロット予測関数を導入しますが、Matplotlib は PyTorch ではなく NumPy で動作するため、CUDA デバイス タイプ テンソルを NumPy に変換しようとすると、タイプ エラーが発生します。最初にテンソル ドット CPU を使用してテンソルをホスト メモリにコピーすることで、このエラーを解決します。また、講師はパス モジュールを使用してトレーニング済みのモデルを保存およびロードすることを視聴者に推奨しています。

  • 08:20:00 このセクションでは、インストラクターが Python の path lib モジュールを使用して PyTorch モデルを保存およびロードする方法を説明します。最初に、PyTorch の拡張子 .PTH を使用してモデルの保存パスが作成されます。モデル状態ディクショナリは、torch save メソッドを使用して保存されます。インストラクターは、状態デックを明示的に表示することは、多くのパラメーターを持つモデルでは実行できない可能性があることに注意しています。保存されたモデルをロードするために、保存された状態ディクショナリは、ロード状態デッケッド メソッドを使用し、保存された PyTorch オブジェクトのファイル パスを渡して、線形回帰モデル V2 の新しいインスタンスにロードされます。 PyTorch の事前構築された線形レイヤーの使用と forward メソッドでの呼び出しについても説明します。

  • 08:25:00 このセクションでは、インストラクターはトーチ推論モードを使用して評価することにより、ロードされたモデルが保存されたモデルと同じパラメーターを持っていることを確認して終了します。次に、ユーザーがモデルの構築、トレーニング、保存から再利用まで PyTorch ワークフローを完了したことを祝福します。次にインストラクターは、learnpytorch.io の書籍版のコース教材でユーザーが演習と追加のカリキュラムを見つけることができると指摘します。また、セクションごとに番号が付けられたエクササイズ ノートブック テンプレートも提供され、PyTorch ディープ ラーニング GitHub リポジトリのエクストラとエクササイズの下にあります。

  • 08:30:00 このセクションでは、インストラクターがワークフローの演習を完了する方法と、PyTorch コースの追加リソースを見つける方法について説明します。彼は、解決策の例を見る前に、自分で演習を試すことの重要性を強調しています。このセクションは、対象となる PyTorch ワークフローの概要で締めくくります。これには、データの準備、テンソルへの変換、モデルの構築または選択、損失関数とオプティマイザーの選択、モデルのトレーニング、予測の作成、およびモデルの評価が含まれます。次のセクションでは、機械学習における最大の問題の 1 つである PyTorch を使用したニューラル ネットワークの分類に焦点を当てます。インストラクターは、コースの GitHub ディスカッション ページや PyTorch ドキュメントなど、コース全体でヘルプを取得するためのリソースを提供します。彼はまた、分類の問題とは何かを説明し、電子メールがスパムであるかどうかを予測するなどの例を挙げています。
     
  • 08:35:00 PyTorch コースのこのセクションでは、講師が深層学習におけるさまざまな種類の分類問題について説明します。バイナリ分類は、スパムかスパムでないかのように 2 つのオプションしかない場合です。複数クラスの分類は、画像を寿司、ステーキ、またはピザに分類するなど、2 つ以上のオプションがある場合です。マルチラベル分類は、ウィキペディアの記事にタグを割り当てるなど、例に複数のラベルを付けることができる場合です。インストラクターは実際の例を提供し、概念を徹底的に説明します。彼はまた、バイナリ分類問題で犬と猫の画像を分類し、マルチクラス分類問題でさまざまな動物の画像を分類する例を使用して、バイナリ分類とマルチクラス分類を区別しています。

  • 08:40:00 このセクションでは、インストラクターがニューラル ネットワーク分類モデルのアーキテクチャと、分類モデルの入力および出力形状について説明します。彼は、機械学習モデルの数値入力の重要性を強調し、数値入力がデータに応じてさまざまな形になることが多いことを説明しています。また、フィッティングと予測のためのカスタム データを作成するプロセスについても説明し、ニューラル ネットワーク分類のモデリングに関連する手順についても説明します。さらに、インストラクターは、分類モデルの損失関数とオプティマイザーを設定する方法、トレーニングと評価ループを作成する方法、モデルを保存して読み込む方法、非線形性を利用する方法、および分類モデルを評価する方法について説明します。彼は、機械学習アルゴリズムを使用して食品の写真とその予測を数値で表現する方法の例を提供して締めくくります。

  • 08:45:00 このセクションでは、PyTorch for Deep Learning & Machine Learning コースのインストラクターが、数値エンコーディング プロセスと出力形式について詳しく説明します。機械学習アルゴリズムへの入力は数値的にエンコードされた画像であり、予測確率にいくつかの関連する出力があります。インストラクターは、予測確率が 1 に近いほど、モデルの出力の信頼性が高くなると述べています。この出力は、複数のサンプルを調べることから得られたものであり、アルゴリズムとデータを調整してこれらの予測を改善することができます。エンコードされた出力は、人間が理解できるラベルに変更する必要があります。さらに、インストラクターは、バッチ サイズ、カラー チャネル、高さ/幅など、テンソルの形状について説明します。 32 のバッチ サイズは一般的な方法であり、形状は解決する問題によって異なります。

  • 08:50:00 このセクションでは、インストラクターが分類モデルのアーキテクチャについて説明します。これは、ニューラル ネットワークの概要です。入力レイヤーの形状は、数値表現としてエンコードする必要がある特徴の数によって決まります。出力レイヤーは、多くの場合、特定のクラスの予測確率です。ユーザーが決定する必要がある隠れ層の数、隠れ層ごとのニューロン、および出力層の形状などのハイパーパラメーターがあります。インストラクターは、PyTorch を使用してレイヤーとニューロンを作成するためのコード例も示し、解決する問題によって形状が異なることに注意します。

  • 08:55:00 このセクションでは、インストラクターは、隠れ層の活性化、出力の活性化、損失関数、オプティマイザーなどの分類問題のコンポーネントについて説明し、それぞれの例を示します。次に、インストラクターはマルチクラス分類の問題を紹介し、複数の出力機能を持つようにアーキテクチャを構築する方法について説明します。最後に、講師は Google CoLab で PyTorch を使用してコードを記述することに移行し、すべてのコードが GitHub リポジトリに保存されることを聴衆に思い出させます。インストラクターは、機械学習の問題をデータから始めることの重要性も強調しています。

パート10

  • 09:00:00 このセクションのビデオでは、scikit-learn ライブラリを使用してカスタム データセットを作成することに焦点を当てています。 make circles データセットがインポートされ、1000 個のサンプルが作成され、ランダム性のためにノイズが追加されます。 X と Y の長さが出力されます。これは、フィーチャとラベルのサンプルが 1000 個あることを示しています。次に、X と Y の最初の 5 つのサンプルが出力されます。これは、データが既に数値であり、2 つのクラス (0 とバイナリ分類用の 1) しかないことを示しています。次に、X1 および X2 とラベル付けされたフィーチャを使用して、パンダ データ フレームが作成されます。ランダム サンプリングは、大規模なデータセットを探索するための潜在的に役立つアプローチとして説明されています。

  • 09:05:00 コースのこのセクションでは、インストラクターが、バイナリ分類のために PyTorch でニューラル ネットワークを構築する練習に使用されるおもちゃのデータセットについて説明します。データセットは scikit-learn を使用して生成され、2 項分類問題の 2 つのクラスを表す異なる色の 2 つの円で構成されています。インストラクターは、データの視覚化がデータセットを理解し、ニューラル ネットワークを構築する準備にどのように役立つかを示します。問題の入力と出力の形状、およびデータセットをトレーニング セットとテスト セットに分割する方法についても説明します。これについては、コースの次のセクションで説明します。

  • 09:10:00 このセクションでは、インストラクタが機械学習における入力と出力の形状をチェックすることの重要性について説明します。これらはエラーの一般的な原因です。 NumPy 配列を使用してデータセットの入力および出力形状を表示し、データを PyTorch テンソルに変換する方法を示します。データをテンソルに変換し、トレーニング セットとテスト セットに分割するプロセスは、この例で使用されているようなおもちゃのデータセットであっても、機械学習の重要なステップです。インストラクターは、PyTorch をインポートして、使用されているバージョンが 1.10 であることを確認する方法、NumPy 配列を PyTorch テンソルに変換する方法、およびデータのトレーニング セットとテスト セットを作成する方法を示します。

  • 09:15:00 このセクションでは、インストラクターは、コマンド「torch.float」を使用して、データを NumPy 配列から PyTorch のデフォルト タイプの float 32 に変換する方法を示します。そうしないと、後でエラーが発生する可能性があります。次に、インストラクターは、scikit-learn の「train_test_split」関数を使用して行われるランダム分割を使用して、データをトレーニング セットとテスト セットに分割する方法を示します。コード例は、機能とラベルを関数に渡すときに表示される順序を示しています。インストラクターは、指定された値がテスト データとして使用されるデータのパーセンテージである「test_size」パラメーターと、ランダム シードのように機能する「random_state」パラメーターの使用についても説明します。

  • 09:20:00 このセクションのビデオでは、PyTorch の Scikit-learn ライブラリを使用してデータをトレーニング セットとテスト セットに分割する方法について説明します。トーチ ドットの手動シードは、同じランダム分割が使用されるように設定されており、それらが比較したいものと同じであることを保証します。ビデオでは、トレーニング セットとテスト セットの長さを使用して、それぞれ 800 と 200 のサンプルがあり、使用するデータ セットを構成していることを説明しています。次のステップは、赤と青のドットを分類するモデルを作成して選択することです。これを達成するために、アクセラレータで実行されるようにデバイスを含む不可知論的コードをセットアップし、モデルを構築し、損失を定義し、PyTorch を使用してトレーニングとテスト ループを作成します。これについては、次のセクションで詳しく説明します。

  • 09:25:00 このセクションでは、PyTorch 用に GPU をセットアップし、デバイスに依存しないコードを作成して、コードが CPU 上で問題なく実行されるようにする方法を学びます。次に、nn.Module をサブクラス化してモデルを構築し、4 つの主な手順に従います。まず、nn.Module をサブクラス化するモデルを作成します。次に、データの形状を処理できる 2 つの Linear Layers を作成します。 3 番目に、モデルの forward パスの概要を示す forward メソッドを定義します。 4 番目に、モデル クラスのインスタンスをインスタンス化し、それをターゲット デバイスに送信します。私たちのモデルは、ニューラル ネットワークを使用して赤と青の円を分離するために使用されることを学びます。

  • 09:30:00 コースのこのセクションでは、インストラクターが、入力機能を処理できるニューラル ネットワーク レイヤーを定義する方法について説明します。彼は続けて、各レイヤーに必要なフィーチャの数は、使用するデータ セットによって異なると説明しています。 X に 2 つの特徴があるこの例では、最初の層は n 特徴が 2 に等しい「n 線形」として定義され、2 番目の層はモデルがより多くのパターンを学習できるように 5 つの特徴で定義されます。インストラクターは、形状の不一致エラーを回避するために、2 番目のレイヤーのイン フィーチャを前のレイヤーのアウト フィーチャと一致させる必要があることも説明します。最後に、フォード パスの概要を説明し、セルフ レイヤー 2 (セルフ レイヤー 1 と X を入力として受け取る) を返す Ford メソッドを定義します。

  • 09:35:00 このセクションでは、講師がモデル クラスのインスタンスをインスタンス化し、それをターゲット デバイスに送信する方法を説明します。彼は単純な多層ニューラル ネットワークを作成する方法を示し、2 つの入力機能を使用して TensorFlow プレイグラウンドで実演し、それらを 5 つのニューロンを持つ非表示層に渡します。この非表示層は、1 つの出力機能を持つ別の層にフィードします。彼はネットワークをいくつかのデータに適合させ、テストの損失は約 50% です。これは、モデルがランダムに推測した場合、クラスが 2 つしかないため、約 0.5 の損失になることを意味します。

  • 09:40:00 ビデオのこのセクションでは、講師が Fig Jam というホワイトボード ツールを使用して、バイナリ分類問題のニューラル ネットワークを視覚的に表現します。インストラクターは、バイナリ分類の問題では、ランダムに推測すると約 50% の精度が得られると説明しています。ニューラル ネットワークは、入力層、隠れユニット、および出力層を使用して構築されます。インストラクターは、層の形状が一致する必要があることを強調します。 TensorFlow プレイグラウンドは、この種のデータでニューラル ネットワークを構築する際に探索し、挑戦するための楽しい方法として提案されています。インストラクターは後で、入力機能を処理できる 2 つの線形レイヤーを使用して以前に作成したニューラル ネットワークをさらに少ないコードで複製し、それらをアップスケーリングしてネットワークの学習を改善する方法について説明します。

  • 09:45:00 このセクションでは、講師が PyTorch で nn.Sequential を使用してニューラル ネットワーク モデルを複製する方法を示します。 nn.Sequential を使用すると、ほとんどのコードが舞台裏で実装されるため、モデルのコードを簡素化できます。ビデオの前のセクションで説明したように、インストラクターは、単純で簡単な操作に nn.Sequential を使用する方が、サブクラス化よりも効率的であると説明しています。ただし、サブクラス化により、より複雑なフォワード パスの作成など、より複雑な操作が可能になります。このセクションでは、PyTorch の柔軟性と、モデルを作成するさまざまな方法に焦点を当てます。インストラクターは、モデルを介してデータを渡し、状態ディクショナリを分析する方法も示します。

  • 09:50:00 このセクションでは、インストラクターは、2 層のニューラル ネットワークを実装しながら、PyTorch がバックグラウンドで重みとバイアスのパラメーターを自動的に作成する方法を示します。インストラクターは、モデルが乱数でインスタンス化され、PyTorch が逆伝播および勾配降下プロセス中にこれらの値をわずかに変更して、データをより適切に適合または表現するという事実を強調しています。また、インストラクターは、多数の機能を持つ多くのレイヤーを持つことの潜在的な複雑さと、これらの値を手動で追跡する方法が冗長になる可能性があることも示します。最後に、インストラクターはトレーニングされていないモデルを使用して予測を行い、データのトラブルシューティングと視覚化の重要性を強調します。

  • 09:55:00 このセクションでは、深層学習用のモデルを作成した後に損失関数とオプティマイザーを選択する方法をビデオで説明しています。必要な損失関数とオプティマイザのタイプは、通常、作業中のデータセットの性質によって異なります。回帰問題の場合、平均絶対誤差または平均二乗誤差が適切な場合があります。一方、分類の問題については、バイナリ クロス エントロピーまたはカテゴリカル クロス エントロピーを選択できます。このビデオは、損失関数がモデルの予測の正確さを測定するのに役立つことを指摘して締めくくっています。

PyTorch for Deep Learning & Machine Learning – Full Course
PyTorch for Deep Learning & Machine Learning – Full Course
  • 2022.10.06
  • www.youtube.com
Learn PyTorch for deep learning in this comprehensive course for beginners. PyTorch is a machine learning framework written in Python.✏️ Daniel Bourke develo...
 

深層学習と機械学習のための PyTorch – フルコース (パート 11-16)


深層学習と機械学習のための PyTorch – フルコース


パート11

  • 10:00:00 ビデオ コースのこのセクションでは、インストラクターが、ニューラル ネットワーク分類のために PyTorch で一般的に使用されるさまざまな損失関数とオプティマイザーの概要を説明します。インストラクターは、バイナリ クロス エントロピー損失、クロス エントロピー損失、平均絶対誤差、平均二乗誤差、および回帰と分類のタスクで通常使用されるものについて説明します。二項分類タスクの場合、提供されるコード例には、ロジットを含む torch.nn BCE 損失と BCE 損失が含まれます。このビデオでは、深層学習におけるロジットの概念についても説明し、一般的に使用される 2 つのオプティマイザーである SGD と Adam についても説明します。インストラクターは、他にも利用可能なオプティマイザーがあるかもしれないが、これらの 2 つに固執することで、多くの問題で良い結果を得ることができると述べています。

  • 10:05:00 ビデオのこのセクションでは、講演者は深層学習と機械学習のために PyTorch で損失関数とオプティマイザーをセットアップします。損失関数は BCE with logits loss と呼ばれ、シグモイド活性化関数が組み込まれています。講演者は、ニューラル ネットワークの活性化関数について詳しく知りたい場合は、オンライン リソースを利用できると説明しています。選択されたオプティマイザーは確率的勾配降下法 (SGD) で、学習率は 0.1 で、パラメーターは損失に関してモデル パラメーターを更新するように設定されます。最後に、スピーカーは評価指標を作成します。

  • 10:10:00 このセクションでは、講師が評価指標としての精度の重要性について説明し、pytorch を使用して精度関数を作成する方法を示します。精度関数は、予測をグラウンド トゥルース ラベルと比較し、サンプルの総数から正しい予測のパーセンテージを返します。インストラクターは、フォワード パス、損失計算、オプティマイザーのゼロ勾配、逆伝播、勾配降下など、pytorch トレーニング ループに含まれる手順の概要も説明します。手順が一覧表示され、各手順の重要性が説明されています。

  • 10:15:00 このセクションでは、生のロジットから予測確率、予測ラベルへと進む方法をインストラクターが説明します。モデルの生の出力はロジットと呼ばれ、バイナリ分類のシグモイドやマルチクラス分類のソフトマックスなどのアクティベーション関数に渡すことで、予測確率に変換できます。次に、予測確率は、二項分類の場合は四捨五入するか、多クラス分類の場合は argmax を取得することによって、予測ラベルに変換できます。講師はまた、活性化関数の概念をレイヤーとは別のものとして説明し、線形レイヤーを通過したデータが内積とバイアス項を介して受信データに線形変換を適用する方法を示します。

  • 10:20:00 ビデオのこのセクションでは、インストラクターがシグモイド活性化関数を使用して、ロジットと呼ばれるモデルの生の出力をバイナリ分類に使用できる予測確率に変換する方法を説明します。インストラクターは、モデル ロジットでシグモイド関数を使用して predprobs を作成する方法を示します。これをトーチ ドット ラウンド関数に渡して、予測ラベルを取得できます。これらの予測ラベルは、多くの場合 0.5 に設定された決定境界を使用して、入力が属するクラスを決定するために使用されます。インストラクターは、生のロジットに対してこのステップを実行して、予測確率がテスト データと同じ形式であることを確認することの重要性も強調しています。

  • 10:25:00 このセクションのビデオでは、活性化関数を使用してモデルから生のロジットを予測確率に変換し、それらを予測ラベルに変換するプロセスについて説明しています。ステップはかなりの量のコードで示され、y-pred は、予測、ロジットから pred プローブ、pred ラベルまでを含む完全なステップを使用して y-pred プローブから作成されます。モデルの予測はテスト ラベルと比較され、同じ形式がスクイーズ関数を使用して作成されます。次のステップは、トレーニングとテストのループを構築することです。これには、フォワード パスの実行、損失の計算、および勾配の最適化が含まれます。このビデオは、次のビデオに進む前に視聴者が自分でこれを試すことを奨励しています。

  • 10:30:00 このセクションでは、インストラクターが再現性のために手動シードを設定します。具体的には、CUDA デバイスでの操作用に CUDA ランダム シードを設定します。次に、データをターゲット デバイスに配置し、トレーニングと評価のループを構築します。インストラクターは、生のロジットが出力され、予測確率とラベルに変換するために torch.round と torch.sigmoid を通過する必要がある forward パスのちょっとした情報を強調しています。最後に、損失と精度を計算します。精度を計算する必要はありませんが、モデルのトレーニング中にさまざまなメトリックを視覚化すると役立つ場合があることに注意してください。

  • 10:35:00 このセクションのビデオでは、BCE 損失と PyTorch でのロジット損失を伴う BCE の違いについて説明しています。ロジット損失のある BCE は、入力としてロジットを想定し、シグモイド層と BCE 損失を組み合わせて、数値的に安定させます。一方、BCE 損失は入力として予測確率を想定しているため、ロジットで torch sigmoid を呼び出して確率に変換する必要があります。このビデオでは、勾配のゼロ化、逆伝播の実行、勾配を減らすためのパラメーターの更新など、PyTorch 最適化ループの手順についても概説しています。同様に、テストまたは予測を行うときは、モデルを推論モードにし、シグモイド関数を呼び出してテスト ロジットを処理して予測確率を取得する必要があります。

  • 10:40:00 このセクションでは、インストラクターが分類モデルのテスト損失と精度を計算する方法について説明します。テスト損失を計算するために、講師はロジット損失関数で BCE を使用し、それを Y テスト ラベルと比較します。テストの精度を計算するために、講師は Y true 変数と Y pred 変数で精度関数を使用します。変数の順序は、インストラクターが scikit-learn のメトリクス パッケージに基づいているため、精度関数では逆になります。最後に、インストラクターはエポック番号、トレーニングの損失と精度、テストの損失と精度を 10 エポックごとに出力します。インストラクターは、ユーザーがこの巨大なコードを実行し、発生したエラーを修正することを奨励しています。

  • 10:45:00 このセクションでは、講師が前のセクションのモデル トレーニングの結果について説明しますが、精度の大幅な向上は見られませんでした。インストラクターは、モデルの理想的な精度は 100 で、損失値はゼロであるべきだと提案しています。ただし、現在のモデルの精度は 50% を下回っており、これはランダムな推測に相当します。パフォーマンスの低下の理由を特定するために、インストラクターは、モデルによって行われた予測を視覚化することを提案します。インストラクターは、この可視化プロセスで使用されるヘルパー関数ファイルから「プロット決定境界」と呼ばれる関数をインポートします。インストラクターは、機械学習の基礎と ml ops について詳しく知りたい人のために、madewithml.com というリソースも推奨しています。

  • 10:50:00 このセクションでは、インストラクターは、Python の「pathlib」および「request」モジュールを使用して、プログラムによって PyTorch 学習リポジトリからヘルパー関数をダウンロードする方法を説明します。インストラクターは、ヘルパー関数のパスが既に存在するかどうかを確認するプロセスを示し、存在しない場合は、ヘルパー関数を「helper_functions.py」というファイルとしてダウンロードするように要求します。インストラクターは、ダウンロードしたヘルパー関数からメソッド「plot_predictions」と「plot_decision_boundary」を正常にインポートする方法を示します。これらはコースの後半で使用されます。最後に、インストラクターは、「plot_decision_boundary」関数を使用してヘルパー関数を視覚化するテストを実行します。これにより、トレーニング セットの決定境界が正常にプロットされます。

  • 10:55:00 ビデオのこのセクションでは、プレゼンターは、モデルの決定境界の視覚化に示されているように、循環データを直線で分離する際の線形モデルの限界について説明します。モデルの精度を改善するための解決策は、レイヤーを追加することです。つまり、ニューラル ネットワークの深さを増やすことで、データのパターンについて学習する機会を増やすことができます。モデルのパフォーマンスを向上させる他の方法には、トレーニング データの量を増やしたり、学習率やバッチ サイズなどのハイパーパラメーターを調整したりすることが含まれます。外部の Python スクリプトからヘルパー関数をインポートして使用することも、一般的な方法として言及されています。

パート12

  • 11:00:00 このセクションでは、インストラクターがモデルを改善する方法について説明します。隠れユニットの追加、より長いフィッティング、アクティベーション関数の変更、学習率の調整、損失関数の変更などです。インストラクターは、モデル内のパラメーターの数を増やすと、データをより適切に表現できる可能性があると指摘していますが、パラメーターが多すぎると、単純なデータセットに対してモデルが複雑になりすぎる可能性があります。また、インストラクターは、モデルの構造とハイパーパラメーターを変更することで、実験がモデルの改善にどのように役立つかについても説明します。最後に、インストラクターは、レイヤーの追加、隠れユニットの数の増加、アクティベーション関数の追加、および最適化関数の変更によってモデルが改善される可能性がある方法の例をグラフィカルに示します。

  • 11:05:00 このセクションでは、講師がモデルの観点からモデルを改善する方法について説明します。彼は、モデルの結果を改善するために機械学習エンジニアやデータ サイエンティストが変更できる値である、ハイパー パラメーターの概念について説明しています。インストラクターは、モデルのハイパー パラメーター (隠れユニットの数、レイヤーの数、エポックの数など) を変更する方法を実演します。彼はまた、これらの変更を一度に 1 つずつテストして、どの変更が改善または低下をもたらすかを特定することの重要性を強調しています。最後に、パラメーターとハイパー パラメーターの違いと、この区別が重要な理由について説明します。

  • 11:10:00 このセクションでは、インストラクターはより多くの隠れユニットを含む 3 層モデルを作成し、このモデルをより長くトレーニングすることでより良い結果が得られるかどうかを確認します。 forward メソッドは、追加の非表示ユニットと追加のレイヤー全体を使用して、各レイヤーを介してデータを渡すようにオーバーライドされます。高速化を活用する方法は、すべての操作を一度に実行することも実証されています。 3 層モデルのインスタンスが作成され、ターゲット デバイスに送信されます。その後、損失関数とオプティマイザーが作成され、モデル 1 のトレーニングと評価のループが続きます。

  • 11:15:00 このセクションのビデオは、nn.module がサブクラス化されて新しいモデルである Circle Model V1 が作成され、隠しユニットと追加のレイヤーが追加された前のビデオの続きです。ここで、ワークフローの次のステップは損失関数を選択することです。ビデオでは、同じオプティマイザーである torch.optin.SGD() を使用して、前と同じように nn.BCEWithLogitsLoss() を使用します。このビデオでは、学習率を 0.1、エポック数を 1000 に設定し、データをターゲット デバイス (CPU または GPU) に配置します。このビデオでは、エポックを介したループも示し、トレーニング データを新しいアーキテクチャのモデルに渡し、損失を計算し、トーチの autograd を使用してパラメーターを更新します。

  • 11:20:00 ビデオのこのセクションでは、インストラクターがモデルの精度と損失を評価する手順について説明します。損失関数は、予測されたラベル値を受け取り、それらを実際のラベル値と比較します。精度関数は、モデルの予測の精度を判断するために使用されます。オプティマイザーは、モデルのパラメーターを調整して、データをより適切に表現するために使用されます。テストは、モデルの eval() メソッドを呼び出し、推論モードをオンにすることによって行われます。ロジットは入力データをモデルに渡すことによって作成され、次に torch.round() および torch.sigmoid() 関数を使用してそれらを予測に変換します。テスト データの損失と精度が計算され、モデルのトレーニング中に 100 エポックごとに出力されます。

  • 11:25:00 PyTorch for Deep Learning & Machine Learning コースのこのセクションでは、インストラクターがモデルが機能しない場合のトラブルシューティング手法について説明します。たとえば、モデルが何かを学習できるかどうかを確認するために小さな問題をテストするなどです。彼は、線形モデルが直線に適合することができた前のセクションのデータセットを複製し、それを使用して現在のモデルが何かを学習できるかどうかを確認することを提案しています。循環データ。インストラクターはまた、モデルを改善するいくつかの方法には、レイヤーや隠れユニットの数などのハイパーパラメーターの変更、および活性化関数と損失関数の変更が含まれると述べています。

  • 11:30:00 このセクションでは、インストラクターが線形回帰式を使用してデータセットを作成し、モデルが何らかの問題で機能するかどうかを確認します。このデータ セットは x 回帰と呼ばれ、y 値ごとに 1 つの x 値の 100 個のサンプルが含まれています。次に、インストラクターはデータのトレーニング分割とテスト分割を作成し、それらの長さを確認します。最後に、ヘルパー関数ファイルのプロット予測関数を使用して、データを視覚的に検査します。

  • 11:35:00 このセクションでは、プレゼンターがサイド プロジェクトについて説明し、モデルが直線データ セットに適合するかどうかを確認してから、非直線データ セットを適合させます。入力フィーチャの数を 2 から 1 に変更してデータに一致させ、出力フィーチャを 10 に維持してモデルにできるだけ多くのパラメータを与えることで、モデル 1 を新しいデータ セットに適合するように調整します。また、レイヤーを介してデータを渡す NN ドット シーケンシャルを使用してモデル 2 を作成し、損失と最適化機能を設定します。

  • 11:40:00 このセクションでは、講師が L1 損失関数を導入して回帰問題を最適化し、学習率 0.1 の SGD オプティマイザーを使用してモデルのパラメーターを最適化します。データセットをロードしてターゲット デバイスに配置した後、モデルはループを使用して 1,000 エポックにわたってトレーニングされます。各エポックでは、フォワード パスが実行され、損失が計算され、パラメーターがバックワード関数とステップ関数を使用して更新されます。トレーニングの進行状況は、100 エポックごとにエポック、損失、およびテスト損失と共に出力されます。モデルが最適化されると、損失は減少します。

  • 11:45:00 ビデオのこのセクションでは、インストラクターが直線データセットを作成し、それに適合するようにモデルをトレーニングした前のセクションを要約します。彼らは、モデルが何かを学習していることを確認し、学習者が学習率のさまざまな値を試して、機械学習モデルを試すことを提案しています。次に、インストラクターは、評価モードをオンにして、推論とも呼ばれる予測を行う方法を説明します。また、プロット予測関数の使用方法を教えており、データがモデルと同じデバイス上にないためにエラーが発生した場合、テンソル入力でドット CPU を呼び出して解決します。

  • 11:50:00 このセクションでは、インストラクターが機械学習と深層学習モデルにおける非線形性の重要性を紹介します。線形関数だけでは、曲線などの非線形関数を必要とするデータの複雑なパターンを正確に表現することはできません。ニューラル ネットワークは、線形関数を非線形関数 (活性化) と組み合わせて構築し、複雑なデータ パターンをモデル化します。インストラクターは、非線形アクティベーションとディープ ラーニング モデルにおけるその役割をカバーする今後のビデオを示唆しています。

  • 11:55:00 このセクションでは、インストラクターが機械学習とニューラル ネットワークにおける非線形性の威力について説明します。データは常に直線で構成されるとは限らないため、機械学習では非線形性が不可欠です。次にインストラクターは、make circles 関数を使用して非線形データを作成およびプロットし、データを時制に変換し、PyTorch と sklearn のトレーニング テスト分割関数を使用して分割をトレーニングおよびテストする方法を示します。

パート13

  • 12:00:00 このセクションでは、PyTorch for Deep Learning & Machine Learning コースのインストラクターが、モデル構築の重要な要素である非線形性を紹介します。インストラクターは視聴者に、TorchNN モジュールで特定の非線形関数を見つけるように要求します。これには、入力に対して数学演算を実行するためのプーリング レイヤー、パディング レイヤー、アクティブ化関数を含めることができます。 n dot sigmoid や n dot relu などの非線形活性化の例が提供されています。次に、インストラクターは、PyTorch で非線形性を使用して分類モデルを構築する方法を示します。非線形性とは、グラフが直線ではないことを意味し、線形とはその逆を意味します。

  • 12:05:00 PyTorch for Deep Learning & Machine Learning コースのこのセクションでは、インストラクターが非線形データの概念を紹介し、ニューラル ネットワークと機械学習モデルが数百次元の数値を扱う方法を紹介します。非線形データを処理します。新しいニューラル ネットワークであるサークル モデル V2 は、"relu" と呼ばれる非線形活性化関数を追加して線形演算を実行するコンストラクターといくつかのレイヤーを持つクラスを使用して作成されます。この関数は、モデルの負の入力をゼロにし、正の入力をそのままにします。次に、新しいモデルがシグモイド関数を介して渡され、出力が決定されます。

  • 12:10:00 このセクションでは、インストラクターは視聴者に、TensorFlow Playground で 2 つの隠れ層と 5 つのニューロンを持つニューラル ネットワーク モデルを再作成するように挑戦します。使ってきました。講師は、ReLU 活性化関数は、ニューラル ネットワークが設計された非線形データのモデル化に必要な、一般的で効果的な非線形活性化関数であると説明しています。インストラクターは、トレーニング損失に対する学習率の変更の効果を示し、視聴者にさまざまな学習率を試して損失曲線への影響を観察するように勧めます。

  • 12:15:00 このセクションでは、講師が PyTorch を使用してバイナリ分類問題のオプティマイザーと損失関数を構築する方法について説明します。モデルの非線形活性化関数を ReLU に設定し、CUDA のランダム シードを作成します。次に、1000 エポックをループしてモデルをトレーニングし、BCE とロジット損失関数および精度関数をそれぞれ使用して、損失と精度を計算します。インストラクターは、トレーニング コードを機能化する方法について考えるように奨励し、このセクションは、実際の PyTorch プロジェクトで作業するための経験と勢いを構築するためのものであることを提案します。

  • 12:20:00 このセクションでは、講師が PyTorch のバックプロパゲーション法でモデルを最適化するプロセスを説明します。バックプロパゲーションを実行する前に、オプティマイザの勾配がゼロに設定されるため、白紙の状態から開始できます。 loss.backward() の実行後、オプティマイザーの step メソッドが呼び出され、モデル パラメーターに対して勾配降下法が実行されます。インストラクターは、モデルのパラメーターをデバッグする方法も実演し、ReLU アクティベーション関数にはパラメーターがなく、効果的であることを説明します。最後に、インストラクターはトレーニングとテストの損失、精度、およびエポックを出力して、モデルの学習の進行状況を追跡します。

  • 12:25:00 このセクションでは、インストラクターが PyTorch コードの形状の問題をトラブルシューティングし、スクイーズ関数を使用してテスト ロジットのドット形状の余分な次元を削除することで修正します。次に、非線形性の威力と、relu レイヤーを追加することでモデルのパフォーマンスがどのように向上し、データセット内の円を分離する線を描画できる可能性があるかについて説明します。インストラクターはまた、モデルの評価と予測を行う際の視覚化の重要性を強調し、視聴者に決定境界をプロットするように要求します。

  • 12:30:00 このセクションでは、インストラクターがプロット決定境界関数を使用して、線形モデルと比較した非線形モデルのパフォーマンスを視覚化する方法を示します。非線形モデルは線形モデルよりも精度が高いことが示されていますが、インストラクターは視聴者に精度をさらに向上させるように求めています。次にインストラクターは、ニューラル ネットワークがデータ内のパターンを発見するためのツールとして線形関数と非線形関数を使用する方法について説明し、PyTorch でテンソルを作成して非線形活性化関数を使用する方法のデモンストレーションを行います。

  • 12:35:00 このセクションでは、インストラクターが、人気のある ReLU および Sigmoid 関数を複製して、PyTorch でカスタム アクティベーション関数を作成する方法を説明します。インストラクターは、最初にトーチ フロート 32 のデータ タイプを設定し、x 軸に負の 10 ~ 10 の値を使用してプロットされた直線を視覚化します。 ReLU 関数は、入力テンソルを取得し、ゼロと x の最大値を返すことにより、torch.relu および nn.relu 関数を使用して作成されます。同様に、シグモイド関数は、入力テンソルを取得し、1 を 1 で割ったものに負の x の指数を加えたものを返すことによって作成されます。インストラクターは、カスタム ReLU およびシグモイド関数をプロットし、それらを PyTorch 組み込み関数と比較することによって、それらの有効性を実証します。

  • 12:40:00 PyTorch コースのこのセクションでは、データ セットに適合させるために線形関数と非線形関数を組み合わせてデータのパターンを見つけることの重要性をインストラクターが説明します。ニューラル ネットワークの背後にある考え方は、これらの関数の層を積み重ねてモデルを作成することです。これらのレイヤーをゼロから構築することは可能ですが、Pytorch は、GPU の使用も可能にしながら、バックグラウンドで可能な限り高速に計算するエラー テスト済みの構築済みレイヤーを提供します。インストラクターは、2 つの可能な結果を含むバイナリ分類と、2 つ以上の可能な結果を含むマルチクラス分類の違いについても説明します。最後に、このセクションは、ニューラル ネットワークにおける非線形性の重要性を繰り返し述べることで締めくくり、講師は以前のバイナリ分類モデルを改善するための課題を出します。

  • 12:45:00 このセクションでは、コースのインストラクターがマルチクラス分類と、それとバイナリ分類の違いを紹介します。シグモイドの代わりに softmax 活性化関数が使用され、バイナリ クロス エントロピーの代わりにクロス エントロピーが使用されます。次にインストラクターは、scikit-learn.datasets の make blobs 関数を使用して 20 個のマルチクラス データ セットを作成し、それぞれ 2 つの機能を持つ 4 つのクラスを生成します。中心標準偏差は、クラスターにある程度のランダム性を与え、それらを少し揺さぶるために調整されます。これにより、モデルにとって少し難しくなります。

  • 12:50:00 このセクションでは、トランスクリプトの抜粋で、PyTorch を使用してマルチクラス分類モデルのデータを準備する方法について説明します。データをテンソルに変換し、scikit-learn のトレーニング テスト分割関数を使用して、データをトレーニング セットとテスト セットに分割します。また、plot.figure を使用してデータを視覚化し、再現性を確保するためにランダム シードを設定します。多クラス分類データセットを作成した後、データを分離するために非線形性が必要かどうかを検討し、データのモデルの構築に進みます。
     
  • 12:55:00 このセクションでは、インストラクターが PyTorch を使用してマルチクラス分類モデルをセットアップする方法について説明します。彼は、入力層の形状を定義し、隠れ層ごとのニューロン数を決定することから始めて、プロセスを段階的に説明します。次にインストラクターは、クラスごとに 1 つの出力フィーチャを必要とする出力レイヤーの形状を設定する方法を説明します。モデルを作成するために、講師は nn.module から継承し、モデルのいくつかのパラメーターを設定する「ブロブ モデル」と呼ばれるクラスを作成します。最後に、インストラクターは、入力機能と出力機能を使用してマルチクラス分類モデルを初期化する方法を示します。

パート14

  • 13:00:00 このセクションでは、インストラクターが PyTorch の nn.Sequential メソッドを使用した線形レイヤー スタック モデルの作成について説明します。モデルをインスタンス化するには、入力フィーチャの数と出力クラスの数にアクセスして、隠れ層の構成を決定します。インストラクターは、レイヤーのシーケンシャル スタックを設定して、各レイヤーを 1 つずつデータを渡します。また、データセットに非線形性を追加する方法についても説明し、順方向メソッドを作成して、入力が指定されたレイヤーを順番に通過できるようにします。最後に、ブロブ モデルのインスタンスが、適切な数の入力フィーチャと出力フィーチャを使用して作成されます。

  • 13:05:00 ビデオのこのセクションでは、講師が nn.Module をサブクラス化してマルチクラス分類モデルを作成し、クラス コンストラクターのパラメーターを設定して入力機能と出力機能をカスタマイズします。彼らはまた、出力特徴パラメーターがデータ内のクラスの数と一致していることも説明しています。マルチクラス分類モデルの損失関数を作成するために、講師は torch.nn モジュールでクロス エントロピー損失を検索して見つけます。これは、入力とターゲットの間の損失を計算し、C クラスで分類問題をトレーニングするときに役立ちます。インストラクターはまた、バランスの取れていないトレーニング セットを扱う場合にウェイト パラメータが役立つことも説明しています。

  • 13:10:00 このセクションでは、インストラクターがマルチクラス分類の損失関数とオプティマイザーの作成について説明します。彼は SGD と Adam の 2 つの一般的なオプティマイザを推奨していますが、この例では SGD を使用することにしました。次に、視聴者に、前のビデオで作成されたモデルを使用してフォワード パスを実行し、モデルの生の出力が何であるかを検討するように要求します。テンソルが同じデバイス上にない場合、実行時エラーが発生する可能性があるため、インストラクタは視聴者にデバイス パラメータに注意を払うように促します。最後に、彼はモデルを評価モードに変え、いくつかの予測を行います。

  • 13:15:00 このセクションでは、講師がモデルの出力ロジットを多クラス分類問題の予測確率と予測ラベルに変換する方法を説明します。これを行うには、softmax 関数を使用してロジットを予測確率に変換し、確率が最も高い予測を予測ラベルと見なします。インストラクターは、PyTorch コードを使用してこのプロセスを実演し、softmax 関数の性質により、各サンプルの確率の合計が常に 1 になることにも注意します。

  • 13:20:00 このセクションでは、インストラクターは、マルチクラス分類問題の PyTorch モデルの生の出力から、softmax 活性化関数を使用して予測確率に移動する方法を説明し、次に、予測確率。このプロセスでは、モデルの生の出力をロジットに変換し、softmax 関数を使用して予測確率を取得し、それらの確率の argmax を取得して予測ラベルを取得します。インストラクターは、モデルがまだトレーニングされていないため、現在の予測はランダムですが、これらの手順はモデルのトレーニングと評価のためにトレーニング ループで使用されることに注意してください。

  • 13:25:00 このセクションでは、インストラクターがマルチクラス モデルのトレーニングとテスト ループの構築を開始します。まず、手動シードを設定して毎回同じ出力を取得しようとしますが、これは保証されていないことに注意してください。次に、エポック数を 100 に設定し、データをターゲット デバイスに配置します。データのループが開始され、エポックごとに、x ブロブ トレーニングから作成されたフォワード パスとロジットを使用してモデルがトレーニングされます。 Torch softmax 関数の出力は、クロスエントロピー損失と精度で損失を計算するために使用されます。その後、オプティマイザはゼロに設定され、オプティマイザがステップ実行される前に逆伝播が実行されます。テストまたは推論用のコードも表示されます。これには、モデルを評価モードに設定することが含まれます。

  • 13:30:00 このセクションでは、インストラクターがドロップアウト レイヤー、マッチ ノルムのオフ、予測を高速化するためのトーチ推論モードについて説明します。彼らは、トレーニング中に、過剰適合を避けるために、ドロップアウト層がニューロンの一部をランダムにドロップアウトすると説明しています。講師はまた、舞台裏でテスト損失とテスト ラベルを渡すことによって、テスト ロジットとテスト精度を計算する方法を示します。次に、実行時エラーの原因となった厄介なデータ型の問題と、それをどのように解決したかについて説明します。インストラクターは、コードのトラブルシューティングは機械学習の重要な部分であり、エラーを特定して解決するには時間がかかることを強調しています。

  • 13:35:00 このセクションでは、ナレーターはマルチクラス分類モデルを作成する際に、さまざまなトラブルシューティングの課題に遭遇します。まず、コードのエラーはテンソルの 1 つが間違ったデータ型を持っていることが原因であることがわかりました。いくつかの調査と実験を通じて、彼はテンソルをクロス エントロピー損失の計算を最適化する「torch.long tensor」に変更しました。その後、トレーニング データとテスト データのサイズが異なるため、別のエラーが発生しました。その場でコードをデバッグすることで、彼は問題を特定し、データを再割り当てします。これらの課題にもかかわらず、モデルの精度と損失は期待どおりに機能し、モデルがマルチクラスの分類データセットに対して機能していることを示しています。

  • 13:40:00 このセクションでは、インストラクターが予測を行い、それらを評価することによって、トレーニング済みのマルチクラス分類モデルを評価する方法について説明します。インストラクターは、モデルを評価モードに設定し、テスト データを渡し、結果として生のロジットを取得した後に予測が行われると説明しています。次のステップは、ロジットで torch.softmax を呼び出して、ロジットを予測確率に変換することです。次に、予測確率で torch.argmax を呼び出すことにより、予測ラベルが取得されます。インストラクターは、予測をプロットして実際のデータと比較することで、予測を視覚化することの重要性を強調しています。

  • 13:45:00 このセクションでは、インストラクターはマルチクラス分類モデルを視覚的に評価し、データを分離するために使用される線形関数と非線形関数を調べます。インストラクターはまた、ほとんどのデータには分類のために線形関数と非線形関数の両方が必要であり、PyTorch を使用するとこれらの関数をモデルに簡単に追加できると述べています。さらに、このセクションでは、モデルを評価することの重要性について説明し、さまざまな量の値を持つクラスを処理する際の重要な指標として精度と再現率を紹介します。

  • 13:50:00 このセクションでは、インストラクターが、精度、精度、再現率、F1 スコア、混同マトリックス、分類レポートなど、さまざまな分類評価方法について説明します。インストラクターは、精度は分類問題のデフォルトのメトリックですが、不均衡なデータセットには最適ではない可能性があると説明しています.不均衡なデータセットの場合、適合率と再現率を使用する必要があります。精度は、真陽性と偽陽性に対する真陽性によって決定され、再現率は、真陽性と偽陰性に対する真陽性によって決定されます。インストラクターは、適合率と再現率のトレードオフについても指摘しています。一方の指標を上げると、他方の指標が低くなります。分類メトリックのための torchmetrics および scikit-learn ライブラリの使用についても説明します。

  • 13:55:00 このセクションでは、講師が torchmetrics パッケージを使用して PyTorch で事前構築済みのメトリクス関数をインポートして使用する方法を示します。 torchmetrics のインストール方法、精度メトリックのインポート方法、およびそれを使用してマルチクラス モデルの精度を計算する方法を示します。ただし、トーチメトリクスを使用する場合、デバイスに依存しないコードを使用して、メトリクスがデータと同じデバイス上にある必要があることにも注意してください。インストラクターは、トーチメトリクス モジュールと課外記事へのリンクを提供して、さらに詳しく調べます。また、前のセクションで説明したコードを実践するための演習と解決策も紹介します。

パート15

  • 14:00:00 このセクションでは、講師が視聴者に PyTorch コンピューター ビジョン コードのヘルプをどこで入手できるかをアドバイスします。これには、コードをたどる、Google Colab のドキュメント文字列機能を使用する、スタック オーバーフローまたは PyTorch ドキュメントでコードを検索する、およびPyTorch ディープ ラーニング リポジトリの [ディスカッション] タブで質問してください。このセクションでは、バイナリまたはマルチクラスの分類問題など、コンピューター ビジョンの問題の例についても説明します。機械学習モデルは、画像のさまざまな例からパターンを学習して、画像がステーキかピザかを判断したり、画像を複数のカテゴリに分類したりします。 .

  • 14:05:00 このセクションでは、画像問題のマルチクラス分類、オブジェクト検出、画像セグメンテーションなど、機械学習を使用したコンピューター ビジョンのさまざまなアプリケーションについて説明します。スピーカーは、機械学習を使用して、アップロードされた画像から最大 100 種類の食品を分類する Nutrify の例を提供します。講演者はまた、Tesla がコンピューター ビジョンを使用して、3 次元ベクトル空間と機械学習を使用して自動運転車の動きを計画する方法についても説明します。講演者は、Tesla が PyTorch を使用していることに注意します。これは、コースで教えられているのと同じコードです。

  • 14:10:00 ビデオのこのセクションでは、講師が PyTorch を使用してマルチクラス画像分類用のコンピューター ビジョン モデルを作成する方法について説明します。インストラクターは、食品の写真認識技術である Nutrify の例を使用して、コンピューター ビジョンの問題の典型的な入力と出力を説明します。入力には、画像の高さ、幅、およびカラー チャネルを表すテンソルが含まれます。インストラクターはまた、一般的なコンピューター ビジョンの問題に対して既存のアルゴリズムが既に存在している可能性があると述べていますが、必要に応じて構築することができます。 Nutrify の例で必要な出力は、食品クラスごとに 1 つずつ、合計 3 つの出力です。

  • 14:15:00 このセクションでは、PyTorch と畳み込みニューラル ネットワーク (CNN) を利用して情報を数値的に表現し、データ内のパターンを認識するようにモデルをトレーニングして、機械学習モデルを画像分類に使用する方法をビデオで説明します。この例では、PyTorch を使用して情報をエンコードし、CNN を使用して画像内のパターンを認識して、画像内の食べ物の種類 (寿司、ステーキ、ピザなど) を予測しています。このビデオでは、入力と出力の形状が解決する問題によって異なること、および他のモデルを使用することもできますが、通常は CNN が画像データに最適な選択肢であることを強調しています。最後に、このビデオでは、このセクションで学んだのと同じ原則をさらに実証するために使用される、ファッション アイテムのグレースケール イメージに関する問題を紹介します。

  • 14:20:00 このセクションでは、講師が PyTorch やその他の深層学習ライブラリでの画像データの表現について説明します。これらのライブラリは、多くの場合、カラー チャネルが最後にあると想定しますが、PyTorch はデフォルトで、最初にカラー チャネルで画像データを表現します。このビデオでは、特定の問題に対してモデルの入力形状と出力形状を揃えることの重要性について説明しています。インストラクターは、モデルを構築するための PyTorch ワークフローの概要を説明します。これには、変換とデータ ローダーを使用したデータの準備、事前トレーニング済みモデルの構築または選択、オプティマイザーと損失関数の選択、メトリクスを使用したモデルの評価、および改善のための実験が含まれます。モデル。次のセクションでは、畳み込みニューラル ネットワーク (CNN) のアーキテクチャについて説明します。

  • 14:25:00 このセクションでは、講師が典型的な畳み込みニューラル ネットワーク (CNN) のアーキテクチャについて説明します。入力データは、クラス名に変換できる出力形状に変換されるまで、畳み込み層、活性化層、プーリング層などのさまざまな層を通過します。インストラクターは、CNN をスタックする方法はほぼ無限にあることを強調し、スライドを使用して 1 つの方法を示します。ただし、学習するための最良の方法はコーディングすることであり、インストラクターはユーザーを Google Colab ノートブックに誘導し、そこでユーザーは PyTorch と TorchVision ライブラリを使用して CNN の構築を練習できます。インストラクターは、参照ノートブックや LearnPyTorch.io の PyTorch コンピュータ ビジョン セクションなど、追加のリソースも提供します。

  • 14:30:00 ビデオのこのセクションでは、インストラクターがさまざまなドメインのさまざまな PyTorch ライブラリを紹介し、コンピューター ビジョンにおける PyTorch の強みを強調しています。コンピューター ビジョンのメイン ライブラリはトーチ ビジョンです。これには、データ セット、コンピューター ビジョン用の事前トレーニング済みモデル、およびビジョン データを機械学習モデルで使用可能な数値に操作するための変換が含まれています。インストラクターは、PyTorch、NN、および torch ビジョンのインポートを実演し、一般的な画像変換を含み、compose を使用して一緒にトレーニングできる変換モジュールについて説明します。 to_tensor 関数は、画像データをテンソル形式に変換するための主要な変換として導入されています。

  • 14:35:00 PyTorch for Deep Learning & Machine Learning コースのこのセクションでは、インストラクターは、TorchVision、TorchVision に由来するモジュール、および基本データセットである TorchUtils.data.dataset を含む、PyTorch の基本的なコンピューター ビジョン ライブラリについて説明します。 PyTorch のクラス。インストラクターは、視覚化に Matplotlib を使用することの重要性と、モデルで使用するために画像をテンソルに変換する必要性についても説明します。次に、インストラクターは FashionMNIST データセットを紹介します。これは、元の MNIST データベースを利用したもので、衣類のグレースケール画像を特徴としています。このデータセットは、コンピューター ビジョン技術のデモに使用されます。インストラクターは、本格的な機械学習の研究者は MNIST を過剰に使用しており、現代のコンピューター ビジョン タスクを代表するものではないと考えていますが、FashionMNIST は始めるのに役立つデータセットであると説明しています。
     
  • 14:40:00 このセクションでは、講師が TorchVision ライブラリからデータセットをダウンロードして使用する方法について説明します。 Caltech101、CIFAR-100、CIFAR-10 などのさまざまな画像分類データセットと、torchvision.datasets モジュールを使用してそれらをダウンロードする方法について言及しています。次にインストラクターは、Fashion-MNIST データセットをダウンロードして使用する方法を実演し、データセットに適用できるさまざまなパラメーターと変換について説明します。また、トレーニング データセットとテスト データセットの両方をダウンロードするためのサンプル コードも提供します。

  • 14:45:00 このセクションでは、講師が PyTorch の torchvision.datasets を使用してサンプル コンピュータ ビジョン データセット、具体的には FashionMNIST データセットをダウンロードする方法を説明します。データを「data」という変数に保存し、torchvision.transforms を使用して画像データをテンソルに変換できます。インストラクターは、トレーニング データセットとテスト データセットの長さを確認する方法、トレーニング例の画像とラベルを表示する方法、および「.classes」や「.class_to_idx」などの属性を使用してクラス名に関する詳細情報を取得する方法も示します。最後に、ラベルは整数にすぎないため、形状を持たないと説明しています。

  • 14:50:00 このセクションでは、インストラクターがファッション MNIST データセットの入力形状と出力形状について説明します。このデータセットは、さまざまな種類の衣類のグレースケール画像で構成されています。 The input shape of the images is in NCHW format, where the batch size is set to "none", and the output shape is 10. データをよりよく理解するために、インストラクターは Matplotlib を使用して画像とその形状を視覚化しますが、データ形式が予期された形式と一致しないため、エラーが発生しました。このセクションでは、機械学習モデルを操作する際の入力と出力の形状とフォーマットを理解することの重要性を強調しています。

  • 14:55:00 このセクションでは、ビデオは PyTorch と Matplotlib を使用して画像データをプロットおよび視覚化する方法を探ります。インストラクターは、単一の画像をプロットし、image.squeeze() を使用して余分な次元を削除する方法を示します。次に、固定ランダム シードと Matplotlib の subplot 関数を使用して、データセットから 16 個のランダム画像のセットをプロットします。インストラクターは、cmap プロパティまたはパラメーターを使用して、プロットのカラー マップをグレースケールに変更する方法も示します。次に、データセットを視覚的に探索してデータをよりよく理解し、潜在的な問題 (データセット内のプルオーバーとシャツの類似点など) を特定することの重要性について説明します。

パート16

  • 15:00:00 このセクションでは、インストラクターがコンピューター ビジョン モデルのデータを準備することの重要性と、PyTorch データ セットとデータ ローダーを使用してそれを行う方法について説明します。彼はまた、衣服の 60,000 枚の画像をモデル化して 10 の異なるクラスに分類する際の非線形性の潜在的な必要性と、データ セットをより小さなバッチに分割することで計算効率を向上させる方法についても説明しています。この準備の目的は、データ内のパターンを識別するためにモデルで使用できる Python 反復可能オブジェクトを作成することです。

  • 15:05:00 このセクションでは、インストラクターがミニバッチの概念と、ディープラーニングで一般的に使用される理由を説明します。まず、60,000 個の画像のデータセットを 32 個のバッチに分割することから始めます。ミニバッチを使用する 2 つの主な理由は、 GPU メモリの制限を回避することでニューラル ネットワークの計算効率を高め、ネットワークがエポックごとに勾配を更新する機会を増やします。データは、データ セットを渡し、バッチ サイズを定義し、ネットワークがデータの順序を記憶するのを避けるために shuffle を true に設定することにより、torch.utils.data のデータ ローダーを使用してバッチ処理されます。インストラクターは、トレーニング ループで使用されるトレーニングおよびテスト データ ローダーを作成するためのコードを提供します。

  • 15:10:00 このセクションでは、深層学習の問題におけるミニバッチの重要性が強調され、PyTorch を使用してトレーニングおよびテスト データ ローダーを作成するプロセスが説明されます。バッチ サイズ ハイパーパラメーターは 32 に設定され、データ セットはイテラブルに変換されます。トレーニング データ セットとテスト データ セットは DataLoader を使用してロードされます。トレーニング データとテスト データのバッチ サイズは 32 に設定され、シャッフルはトレーニング データの場合は True、テスト データの場合は False に設定されます。バッチ サイズやデータ セットなど、トレーニング データ ローダーの属性が調査されます。トレーニング データ ローダーとテスト データ ローダーの両方の長さが出力され、それぞれのバッチ数が決定されます。

  • 15:15:00 このセクションでは、インストラクターが PyTorch を使用して画像のバッチを視覚化する方法について説明します。トランスクリプトの抜粋は、バッチ サイズとトレーニング サンプルの数に基づいて、トレーニング データ ローダーの長さがどのように決定されるかを示しています。次に、インストラクターは、ランダム性を使用してバッチから単一の画像を視覚化する方法を示し、そのサンプルに関連付けられている画像サイズとラベルを確認します。インストラクターは、これらの入力と出力の形状は特定の問題によって異なることを強調していますが、基本的な前提は同じままです。つまり、データをバッチに変換してモデルに渡します。

  • 15:20:00 このセクションでは、ビデオ インストラクターが画像をバッチで視覚化し、データをデータ ローダーに変換する方法を説明します。彼らはまた、ベースライン モデルの概念を導入しました。これは、出発点として使用され、後で実験を通じて改善できる単純なモデルです。次に、インストラクターは新しいレイヤー「フラット化」を導入します。これは、ディムの連続範囲をシーケンシャルで使用するテンソルにフラット化し、それをスタンドアロン モデルとして使用する方法を示します。

  • 15:25:00 このセクションでは、平坦化と、それを使用して多次元データを単一のベクトルに変換する方法について学びます。平坦化前後の形状を出力した後、出力が長さ 1784 の 1 次元ベクトルになっていることがわかります。また、このプロセスは、深層学習モデルで使用するためのテスラのカメラでの情報のエンコードに似ていることもわかります。次に、平坦化されたデータが PyTorch モデルの線形レイヤーでどのように使用されるかを確認します。モデルは nn.Sequential を使用して定義され、平坦化レイヤーと 2 つの線形レイヤーが含まれます。入力形状と出力形状が定義され、最初の線形レイヤーの出力フィーチャが 2 番目の線形レイヤーの入力フィーチャと一致することがわかります。

  • 15:30:00 このセクションでは、講師が PyTorch を使用して簡単なニューラル ネットワーク モデルを作成する方法を説明します。このモデルは、平坦化されたレイヤーとそれに続く 2 つの線形レイヤーで構成されており、非線形性はありません。モデルの forward メソッドが定義されています。このメソッドは、入力を受け取り、それを平坦化レイヤーに渡し、次に 2 つの線形レイヤーに渡し、出力を返します。次に、インストラクターはモデルのインスタンスを設定し、ダミーのフォワード パスを実行して、モデルが期待どおりに機能していることを確認します。さらに、各レイヤーの入力形状と出力形状、および目的の出力形状を得るためにそれらを配置する方法についても説明します。最後に、フラット化レイヤーを使用することの重要性と、前のレイヤーの出力を単一のベクトルに結合する必要がある理由を示します。

  • 15:35:00 このセクションでは、インストラクターがコンピューター ビジョンの問題のモデル ゼロを作成した前のビデオを確認し、入力と出力の形状を必要な場所に揃えることの重要性を繰り返します。彼らはまた、重みとバイアス行列が画像内のさまざまな特徴を表し、モデルがディープ ラーニングと機械学習を通じて学習することも説明しています。次に、クロスエントロピー損失、確率的勾配降下オプティマイザー、および精度評価メトリックをそれぞれ選択して、モデルの損失関数、オプティマイザー、および評価メトリックの選択について説明します。また、分類評価メトリクスのオンライン PyTorch リソースへの参照も提供します。

  • 15:40:00 このセクションでは、ビデオ インストラクターが Python 機械学習プロジェクトでヘルパー関数を使用する概念について説明します。彼は、accuracy と呼ばれるヘルパー関数を含む一般的な関数を含む Python スクリプトをインポートするためのサンプル コードを提供しています。精度関数は精度メトリックを計算し、インストラクターはドキュメント文字列をチェックして正常にインポートできることを示します。彼はまた、Python プロジェクトでヘルパー関数を使用すると、特に毎回書き換える必要のない一般的な機能を扱う場合に、多くの時間と労力を節約できると説明しています。最後に、モデルをトレーニングするための損失関数を nn ドット クロス エントロピー損失とオプティマイザーに設定します。

  • 15:45:00 このセクションでは、インストラクターは確率的勾配降下のオプティマイザーを設定し、28x28 画像の単純なデータセットに対して比較的高い学習率 0.1 を設定します。次に、モデルのパフォーマンスとランタイムを追跡することの重要性について議論します。次に、Python の time モジュールを使用してモデルのトレーニングの時間を計る関数を作成し、torch.device を渡して、さまざまなデバイスでのモデルの実行速度を比較する方法を示します。

  • 15:50:00 このセクションでは、インストラクターが、モデルのトレーニングにかかる時間を測定するためのタイミング関数の重要性について説明します。彼は、Python の「timer」モジュールを使用してタイマーを作成する方法を示し、それをトレーニング プロセスに組み込む方法を示しています。インストラクターは、Google Colab の再接続機能の使用方法についても説明し、データ ローダーを使用してデータをトレーニング用のバッチに分割する方法について説明します。次に、トレーニング ループの作成とデータのバッチでのモデルのトレーニングに関連するステップの概要を説明し、エポックとバッチをループしてトレーニング ステップを実行し、バッチごとのトレーニング ロスを計算する必要性を強調します。最後に、モデルはトレーニングと同じステップで評価されると述べています。

  • 15:55:00 このセクションでは、インストラクターは、トレーニング ループが通過したエポック数を示すプログレス バーの TQDM をインポートすることによって、テスト フェーズを開始します。 TQDM は、オーバーヘッドが少なく、オープン ソース ソフトウェアである Python プログレス バーです。 TQDM は非常に人気があるため、Google CoLab に組み込まれています。インストラクターは、より多くの実験を実行するためのトレーニング時間を短縮するために、エポック数を 3 に設定する前に、シードを設定してタイマーを開始します。トレーニングとテストのループを作成し、トレーニング ロスをインスタンス化し、エポックごとのトレーニング ロスを計算します。データがバッチ化され、トレーニング バッチ データをループするループが追加されます。
PyTorch for Deep Learning & Machine Learning – Full Course
PyTorch for Deep Learning & Machine Learning – Full Course
  • 2022.10.06
  • www.youtube.com
Learn PyTorch for deep learning in this comprehensive course for beginners. PyTorch is a machine learning framework written in Python.✏️ Daniel Bourke develo...
 

深層学習と機械学習のための PyTorch – フルコース (パート 17-22 の説明)


深層学習と機械学習のための PyTorch – フルコース


パート17

  • 16:00:00 このセクションでは、インストラクターがニューラル ネットワークのトレーニング ループを設定します。モデルはトレーニング モードになり、フォワード パスが実行されて損失が計算されます。トレーニング損失値はバッチごとに累積され、オプティマイザはエポックごとではなくバッチごとに更新されます。インストラクターは、監視目的で、見たサンプルとエポックごとのバッチごとの平均トレーニング損失も出力します。このループは、すべてのバッチがトレーニング データ ローダーで処理されるまで続きます。

  • 16:05:00 このセクションでは、インストラクターが PyTorch のテスト ループのコードを順を追って説明します。これには、テスト ロス変数を設定し、フォワード パスを使用してトレーニング データで学習したパターンを評価することが含まれます。テストの精度もダウンロードされた精度関数を使用して計算され、テストの損失とテストの精度の値がバッチごとに累積され、バッチ数で除算されてエポックごとの平均が求められます。これらの値は、モデルの進行状況を追跡するために出力されます。

  • 16:10:00 このセクションでは、インストラクターがトレーニング ループの設定の最終ステップについて説明します。これには、トレーニング ロス、テスト ロス、テスト精度の出力、およびトレーニング時間の計算が含まれます。また、PyTorch でのコーディング中に発生する可能性のある潜在的なエラーのトラブルシューティングのヒントも提供します。最後に、コードを実行し、トレーニング ループの進行状況バーを表示する方法を示します。

  • 16:15:00 このセクションでは、インストラクターがトレーニング ループの結果について説明し、ベースライン精度とトレーニング時間の考え方を紹介します。彼は、機械学習の固有のランダム性と使用されるハードウェアのために、数値がわずかに異なる可能性があることを強調しています.次に、インストラクターは、複数のモデルを構築し、後で結果を比較する関数を作成して、モデルの評価に進みます。この関数は、モデル、データ ローダー、損失関数、および精度関数を受け取り、データ ローダーで予測したモデルの結果を含む辞書を返します。彼は、関数はテスト ループに似ていますが、複数のモデルとデータ ローダーで使用できるように機能化されていると説明しています。インストラクターはまた、次のセクションでは、GPU と畳み込みニューラル ネットワークで予測を行い、モデルを評価する方法について説明すると述べています。

  • 16:20:00 このセクションでは、動画作成者が損失と精度の関数を一般化して、任意のモデルとデータ ローダーで使用できるようにする方法を示します。これらは、バッチごとの損失と精度の値を累積し、それらをスケーリングしてバッチごとの平均損失/精度を見つけ、結果を辞書形式で返す方法を示しています。また、以前に定義した関数を使用して、テスト データセットでモデルの結果を計算する新しい関数を作成する方法も示します。最後に、プログレス バーを使用して、テスト データセットでのモデルのパフォーマンスを追跡します。

  • 16:25:00 PyTorch for Deep Learning and Machine Learning コースのこのセクションでは、インストラクターがデバイスに依存しないコードをセットアップして、CPU と GPU の両方でモデルをトレーニングする方法について説明します。これらは、CUDA の可用性を確認し、GPU に切り替えてその処理能力を活用する方法を示しています。インストラクターは、複雑さとサイズを増やす前に、小さなデータセットとモデルから始めることもお勧めします。最後に、彼らはデータセットの新しいモデルを構築し、GPU での実行中に非線形性の有無にかかわらずそのパフォーマンスをテストすることを提案しています。

  • 16:30:00 このセクションでは、インストラクターがニューラル ネットワークの非線形性の概念を紹介し、非線形関数を使用してモデルを作成する実験を視聴者に促します。非線形データをモデル化するための非線形性の利点について説明し、インストラクターは、PyTorch を使用して線形層と非線形層の両方でニューラル ネットワークを実装する方法を説明します。コードを順を追って説明し、特定のデータセットに最適なモデルを見つけるための実験の重要性を強調しています。

  • 16:35:00 このセクションでは、インストラクターが線形関数と非線形関数を使用してニューラル ネットワークをカスタマイズする方法について説明し、以前に定義したネットワークに 2 つの ReLU 活性化関数を追加する方法を示します。次に、forward メソッドがオーバーライドされて、入力がレイヤー スタックを通過できるようになり、モデルがデバイス上でインスタンス化されます。次にビデオは、新しいモデルの損失関数、オプティマイザー、および評価メトリックの作成に進みます。これには非線形レイヤーが追加されており、さまざまな関数がニューラル ネットワークにどのように影響するかを理解するために実験を実行することの重要性が強調されています。

  • 16:40:00 このセクションでは、スピーカーはヘルパー関数の作成と、PyTorch でのトレーニングおよび評価ループの機能化について説明します。彼らは、精度関数のインポートと損失関数の設定、およびオプティマイザーについて言及しています。次のステップは、トレーニングと評価のループを関数として構築し、エラーのリスクなしで繰り返し呼び出すことができるようにすることです。スピーカーは、入力としてモデル、データ ローダー、損失関数、オプティマイザ、およびオプションで精度関数とターゲット デバイスを必要とするトレイン ステップ関数を作成するプロセスを順を追って説明します。トレーニング ステップ関数は、データ ローダーをループし、フォワード パスを実行し、損失を計算し、逆伝播し、オプティマイザーでモデル パラメーターを更新します。

  • 16:45:00 このセクションでは、プレゼンターが PyTorch でトレーニング ステップを実行する方法を説明します。モデル、データローダー、損失関数、オプティマイザー、デバイスなど、関数の入力を定義することから始めます。次に、関数の各行を実行し、データ ローダーのループから始めて、データをターゲット デバイスに配置します。また、バッチごとの精度スコアを累積する精度関数も追加します。最後に、トレーニング ステップの最後に、バッチごとの平均損失と精度を計算し、結果を出力します。全体として、このセクションでは、深層学習と機械学習に PyTorch を使用する方法を明確かつ簡潔に説明します。

  • 16:50:00 このセクションでは、モデル、データ ローダー、損失関数、精度関数、およびデバイスを入力として受け取るテスト ステップ関数を作成することにより、トレーナーがテスト ループを機能化します。トレーナーは、データ ローダーをループしてフォワード パスを実行する前に、テストの損失と精度を設定し、モデルを評価モードにする方法を示します。トレーナーは、推論モードのコンテキスト マネージャーを使用し、デバイスに依存しないコードを作成することの重要性についても説明します。テスト pred は X を渡すことで計算され、テスト損失と精度はそれぞれの関数を使用してバッチごとに累積されます。最後に、トレーナーは argmax を取得して、出力ロジットを予測ラベルに変換します。

  • 16:55:00 PyTorch フル コースのこのセクションでは、トレーニング ステップ関数とテスト ステップ関数を使用して、テスト ステップ関数と最適化および評価ループを作成する方法をインストラクターが実演します。新しい関数は、モデルをトレーニングし、3 つのエポックの精度を評価するために使用されます。インストラクターは、GPU と CPU でモデルを実行するのにかかる時間を測定する方法も示します。

パート18

  • 17:00:00 このセクションでは、インストラクターが深層学習モデルのテスト ステップを設定し、トレーニング時間を測定するタイマーを作成する手順を説明します。コードは、将来のプロジェクトで再利用できるように設計されているため、シンプルで効率的です。さらに、2 番目のモデリング実験を実行し、結果を非線形層を使用した最初のモデルと比較します。 2 番目のモデルは、トレーニング時間に関してはわずかに高速でしたが、前のモデルよりも良い結果は得られませんでした。つまり、数値はインストラクターの数値と同じではない可能性がありますが、方向性は非常に似ているはずです。最後に、インストラクターは、モデルはそれほど複雑ではなく、データセットもそれほど大きくないため、CPU と GPU のトレーニング時間が劇的に変わらない理由を説明できると説明しています。

  • 17:05:00 このセクションでは、講師はモデルが GPU よりも CPU の方が高速にトレーニングされる場合があると説明しています。これの 2 つの主な理由は、GPU との間でデータ/モデルをコピーするためのオーバーヘッドが、GPU によって提供される計算上の利点を上回っていることと、使用されているハードウェアが計算能力の点で GPU よりも優れた CPU を持っていることです。ただし、インストラクターは、これはあまり一般的ではなく、一般的に、最新の GPU は一般的な CPU よりもディープ ラーニング アルゴリズムの計算が高速であると述べています。次に、インストラクターは、特に帯域幅とオーバーヘッド コストを最適化することによってディープ ラーニングを高速化する方法について説明するリソースを共有します。最後に、講師はモデル 1 の結果ディクショナリを作成して、後でモデリング結果を比較します。

  • 17:10:00 このセクションでは、インストラクターは、データとモデル間のデバイスの不一致に関して、深層学習モデルで発生する可能性がある一般的なエラーについて説明します。彼は、データとモデルが異なるデバイス上にあったためにエラーが発生したと説明し、コードをデバイスに依存しないようにすることによる修正を提案しています。彼はまた、デバイスにとらわれないコードを作成する方が常に良いと警告しています。最後に、インストラクターは、畳み込みニューラル ネットワーク (CNN) の構築を含む次のモデリング実験を紹介し、典型的な CNN のアーキテクチャを説明します。

  • 17:15:00 このセクションでは、講師が単純な畳み込みニューラル ネットワーク (CNN) のさまざまな種類のレイヤーについて説明します。 CNN は、画像の赤、緑、青のテンソルに前処理された入力から始まります。次に、入力は畳み込み層、relu 層、およびプーリング層の組み合わせを通過します。ディープ ラーニング モデルには、さらに多くのレイヤーを追加して、データ内のより多くのパターンを見つけることができます。各レイヤーは、データに対してさまざまな組み合わせの数学演算を実行します。インストラクターは、CNN 説明 Web サイトを使用して CNN のデモを行います。ここでは、さまざまな画像の入力がさまざまなレイヤーを通過し、最終的な出力が最高値のクラスになります。

  • 17:20:00 このセクションでは、講師が畳み込みニューラル ネットワークの仕組みと深層学習の美しさについて説明します。ネットワークの各層は、データのさまざまな特徴を学習するように設計されており、ネットワーク自体がそれらの特徴を学習する最善の方法を見つけ出します。次に、インストラクターは、畳み込みニューラル ネットワークについてさらに学習するためのリソースとして、CNN 説明者の Web サイトを紹介しますが、推奨するものでもあります。
    学習者は、PyTorch コードでニューラル ネットワークの複製に参加できます。インストラクターは次に、PyTorch で小さな VGG 畳み込みニューラル ネットワークを構築し、研究論文の著者が新しいモデル アーキテクチャに名前を付けて、将来の参照を容易にすることを説明します。コードは、PyTorch モデルを構築する際の典型的なパラメーターである入力形状、隠れユニット、および出力形状で初期化されます。

  • 17:25:00 このセクションでは、インストラクターが、畳み込みブロックと呼ばれることが多い PyTorch のブロックを使用してニューラル ネットワークを作成する方法を説明します。これらのブロックは複数のレイヤーで構成されており、アーキテクチャ全体は複数のブロックで構成されています。インストラクタは、インチャネルとアウトチャネル、カーネルサイズ、ストライド、パディングなどのハイパーパラメータを使用してレイヤーの 2 つの例を作成することにより、畳み込みブロックを作成する方法を示します。また、インストラクターは、学習者がハイパーパラメータの基本を理解するためのインタラクティブなリソースを提供し、それを学習することを奨励します。

  • 17:30:00 このセクションでは、講師が PyTorch を使用して深層学習モデルを構築するためのコードを、特に畳み込みブロック層に焦点を当てて説明します。モデルは 2D 画像データを取り込み、レイヤーを使用して入力データの圧縮表現を学習し、最大プーリングを使用して入力データの最大値を取得します。コードは 2 つのブロックに分割され、出力レイヤーが追加されます。最終層の入力は、最終出力を作成するために最後の線形層を通過する前に平坦化されます。

  • 17:35:00 このセクションでは、講師は tiny VGG と呼ばれる畳み込みニューラル ネットワーク (CNN) の分類レイヤーを構築します。これには、特徴抽出器として機能する 2 つのレイヤーと、これらの特徴をターゲット クラスに分類する最後のレイヤーがあります。インストラクターは、シーケンシャルを使用して分類レイヤーをコーディングし、平坦化レイヤーに渡し、前の 2 つのレイヤーの出力を単一の特徴ベクトルに平坦化します。次に、特徴ベクトルは nn.linear レイヤーに渡されます。このレイヤーは、隠れユニットの数に基づいて特徴を計算し、クラスの長さに基づいて特徴を計算します。最後に、インストラクターは forward メソッドを設定し、X ドット形状を印刷して、各レイヤーの形状変化を追跡します。インストラクターは、CNN モデルの入力形状を確立します。これには、白黒画像用のカラー チャネルが 1 つしかなく、各レイヤーの隠れユニットの値を設定し、モデルをインスタンス化して終了します。

  • 17:40:00 ビデオのこのセクションでは、インストラクターが前のセクションで書いたコードを見て、PyTorch を使用して畳み込みニューラル ネットワークを作成します。彼らは、コードのいくつかのタイプミスを特定して修正し、maxpool2d レイヤーには学習可能なパラメーターがないことを説明しています。次に、conv2d レイヤーを紹介し、その重みテンソルとバイアス値が入力を操作して出力を生成することを説明します。それらは、PyTorch でダミー入力を使用して CNN 説明 Web サイトの最初のレイヤーを再現する方法を示し、さらに読むために PyTorch ドキュメントへのリンクを提供します。また、最初にカラー チャネルを使用して PyTorch スタイルを使用してバッチ イメージを作成する方法も示します。

  • 17:45:00 このセクションのビデオ チュートリアルでは、PyTorch モデルの構成と、畳み込みが実際にどのように機能するかについて説明します。インストラクターは、乱数で構成されるモデルがこれらのレイヤーを調整して、comp2d レイヤーを使用してデータを最適に表現する方法を説明します。これらの層の 1 つを介していくつかのランダム データを渡した後、チュートリアルでは、カーネル サイズと、畳み込みによって実行される操作を決定する方法について詳しく説明します。インストラクターは、畳み込み層の目的について詳しく説明します。これは、このカーネルが操作を正しく実行して正しい出力を提供できるようにすることです。

  • 17:50:00 このセクションでは、インストラクターが PyTorch の畳み込みレイヤーでストライドとパディングの値を変更した場合の影響について説明します。ストライド値 1 は、畳み込みが一度に 1 つのピクセルをホップすることを意味します。一方、ストライド値 2 は、一度に 2 つのピクセルをホップするため、出力サイズが減少します。一方、画像の端にパディングを追加すると、カーネルは端の画像情報を操作できます。インストラクターはまた、さまざまなパラメーターに設定する値がわからない場合は、既存の値をコピーして必要に応じて調整するのが一般的であると述べています。このセクションは、バッチ ディメンションをテスト イメージに追加し、それを PyTorch の畳み込みレイヤーに渡す方法のデモンストレーションで締めくくります。

  • 17:55:00 このセクションのビデオでは、深層学習と機械学習のための PyTorch の畳み込み層と最大プーリング層について説明しています。このビデオでは、PyTorch を使用してテスト画像を畳み込みレイヤーに渡して出力を生成することにより、畳み込みレイヤーを作成する方法を示しています。カーネル サイズ、ストライド、およびパディングの値をいじることで、ユーザーは出力サイズがどのように変化するかを観察できます。このビデオでは、最大プーリング レイヤーについても説明し、カーネル サイズが 2 のサンプルの最大プーリング レイヤーを作成する方法を示します。

パート19

  • 18:00:00 このセクションでは、講師が PyTorch の畳み込みレイヤーと最大プール レイヤーを介してデータを渡す方法を示します。最初にテスト画像を conv レイヤーに渡し、次に形状を出力します。次に、conv レイヤーの出力を max プール レイヤーに渡し、結果の形状を再び出力します。インストラクターは、最大プール層が特定の範囲の内部テンソルの最大値を取り、畳み込み層の出力サイズを削減すると説明しています。また、レイヤーとパラメーターの値が変更された場合に形状がどのように変化するかを示します。

  • 18:05:00 このセクションでは、講師が畳み込みニューラル ネットワーク (CNN) の最大プーリングの概念について説明します。目標は、入力データを将来の予測に使用できる小さな特徴ベクトルに圧縮することです。最大プーリングには、入力データの特定のセクションの最大値を取得して、その領域で最も重要な特徴を決定することが含まれます。インストラクターは、最大プーリングのカーネル サイズを変更した場合の影響と、それが特徴空間にどのように影響するかを示します。また、より小さいランダム テンソルを使用して最大プーリングのプロセスを示す視覚的な例も提供します。全体として、最大プーリングは、予測の重要な機能を維持しながらデータの次元を削減するための便利な手法です。

  • 18:10:00 コースのこのセクションでは、講師が畳み込みニューラル ネットワークの最大プール レイヤーの目的について説明します。これは、畳み込みレイヤーから学習した特徴をより小さなスペースに圧縮し、最終的に圧縮された表現に導くことです。予測に使用できる入力データの。インストラクターはまた、視聴者にダミー テンソルを作成し、前のビデオで構築した小さな VGG ネットワークを通過させて、畳み込みブロックを移動するときにダミー テンソルの形状に何が起こるかを確認します。最後に、インストラクターは、別の場所からモデルを複製し、そこからデータを渡す目的は、ディープ ラーニングの一般的な方法であると説明します。

  • 18:15:00 このセクションでは、インストラクターが PyTorch のフォワード パスの例を示し、形状の不一致エラーを処理する方法を示します。彼らは、Fashion MNIST データセットから以前に作成された画像を使用し、画像と同じ形状のテンソルを作成します。ただし、テンソルにバッチサイズの余分な次元があるため、エラーが発生します。これを修正するために、次元ゼロでテンソルをアンスクイーズして、バッチ次元を追加します。また、テンソルがモデルと同じデバイス上にあることを確認し、モデルのさまざまなレイヤーに必要な形状をトラブルシューティングして見つける方法を示します。このセクションは、インストラクターが形状について収集した情報を使用してモデルを再作成することで終了します。

  • 18:20:00 ビデオのこのセクションでは、インストラクターがニューラル ネットワーク モデルのレイヤーの形状をデバッグするためのトリックを実演します。モデルにダミー データを渡し、各レイヤーで出力の形状を出力することで、講師は形状の不一致が発生している場所を特定し、分類レイヤーの問題を特定できます。次に、インストラクターは、畳み込み層の入力および出力形状を手動で計算する方法を示しますが、コードを使用してこれらの計算を実行する利点も主張します。最後に、インストラクターはこのトリックを使用して、モデルが行列乗算規則と互換性があることを確認し、モデルが目的の形状でデータを処理できることを確認します。

  • 18:25:00 このセクションでは、インストラクターが構築したモデルの各レイヤーの入力形状と出力形状について説明します。データセットに 10 個のクラスがあるため、モデルを介してランダムなテンソルを渡し、1 と 10 の出力形状を取得します。次に、2 番目のモデルの損失関数とオプティマイザーの設定に進み、最初の畳み込みニューラル ネットワーク (CNN) をどのようにトレーニングするかを説明します。それらは精度関数をインポートし、交差エントロピー損失関数を設定し、オプティマイザを以前と同じ SGD の torch.opt に保ちます。次に、トレーニング ステップ関数とテスト ステップ関数を使用してモデル 2 をトレーニングする方法を示します。これについては、次のビデオで詳しく説明します。最後に、モデルを使用してトレーニング ステップを実行し、データ ローダーで学習を試みることで、トレーニングとテストの機能をセットアップします。

  • 18:30:00 このセクションでは、ビデオは畳み込みニューラル ネットワークのトレーニングに焦点を当て、TQDM を使用してトレーニングにかかる時間を測定し、進行状況を測定します。精度関数、損失関数、オプティマイザー、トレーニング データ ローダー、およびテスト データ ローダーをセットアップします。また、コードの実行にかかった時間を知るために終了時間を測定します。彼らは印刷物にコードの問題を抱えていましたが、それを修正し、最初の CNN のトレーニングに成功し、約 42 秒で 88.5% のテスト精度を達成しました。ビデオでは、パフォーマンスの高いモデルは通常、トレーニングに時間がかかることに注意するようアドバイスしています。

  • 18:35:00 このセクションでは、インストラクターが、機械学習実験で異なるモデル間で結果とトレーニング時間を比較することの重要性について説明します。 3 つのモデル結果辞書を導入し、pandas を使用してデータ フレームを作成し、各モデルの精度、損失、およびトレーニング時間を比較します。彼らは、畳み込みニューラル ネットワーク (モデル 2) が 88% の精度で他のモデルよりも優れていることを発見し、視聴者がさまざまなモデル アーキテクチャ、ハイパーパラメーター、トレーニング時間を試して結果を改善することを奨励しています。インストラクターは、実際のアプリケーションにおけるモデルのパフォーマンスと速度の間のトレードオフを考慮することの重要性を強調しています。

  • 18:40:00 このセクションでは、インストラクターが前のセクションで行った 3 つの実験の結果をデータ フレームとグラフを使用して比較します。トレーニング時間と精度はモデルごとに比較されます。インストラクターは、トレーニング時間は使用するハードウェアによって異なることに注意しています。最もパフォーマンスの高いモデルは畳み込みニューラル ネットワークでしたが、トレーニング時間が最も長くなりました。インストラクターは、最高のパフォーマンスを発揮するモデルを使用して、テスト データ セットからランダムなサンプルを予測することを提案しています。

  • 18:45:00 このセクションでは、トレーニング済みの機械学習モデルを評価するために「予測を行う」という関数を作成する方法について講師が説明します。この関数は、トーチとエンド モジュール タイプのモデル、いくつかのデータ、およびデバイス タイプを受け取ります。目標は、テスト データセットからランダムなサンプルを取得し、モデルを使用してサンプルを予測し、予測を視覚化することです。この関数は、サンプルをアンスクイーズしてターゲット デバイスに渡すことにより、サンプルを準備します。次に、モデルのフォワード パスを実行して生のロジットを取得し、ソフトマックス アクティベーション関数を適用して予測確率を取得します。最後に、予測確率は予測ラベルに変換され、特定のサンプルに関連する予測確率のリストがスタックされて、リストがテンソルに変換されます。このセクションは、テスト サンプルを使用した実際の機能のデモンストレーションで終わります。

  • 18:50:00 このセクションでは、インストラクターがテスト データをランダムにサンプリングし、テスト ラベルを作成してモデルの予測を評価する方法を説明します。テスト データはまだデータ ローダーに変換されておらず、コードは 9 つのランダムなテスト データ サンプルをサンプリングします。インストラクターは、モデルのパフォーマンスを理解するためにモデルをトレーニングした後でも、ランダムなテスト データ サンプルで予測を行うことの重要性を強調しています。インストラクターは、argmax を使用して予測確率を予測ラベルに変換し、確率の最高値のインデックスを取得する方法についても説明します。

  • 18:55:00 このセクションでは、インストラクターがコードを記述して、ランダム サンプルの予測と画像をプロットします。このコードは、3 行 3 列の Matplotlib Figure を作成し、テスト サンプルの各サンプルを列挙します。サンプルごとにサブプロットが作成され、ターゲット イメージがプロットされます。予測ラベルと真偽ラベルも検出され、クラス名と pred クラスとテスト ラベルのインデックスを使用してテキスト形式に変換されます。最後に、プロットのタイトルが作成され、タイトル テキストの色は、予測ラベルが真実ラベルと等しい場合は緑に、等しくない場合は赤に変更されます。

パート20

  • 19:00:00 このセクションでは、発表者が機械学習モデルの予測を視覚化することの重要性について説明し、テスト データセットからランダムに選択されたサンプルに対してトレーニング済みの畳み込みニューラル ネットワーク (CNN) の予測をプロットする方法を示します。プレゼンターは、予測されたラベルと真のラベルを使用して画像をプロットし、予測が正しいかどうかに応じてタイトル テキストの色を変更する方法を示します。プレゼンターは、予測を分析することで、ラベル クラス間の潜在的な混乱を示し、予測を視覚化することで、ラベルまたはモデル自体を改善するための洞察が得られることを示唆しています。次に、プレゼンターは、大量のテスト サンプル セットの予測ラベルと真のラベルを比較することによってモデルのパフォーマンスを評価する別の方法として、混同行列の概念を紹介します。

  • 19:05:00 このセクションでは、講師が PyTorch で混同行列を使用してマルチクラス分類モデルを評価する方法について説明します。混同行列は、さまざまなクラスでのモデルのパフォーマンスを示す視覚的な表現です。インストラクターは、トーチ メトリクスを評価メトリクスに使用する方法を説明し、混同行列評価メトリクスにアクセスする方法を示します。さらに、混同行列をプロットするために ML 拡張が使用されます。重要なことに、インストラクターは、Google Colab には必要なバージョンの ML 拡張がなく、パッケージを適切にインストールするにはバージョン 0.19.0 が必要であると説明しています。最後に、このビデオでは、テスト データセット全体で予測を行う方法と、コンテキスト マネージャーとしてトーチ推論モードを使用してモデルを評価モードに設定する方法を示します。

  • 19:10:00 このセクションでは、講師がテスト データ ローダーを反復処理して PyTorch を使用して予測を行う方法を示します。予測はリストに追加され、torch.cat を使用してテンソルに連結されます。結果のテンソルには、テスト サンプルごとに 1 つの予測があります。また、講師はトーチ メトリクスをインストールし、try and accept ループを使用してそれをインポートする方法を示します。最後に、プロット混同行列関数で使用する assert ステートメントを使用して、必要な ML 拡張のバージョンがチェックされます。

  • 19:15:00 このセクションでは、トーチ メトリクスのインストールと ML 拡張のバージョン 0.19.0 以上へのアップグレードの例を使用して、講師が Google Colab でパッケージをインストールおよびアップグレードする方法を説明します。インストラクターはコードを順を追って説明し、インストールがうまくいったかどうかを確認する方法と、必要に応じてランタイムを再起動する方法など、プロセス中にエラーが発生した場合の対処方法を説明します。インストールが完了すると、インストラクターは、前のビデオでテスト データ セット全体にわたって行われた予測を使用して混同マトリックスを作成する方法を説明します。

  • 19:20:00 このセクションでは、講師が混同行列を作成してプロットし、深層学習モデルのパフォーマンスを評価する方法を説明します。最初に、トーチ メトリクスからの混同行列クラスと ML 拡張からの混同行列関数のプロットがインポートされます。次に、クラス名リストの長さとしてクラスの数を渡すことにより、混同行列インスタンスが設定されます。混同行列テンソルは、テスト データセットの予測とターゲットを渡すことによって作成されます。最後に、混同行列テンソルとクラス名リストを渡し、正しい予測とモデルがエラーを起こしている可能性のある領域を示す視覚的に心地よい対角線を作成することにより、混同行列プロット関数を使用して混同行列がプロットされます。

  • 19:25:00 このセクションでは、インストラクターは、混同マトリックスを使用して分類モデルの予測を視覚的に評価することの重要性を説明します。特に、シャツとコート。混同行列の使用は、モデルのパフォーマンスを評価する強力な方法であり、既存のラベルの問題を特定するのに役立ちます。彼はまた、特にモデルのパフォーマンスが満足のいくものである場合に、トレーニング済みのモデルを保存して読み込むことの重要性についても語っています。モデルをファイルに保存すると、モデルを別の場所で使用したり、再ロードして正しく保存されていることを確認したりできます。インストラクターは、モデルのディレクトリ パスとモデルの保存パスを作成する方法を順を追って説明し、次に torch.save メソッドを使用してモデルの状態 dict を保存する方法を示します。

  • 19:30:00 このセクションでは、インストラクターが PyTorch モデルを保存およびロードする方法を示します。状態ディクショナリが保存されます。これは、トレーニング後のモデルのすべての学習済みパラメーターを表します。保存されたモデルをロードするために、元のモデルと同じパラメータで新しいインスタンスが作成されます。形状の不一致エラーを回避するために、ロードされたモデルを元のモデルと同じパラメータで設定することが重要です。次に、ロードされたモデルが評価され、元のモデルと同様の結果が生成されることが保証されます。インストラクターは、モデルを保存してロードした後にモデルを評価して、モデルが正しく保存されていることを確認することの重要性を強調しています。

  • 19:35:00 このセクションでは、ロードされたモデルが保存前に以前にトレーニングされたモデルと同じ結果を生成することがわかります。torch.is_close を使用して、モデルの結果が互いに近いかどうかをプログラムで確認できます。結果が十分に類似するように絶対許容レベルを調整できます。不一致がある場合は、モデルが正しく保存されているかどうか、およびランダム シードが設定されているかどうかを確認することをお勧めします。参考資料や torchvision などのライブラリの使用から、モデルの評価、非線形性と畳み込みニューラル ネットワーク モデルを試して最適なものを見つけるまで、コンピューター ビジョンの問題のワークフローについても説明します。

  • 19:40:00 「深層学習と機械学習のための PyTorch」のこのセクションでは、インストラクターが視聴者に、learn pytorch.io Web サイトにアクセスして提供された演習を完了することで、これまでに学んだことを実践するように勧めています。演習では、前のセクションで説明したコードと概念の実践に焦点を当てています。また、コンピューター ビジョンをさらに深く掘り下げたい人向けに、追加のカリキュラムも用意されています。さらに、このセクションでは pytorch カスタム データセットのトピックを取り上げ、pytorch ドキュメントやスタック オーバーフローなど、必要に応じてヘルプを得るためのリソースを提供します。

  • 19:45:00 PyTorch コースのこのセクションでは、カスタム データセットと、トーチ ビジョン、トーチ テキスト、トーチ オーディオ、トーチ REC などのさまざまなドメイン ライブラリを使用する方法について説明します。ドメイン ライブラリには、さまざまなデータ ソースのデータ読み込み関数が含まれており、Fashion MNIST などの事前構築済みビジョン データセット用のトーチ ビジョン データセットやカスタマイズされたデータセットなどの組み込みデータセットが付属しています。各ドメイン ライブラリには、ユーザーがさまざまなドメインのさまざまなデータセットを操作するのに役立つ「データセット」モジュールもあります。ビジョン、テキスト、オーディオ、レコメンデーションなど、作業しているドメインに応じて、カスタム ライブラリを調べることをお勧めします。 PyTorch で。

  • 19:50:00 このセクションでは、インストラクターがカスタム データ セットを PyTorch にロードしてコンピューター ビジョン モデルの構築に使用する方法について説明します。彼らが構築するモデルは、ピザ、寿司、ステーキの画像を分類する food Vision mini と呼ばれます。インストラクターは、損失関数とオプティマイザーの選択、トレーニング ループの構築、モデルの評価など、モデルのトレーニングに関連するさまざまな手順について説明します。また、モデルで使用するためにデータを変換する方法、およびデータ拡張を使用したモデルと使用しないモデルを比較する方法についても説明します。最後に、カスタム データで予測を行う方法を示し、PyTorch ディープ ラーニング リポジトリのビデオ ノートブックにアクセスするためのリソースを提供します。

  • 19:55:00 このセクションでは、インストラクターがカスタム データセットを介して PyTorch に独自のデータを取得するプロセスについて説明します。彼らは、データ読み込み関数とカスタマイズ可能なデータ読み込み関数にドメイン ライブラリを使用することの重要性を強調し、ビジョン、テキスト、オーディオ、レコメンデーションなどのさまざまなカテゴリのこれらのライブラリの例を示します。インストラクターは、必要なライブラリをインポートし、PyTorch を使用したベスト プラクティスのためにデバイスに依存しないコードをセットアップする方法も示します。使用可能な CUDA デバイスを確認する方法と、処理を高速化するために GPU を使用するようにランタイム タイプを変更する方法を示します。最後に、インストラクターは、次のビデオで作業するためのデータを取得することを示唆しています。

パート21

  • 20:00:00 コースのこのセクションでは、講師が Food 101 データセットを紹介します。このデータセットには、101,000 の画像を含む 101 の異なる食品カテゴリが含まれています。ただし、PyTorch の使用を練習するために、インストラクターは、3 つの食品カテゴリと画像の 10% のみを含む、このデータセットの小さなサブセットを作成しました。この小さなデータセットには、750 個のトレーニング イメージ、250 個のテスト イメージ、およびクラスごとに約 75 個のトレーニング イメージと 25 個のテスト イメージがあります。この小さなデータセットから始めることで、目標は実験をスピードアップし、モデルのトレーニングにかかる時間を短縮することです。インストラクターは、このカスタム データセットの作成方法に関するノートを提供し、学生が小規模から始めて、必要に応じてアップグレードすることを奨励します。

  • 20:05:00 このセクションでは、インストラクターが PyTorch 用の画像データセットをダウンロードして準備するプロセスを説明します。データセットには、data というフォルダーに格納されているピザ、ステーキ、寿司の画像が含まれています。講師は Python 要求ライブラリを使用してデータをダウンロードし、データ フォルダーに解凍します。このセクションの目的は、画像データを PyTorch にロードする方法を示すことであり、これは同様のプロジェクトに適用できます。インストラクターは、データ用に別のディレクトリを用意することの重要性を強調しています。このディレクトリは、ローカル コンピューターまたはクラウドに配置できます。

  • 20:10:00 このセクションでは、講師が Python ライブラリ zipfile を使用して zip ファイルからデータを抽出する方法を説明します。彼らは、機械学習のコンピューター ビジョンの問題で、ピザ、ステーキ、寿司の画像を含む zip ファイルを抽出する例を使用しています。インストラクターは、zipfile.extractall() メソッドを使用して、zip ファイルの内容を特定のファイル パスに抽出する方法を示します。また、GitHub から間違ったリンク アドレスをコピーした結果発生したコードのエラーにも対処し、正しいリンクを使用してデータ セットをダウンロードすることの重要性を強調しています。全体として、示されているプロセスを使用して、PyTorch で使用するカスタム データ セットをダウンロードおよび抽出できます。次のビデオでは、データをさらに詳しく調べます。

  • 20:15:00 このセクションでは、講師がデータの準備と探索を通じて、データと一体になることの重要性について説明します。彼は、データセットの準備に十分な時間を費やす必要があることを強調して、Abraham 損失関数からのでっちあげの引用を共有しています。次に、インストラクターは、標準の画像分類形式である、ダウンロードしたサンプル データの各ディレクトリを順を追って説明します。彼は OS のドット ウォーク機能を使用して、各ディレクトリのディレクトリ ツリーを生成し、各ディレクトリに存在するディレクトリとイメージに関する情報を表示します。最後に、インストラクターはトレーニングとテストのパーツをセットアップし、それらの標準的な画像分類のセットアップを実演します。

  • 20:20:00 このセクションでは、インストラクターが標準的な画像分類データ構造について説明します。この構造では、全体的なデータ セット フォルダーにはトレーニング フォルダーとテスト フォルダーが含まれ、それぞれの画像を含むクラス名のサブディレクトリがあります。インストラクターは、特定の種類のデータを格納する標準化された方法が、データ形式のリファレンスとして存在することを指摘しています。 PyTorch で使用する画像データを準備するために、データをテンソルに変換するコードが書かれています。インストラクターは、犬と猫の画像を分類するために必要なデータ形式を強調します。ここで、トレーニングとテストの画像ディレクトリには、それぞれのクラス フォルダーが保持されます。講師はまた、イメージとコードを視覚化してこれを達成する計画についても言及しています。これには、すべてのイメージ パスの取得、ランダムなイメージ パスの選択、Pathlib モジュールを使用したイメージ クラス名の取得が含まれます。

  • 20:25:00 このセクションでは、Pillow という Python 画像ライブラリを使用して画像を開いて操作する方法をインストラクターが説明します。まず、特定のフォルダー内のすべての画像パスのリストを生成し、Python のランダム ライブラリを使用して、このリストから画像をランダムに選択します。次に、画像を開いて表示すると同時に、画像に関するメタデータを抽出します。さらに、インストラクターは、画像の読み込みと処理の方法を含む、Torch Vision ライブラリの機能の概要を提供します。

  • 20:30:00 このセクションでは、講師が PIL ライブラリを使用して画像を操作する方法と、画像メタデータを開いて分析する方法を示します。画像クラスは、画像データが保存されているディレクトリの名前で、メタデータは Print 関数を使用して取得されます。次に、インストラクターは、データセットからピザ、寿司、ステーキなどのランダムな食べ物の画像をいくつか示し、データセットに慣れるために画像をランダムに視覚化することの重要性を説明します。インストラクターは、次のセクションで Matplotlib を使用して画像を視覚化するという、ちょっとしたチャレンジを視聴者に提供します。

  • 20:35:00 このセクションでは、講師が matplotlib を使用して画像とデータをプロットし、NumPy メソッド NP を使用して画像を配列に変換する方法を示します。形状の不一致の問題を防ぐために、データの形状を理解することの重要性が強調されています。ピル ライブラリと matplotlib の既定の形式はカラー チャネルの最後の形式ですが、PyTorch は既定でカラー チャネルの最初の形式になります。インストラクターは、さまざまな画像を視覚化し、データに慣れる方法、およびデータを PyTorch テンソルに変換して PyTorch で使用する方法も示します。

  • 20:40:00 このセクションでは、インストラクターがターゲット データを PyTorch テンソルに変換し、PyTorch データ セットとデータ ローダーを作成するプロセスについて説明します。講師は PyTorch ドキュメントを使用して、イメージ フォルダー モジュールを使用してデータ セットを作成する方法を示し、データに特定の変換を適用できるようにする変換パラメーターを紹介します。次に、インストラクターは、画像のサイズを 64x64 に変更し、水平面上でランダムに反転してデータ セットの多様性を人為的に高める画像データの変換を作成する方法を示します。これは、引数として変換のリストを取る transforms.compose メソッドを使用して行われます。

  • 20:45:00 このセクションでは、インストラクターが PyTorch の変換モジュールを使用してイメージをトーチ テンソルに変換する方法を説明します。これは、「transforms.ToTensor()」関数で行われます。この関数は、PIL 画像または NumPy 配列を、0 から 255 の範囲のカラー チャンネルを持つ高さから、0 から 255 の範囲の高さ、幅のシェイプ カラー チャンネルのトーチ フロート テンソルに変換します。 1. インストラクターは、この変換を介してデータを渡すことを提案し、「transforms.Resize()」関数を使用して画像の形状を変更する方法を示します。このセクションは、データ拡張変換を含む torchvision ライブラリで利用可能なさまざまな変換の説明と、変換された画像を探索するための今後の視覚化コードのプレビューで締めくくります。

  • 20:50:00 このセクションでは、パスから画像をランダムにサンプリングし、それらをロードして変換し、PyTorch を使用して元のバージョンと変換されたバージョンを比較する方法を講師が実演します。このコードは、ランダム シード関数を使用してランダム関数のシードを設定し、イメージ パスのリストから k 個のイメージをランダムにサンプリングします。次に、インストラクターは matplotlib ライブラリを使用して、1 行 n 列のサブプロットを作成し、元の画像と変換された画像を並べてプロットします。変換された画像は、最後に matplotlib ライブラリの優先カラー チャネル形式に合わせて形状を変更する必要があります。最後に、コードは元の画像と変換された画像のタイトルを設定し、スーパー タイトルを画像のクラス名に設定します。

  • 20:55:00 ビデオのこのセクションでは、インストラクターが変換を使用して、PyTorch を使用して深層学習モデルの画像データを操作する方法を示します。インストラクターは変換をデータ変換と等しくなるように設定します。これは、画像のサイズが変更され、ランダムに水平方向に反転され、テンソルに変換されることを意味します。また、permute 関数を使用して、軸の順序を入れ替えてデータの形状を再配置する方法も示しています。次に、イメージをプロットして、元のバージョンと変換されたバージョンを並べて表示します。変換されたイメージは、深層学習モデルでの使用に最適なテンソル形式です。インストラクターは、画像のサイズは調整可能なハイパー パラメーターであるとアドバイスし、PyTorch で利用可能なさまざまな変換を視聴者に探索するよう勧めています。

パート22

  • 21:00:00 このセクションでは、講師が画像フォルダー オプションを使用して画像データを読み込む方法を説明します。トーチ ビジョン データ セット モジュールを使用して、一般的な画像分類形式でデータを読み込む方法を示します。事前構築されたデータ セット関数であるイメージ フォルダーが示され、変換を利用してすべてのカスタム イメージをテンソルに読み込むために使用できます。次に、インストラクターは、トレーニング データ セットを変換し、テスト データ セットを作成する方法を示します。これも、トレーニング データ セットと同じ方法で変換されます。最後に、作成したデータ セットを印刷します。

  • 21:05:00 このセクションでは、講師が PyTorch の画像フォルダー機能を使用して画像をテンソルに読み込み、パイプラインを使用して変換する方法を説明します。これは、PyTorch モデルで使用できます。クラス名をリストまたはディクショナリとして取得したり、データセットの長さをチェックしたりするなど、事前構築されたデータローダーに付属するさまざまな属性にアクセスして利用する方法を示します。さらに、インデックスを使用してトレーニング データ セットからサンプルとラベルを視覚化する方法を示します。

  • 21:10:00 コースのこのセクションでは、インストラクターが画像データセットを PyTorch のデフォルトのデータ形式であるテンソル形式に変換する方法を示します。ピザの画像の例を使用して、関連付けられたラベルを取得し、それを数値形式に変換する方法を示します。次に、データ型や形状など、テンソル データに関するいくつかの重要な情報を出力します。これは、後でトラブルシューティングに役立ちます。最後に、matplotlib を使用して画像をプロットし、タイトルをクラス名 (この場合はピザ) に設定します。彼らは、学生にさまざまな画像でこれを試し、さまざまな変換を探求するように勧めています。

  • 21:15:00 ビデオのこのセクションでは、インストラクターが PyTorch で読み込まれた画像をデータ ローダーに変換するプロセスについて説明します。データ ローダーは、データ セットを iterable に変換するのに役立ち、ユーザーがバッチ サイズをカスタマイズして、一度に特定の数の画像を表示できるようにします。すべてのイメージが一度にロードされると、メモリが不足するリスクがあるため、これは重要です。したがって、イメージをバッチ化すると、使用可能なすべてのメモリを活用するのに役立ちます。インストラクターはさらに、トレーニング データ ローダーを作成するためのステップバイステップ ガイドを提供し、データのロードに使用される CPU コアの数を決定するワーカー パラメーターの数の概念も紹介します。

  • 21:20:00 このセクションでは、インストラクターが PyTorch でデータをトレーニングおよびテストするためのデータ ローダーを作成およびカスタマイズする方法について説明します。彼は、データ セットを初期化し、データ ローダーのハイパーパラメーター (バッチ サイズやワーカー数など) をカスタマイズする方法を示しています。インストラクターは、ローダーを反復処理して、画像とラベルの形状に関する情報を取得する方法も示します。このセクションは、読み込みプロセスの概要と、画像テンソルのパターンを識別するために畳み込みニューラル ネットワークを構築するための推奨事項で締めくくります。

  • 21:25:00 このセクションでは、画像データを Tensor 形式にロードするためのカスタム データ ロード クラスを作成するプロセスについて講師が説明します。目標は、このカスタム クラスを使用してイメージ フォルダーの機能をレプリケートすることです。講師は、カスタム クラスが画像を読み込み、クラス名をリストとして取得し、クラスをデータ セットから辞書として取得するために必要な手順をリストします。カスタム データ セットを作成することの長所と短所についても説明します。これには、ほぼすべてのものからデータ セットを作成できる柔軟性だけでなく、エラーやパフォーマンスの問題が発生する可能性も含まれます。次に、インストラクターは、必要なモジュールをインポートして、カスタム クラスを作成します。これには、ファイル システムを操作するための OS とパス lib が含まれます。

  • 21:30:00 このセクションでは、PyTorch でカスタム データセットを作成する方法を学習し、ターゲット ディレクトリからクラス名を取得する関数の作成に焦点を当てています。カスタム データセットは、ファイルから画像を読み込み、データセットからクラス名を取得し、データセットからディクショナリとしてクラスを取得するために使用されます。この関数は、OS スキャナーを使用してターゲット ディレクトリを走査し、クラス名を取得します。クラス名が見つからない場合は、ディレクトリ構造に問題があることを示すエラーが発生します。後で torch.utils.data.Dataset をサブクラス化して、カスタム データセットを作成します。

  • 21:35:00 ビデオのこのセクションでは、インストラクターが、ディレクトリを文字列として取り込み、クラス名のリストと、クラス名を整数にマップする辞書を返す「find_classes」という関数の作成方法を示します。この関数は、OS スキャナーを使用してターゲット ディレクトリをスキャンし、クラス名を取得します。インストラクターは、クラス名が見つからない場合にエラーを発生させる方法も示します。この関数は、任意のディレクトリに対して使用でき、トレーニング ディレクトリに対して以前に実行された機能を複製します。

  • 21:40:00 ビデオのこのセクションでは、インストラクターが torch.utils.data.dataset をサブクラス化してカスタム データ セットを作成する方法を説明します。データ セットは、キーからデータ サンプルへのマップを表す必要があります。ここで、キーはターゲットまたはラベルを参照し、この場合のデータ サンプルは食品の画像です。サブクラスは、特定のキーのデータ サンプルを取得する get item メソッドをオーバーライドし、必要に応じて len メソッドを上書きしてデータ セットのサイズを返す必要があります。インストラクターは、カスタム データ セットを構築する手順を順を追って説明し、前のセクションで作成したヘルパー関数を使用してクラス名を整数にマッピングする方法を説明します。

  • 21:45:00 このセクションでは、インストラクターが PyTorch でカスタム データ セットを作成する方法を説明します。これを行うには、torch.utils.data.Dataset クラスをサブクラス化し、ターゲット ディレクトリ (データが存在する場所) と変換 (データ変換を実行するため) を渡すことによってカスタム データ セットを初期化する必要があります。さらに、ID X へのパス、変換、クラス、クラスなどのいくつかの属性を作成する必要があります。さらに、画像をロードする関数を作成し、LAN メソッドをオーバーライドしてデータ セットの長さを返し、get item メソッドを使用して、インデックスが渡されたときに特定のサンプルを返します。最後に、pathlib を実装し、test や train ディレクトリなどのターゲット ディレクトリを渡すことで、カスタム データセットを作成します。

  • 21:50:00 このセクションでは、講師がカスタム PyTorch データ セット クラスの作成に含まれるさまざまな手順について説明します。最初のステップでは、正しいファイル名規則に従うすべてのイメージ パスを取得します。次のステップは、一連の画像変換を作成することです。これはオプションにすることができます。インデックスを受け取って画像を返す、画像をロードする関数も作成されます。次に、インストラクターは、「len」メソッドをオーバーライドして、データセット内のサンプルの総数を返す方法を示します。これはオプションです。最後に、「get item」メソッドが上書きされ、インデックスが渡された場合に特定のサンプルが返されます。

  • 21:55:00 このセクションでは、データが PyTorch にロードされる方法をカスタマイズするために torch.utils.data.Dataset をサブクラス化することについて学びます。クラスは、ルート ディレクトリと、クラス名をインデックスにマッピングするディクショナリで初期化されます。 __len__ メソッドはデータセットの長さを返しますが、__getitem__ はデータセットにインデックスを付けて、トーチ テンソル イメージと対応する整数ラベルのタプルを返すことができます。このクラスには、タプルを返す前に画像に変換を適用するオプションの変換パラメーターもあります。 torch.utils.data.Dataset をサブクラス化する利点は、それが提供するカスタマイズ機能ですが、エラーが発生しやすい大量のコードを記述する必要があります。
PyTorch for Deep Learning & Machine Learning – Full Course
PyTorch for Deep Learning & Machine Learning – Full Course
  • 2022.10.06
  • www.youtube.com
Learn PyTorch for deep learning in this comprehensive course for beginners. PyTorch is a machine learning framework written in Python.✏️ Daniel Bourke develo...
 

深層学習と機械学習のための PyTorch – フルコース (パート 23-26 の説明)


深層学習と機械学習のための PyTorch – フルコース

パート23

  • 22:00:00 このセクションでは、講師が Torchvision モジュールを使用して PyTorch でカスタム データセットを作成する方法を示します。生の JPEG 画像をテンソルに変換する変換を作成し、トレーニングとテスト変換の構成を設定します。次に、カスタム イメージ フォルダー クラスをテストし、それが独自のカスタム データセットで機能するかどうかを確認します。長さとクラス属性をチェックして、正しく機能していることを確認します。最後に、トレーニング データ カスタムとテスト データ カスタムを調べて、すべてが期待どおりに機能していることを確認します。

  • 22:05:00 PyTorch for Deep Learning and Machine Learning フル コースのこのセクションでは、クラスを ID と比較することによって、元の画像フォルダー データセットと前のセクションで作成したカスタム データセットとの間の同等性を確認する方法をインストラクターが示します。両方のデータセットの X。彼は、独自のカスタム データセット ロード関数を作成することで、画像フォルダー データセット クラスの主な機能を複製できることを断言します。ここから得られることは、PyTorch が継承元の基本データセット クラスを提供することです。アイテムメソッドを取得して何らかの値を返すと、独自のデータセット読み込み関数を作成できます。インストラクターは、データを視覚化するために、トレーニング済みデータのカスタム クラスからランダムな画像を表示する関数を作成する方法を説明します。

  • 22:10:00 このセクションでは、「データセット」、「クラス」、および「n」をパラメーターとして受け取る「ランダム画像の表示」という関数を作成する手順を講師が説明します。この関数は、データ セットからランダムに選択された n 個の画像を表示し、"display shape" が true に設定されている場合、その形状を出力します。インストラクターは、n が 10 より大きい場合の表示の調整や、再現性のためのランダム シードの設定など、実装の詳細についても説明します。さらに、関数はランダムなサンプル画像またはインデックスをループし、Matplotlib でプロットします。

  • 22:15:00 このセクションでは、インストラクターは引き続き PyTorch で深層学習モデルを構築します。プロットを設定し、画像の寸法が matplotlib と一致していることを確認します。プロット用にテンソル次元を調整し、サブプロットを matplotlib プロットに追加し、クラスのリストである classes 変数に基づいてプロットのタイトルを調整します。次に、組み込みの pytorch イメージ フォルダーとインストラクターが作成したカスタム データ セットの両方について、イメージ フォルダーからランダムなイメージを表示する関数を作成します。最後に、シードを調整して画像をプロットし、プロットを調整するためのコードがどのように機能するかを確認します。

  • 22:20:00 トランスクリプトのこのセクションでは、インストラクターがカスタム ロードされた画像データ セットをデータ ローダーに変換する方法を示します。これは、画像をバッチ処理してモデルで使用するために必要な手順です。 torchvision.datasets.ImageFolder と torchvision.transforms を使用して、カスタム データ セットをテンソル形式に変換します。次のステップは、torch.utils.data.DataLoader を使用してデータ セットをデータ ローダーに変換することです。インストラクターは、トレーニング データ ローダー カスタムとテスト データ ローダー カスタムの両方について、バッチ サイズを 32 に、ワーカー数を 0 に設定します。それらの違いは、トレーニング データはシャッフルされますが、テスト データはシャッフルされないことです。

  • 22:25:00 このセクションのビデオでは、カスタム データ ローダーと PyTorch でのデータの変換について説明します。インストラクターは、最初に OOS CPU カウントをリセットし、麻痺したワーカーをゼロに設定して、トレーニングがスムーズに実行されるようにします。カスタム データ ローダーをセットアップした後、印刷機能を使用して、以前にセットアップされた変換によって 32 に設定された画像の形状とバッチ サイズを確認します。また、インストラクターは、データ拡張によってトレーニング データ セットの多様性を人為的に増やす方法についても説明し、サイズ変更、中央トリミング、グレースケール、ランダム変換、ランダム拡張など、トーチ ビジョン変換モジュールを使用してデータを変換するさまざまな方法を実演します。 .

  • 22:30:00 さまざまな画像変換を適用してトレーニング データに人為的に多様性を追加するプロセスであるデータ拡張について学びました。これにより、目に見えないデータに対してモデルをより一般化できます。トリミング、置換、せん断など、さまざまな種類のデータ拡張があります。 PyTorch には、モデルを適切にトレーニングするのに役立つプリミティブまたは関数を含むトーチ ビジョン パッケージがあります。 PyTorch は、データ拡張とその他の改善を使用することで、ResNet 50 モデルなどの最先端のモデルを高精度でトレーニングできるようになりました。

  • 22:35:00 このセクションでは、インストラクターが学習率の最適化、より長いトレーニング、さまざまな拡張技術の使用など、モデルの精度を向上させる方法について説明します。インストラクターは、ランダム性の力を利用して、多数のマグニチュード ビンを使用してさまざまな方法で画像を変更する単純な拡張手法に焦点を当てています。インストラクターは、PyTorch torch ビジョン変換ライブラリを使用して自明な拡張機能を実装する方法を示し、詳細を読みたい人のために論文へのリンクを提供します。さらに、インストラクターは、さまざまな拡張技術と実験を試して、個々の問題に最適なものを確認することをお勧めします。最後に、インストラクターは、すべてのイメージ パスを取得し、特定のパターンに一致するすべてのファイルとフォルダーをグロビングすることによって、拡張パイプラインをテストする方法を示します。

  • 22:40:00 このセクションでは、画像を変換して人為的に多様性をトレーニング データセットに追加する際に、データ増強技術であるトリビアル オーグメンテーションを使用する方法をビデオで示します。ランダム性のパワーは、さまざまな拡張タイプから選択し、さまざまなレベルの強度で適用することによって活用されます。このセクションでは、ランダムに変換されたイメージに自明な拡張を適用する方法と、結果を表示する方法を示します。目的は、機械学習モデルが操作された画像のパターンを学習し、それに応じてそれらを識別できるようにすることです。次のセクションでは、小さな VGG アーキテクチャを使用して、データ拡張なしで最初のコンピューター ビジョン モデルを構築することに焦点を当てます。

  • 22:45:00 このセクションでは、プレゼンターは変換を作成し、PyTorch モデルのデータをロードするプロセスを実行します。目標は、データ フォルダーから画像 (この場合はピザ、ステーキ、寿司) を読み込み、それらをテンソルに変換することです。変換には、画像のサイズを 64x64 に変更し、値が 0 から 1 の間になるように画像をテンソルに変換することが含まれます。発表者は、データ ローダーを作成し、バッチ サイズとデータの読み込み専用の CPU コアの数を調整する方法についても説明します。この例で使用されるバッチ サイズは 32 です。

  • 22:50:00 このセクションでは、インストラクターが PyTorch の DataLoader を使用してデータをロードおよび変換する方法を説明します。このプロセスでは、変換を作成してから、DataLoader 関数を使用して同時にデータの読み込みと変換を行います。インストラクターは、Tiny VGG アーキテクチャをゼロから構築するための簡単なコードも提供します。これには、COM、ReLU、MaxPool、ComToD などのレイヤーで構成される最初の COM ブロックの作成が含まれます。モデルは、入力形状、隠れユニット、および出力形状パラメーターで初期化されます。講師は学習者に、カーネル サイズやストライドなどのハイパーパラメーターのさまざまな値を試してみることを勧めます。

  • 22:55:00 このセクションでは、PyTorch を使用した畳み込みニューラル ネットワークの作成について説明します。ネットワークの畳み込みブロックと最大プーリング層を定義することから始めます。次に、同じブロックを複製して別のブロックを作成し、入力形状を変更して出力形状に一致させます。その後、畳み込みブロックの出力を特徴ベクトルに変換する分類器層を作成し、それを線形層に渡して 10 個のクラスを出力します。最後に、 forward メソッドをオーバーライドして、データを畳み込みブロックに渡し、各ステップでその形状を出力します。 forward メソッドは、GPU 計算を高速化するオペレーター フュージョンを含めるように書き直すこともできます。

パート24

  • 23:00:00 このセクションでは、インストラクターが演算子融合の概念について説明します。これは、ディープ ラーニング コンパイラで最も重要な最適化です。また、RGB カラー画像用の小さな VGG アーキテクチャを使用してモデルを作成し、その入力と出力の形状を確認します。インストラクターは、演算子融合を使用して、メモリと計算の間の移動を回避することで、大規模なニューラル ネットワークの計算を高速化することの重要性を強調しています。また、ダミー データをモデルに渡してトラブルシューティングを行い、フォワード メソッドが正しく機能していることを確認することも提案しています。最後に、入力タイプの不一致により、画像バッチをモデルに渡そうとするとエラー メッセージが表示されます。

  • 23:05:00 このセクションでは、インストラクターがモデルの形状エラーのトラブルシューティングを行っています。彼らは、テンソルを線形層に渡すときに、行列の乗算規則を満たす必要があると説明しています。インストラクターはマトリックス形状を調査し、隠れユニットの数を表す 10 が 2560 を掛けると問題を引き起こしていると判断します。前のレイヤーの出力形状を使用して、2560 を得るには 10 に 16x16 を掛ける必要があると判断します。修正後これを確認し、モデルの形状が CNN 説明者の出力と一致することを確認してから、さらなるトラブルシューティングに進み、最終的に、畳み込み層からパディングを削除すると形状が CNN 説明者の出力と一致することを発見します。

  • 23:10:00 このセクションでは、インストラクターが Torch Info を紹介します。これは、ユーザーが PyTorch モデルの概要を印刷できるパッケージです。最初に、講師は forward メソッドから print ステートメントをコメントアウトし、pip install コマンドを使用して Torch Info を Google CoLab にインストールします。次に、講師は Torch Info から概要をインポートし、それを使用してモデルと入力サイズを渡し、モデルを流れるデータの形状を取得します。インストラクターは、Torch Info がレイヤーとそれに対応する形状を含むモデルの概要を出力する方法を示します。

  • 23:15:00 このセクションでは、スピーカーは torch info パッケージについて説明します。これは、PyTorch モデルの各レイヤーの入力および出力形状のアイデアを提供するために使用されます。彼らは、パッケージが各レイヤーのパラメーター数に関する情報も提供することを説明しています。これは、将来のアプリケーションのモデルサイズとストレージの制約を決定するのに役立ちます.スピーカーは、モデルが大きくなり、レイヤーが増えると、パラメーターが増えるため、入力サイズと推定合計サイズが大きくなることに注意します。次のセクションでは、スピーカーはカスタム データ セットのトレーニングに進み、2 つの関数 (トレーニング ステップとテスト ステップ) を作成します。これらは一般的で、ほぼすべてのモデルとデータ ローダーで使用できます。トレーニング ステップ関数は、モデル、データ ローダー、損失関数、およびオプティマイザーを取り込み、評価指標を設定しながらモデルをトレーニング モードにします。

  • 23:20:00 このセクションでは、スピーカーは PyTorch のトレイン ループ関数のトレイン ロスとトレイン精度値の設定について説明します。データはデータローダーを使用してループされ、バッチごとにフォワードパスが実行されて予測が行われ、損失が計算されます。次に、オプティマイザーを使用してバックプロパゲーションを実行し、ステップを実行します。トレーニング ループが完了すると、予測されたクラスを取得し、それを正しいラベルと比較することによって精度が計算されます。これは、バッチ ループの外で行われます。そこでは、すべてのバッチでエポックごとの平均を取得するために、トレーニングの損失とトレーニングの精度が調整されます。次にスピーカーは、視聴者にテスト ループ関数を作成するように要求します。

  • 23:25:00 このセクションでは、インストラクターは、データセットで PyTorch 深層学習モデルのパフォーマンスを評価するためのテスト ステップを作成するプロセスを実行します。このステップには、評価モードでのモデルのセットアップ、データセットのバッチのループ、ターゲット デバイスへのデータの送信、フォワード パスの実行、バッチごとの損失と精度の計算、損失と精度の累積、メトリックの調整が含まれます。平均値を取得します。次にインストラクターは、トレーニング関数を作成して、モデルのトレーニング プロセスを関数化することを提案します。これについては、次のセクションで説明します。

  • 23:30:00 このセクションでは、トレーニング ステップ関数とテスト ステップ関数を組み合わせたトレーニング関数を作成するプロセスについて説明します。アイデアは、これらの両方の関数を呼び出す関数を作成して、1 回の関数呼び出しでモデルをトレーニングおよび評価することです。トレーニング関数は、オプティマイザー、データ ローダー、損失関数など、さまざまなモデル パラメーターを取り込みます。次に、インストラクターは空のディクショナリを作成して、トレーニング中のモデルのパフォーマンス (トレーニングとテストの損失と精度を含む) を追跡するのに役立てます。次に、エポックをループし、TQDM を呼び出して、モデルのトレーニング中にプログレス バーを取得します。 train 関数は、より多くのモデルをトレーニングし、既存のコードを活用するときに、コードを書き直す必要がない便利なツールです。

  • 23:35:00 このセクションでは、トレーニングとテスト ステップ機能をそれぞれ使用してトレーニングとテストを追跡するトレイン機能についてインストラクターが説明します。この関数は指定された数のエポックに対して実行され、エポックごとにトレーニングを出力し、派手な print ステートメントを使用して損失と精度をテストします。結果は結果ディクショナリに保存され、後で分析に使用されます。トレーニング機能は、トレーニング ステップ機能とテスト ステップ機能を利用して、それぞれモデルを更新し、テストします。この関数はエポックの結果を返します。

  • 23:40:00 このセクションでは、インストラクターが PyTorch ワークフローの進捗状況を確認します。これには、データの準備、モデルの構築と選択、トレーニング ループの構築、そして損失関数とオプティマイザーを作成するための課題が含まれます。セクション 7.7 に移ると、インストラクターはカスタム データ セットでベースライン モデルであるモデル 0 をトレーニングして評価する方法について説明します。再現性のためにランダム シードを設定し、カラー画像用に 3 つの入力形状で小さな VGG モデルをインスタンス化し、トレーニング データ セット内のクラスの数と一致するように、隠れユニットの数と出力形状を設定します。また、マルチクラス分類にクロスエントロピー損失関数を選択し、学習率 0.001 で Adam オプティマイザーを試します。

  • 23:45:00 このセクションでは、講師が深層学習モデルのトレーニング プロセスの時間を計測する方法を示します。最初に time からデフォルトのタイマー クラスをインポートし、タイマーを開始してから、前のビデオの train 関数を使用してモデル 0 をトレーニングします。次に、トレーニング データをトレーニング データ ローダー シンプルに設定し、テスト データをテスト データ ローダー シンプルに設定し、オプティマイザーを FriendlyAtomOptimizer に設定し、損失関数を n クロス エントロピー損失に設定します。モデルは 5 エポックにわたってトレーニングされ、タイマーが終了して合計トレーニング時間が表示されます。次に、インストラクターは、トレーニング セットとテスト セットでのモデルの精度の結果を示します。これは、それぞれ約 40% と 50% です。彼らは、レイヤーや隠れユニットを追加する、より長くフィッティングする、活性化関数を変更する、学習率を調整するなど、モデルを改善するためにさまざまな方法を試すことを提案しています。

  • 23:50:00 このセクションでは、インストラクターが損失曲線をプロットしてモデルの進行状況を経時的に追跡する方法を説明します。損失曲線は、左側に損失値、下軸にステップを視覚化することで、時間の経過に伴うモデルの進行状況を追跡する方法です。 matplotlib を使用して結果ディクショナリのトレーニングとテストの損失と精度の値をプロットすることで、モデルのパフォーマンスを確認して評価することができます。講師は、損失と精度の値を文字列と float のリストとして含む結果ディクショナリを取り込む "def plot loss curve" と呼ばれる関数を作成します。

  • 23:55:00 このセクションでは、エポックを時間のメトリックとして使用して、トレーニング データとテスト データの両方の損失曲線を作成する方法をインストラクターが示します。プロットは、損失用と精度用の 2 つのサブプロットで構成され、それぞれにラベルとタイトルが付いています。損失曲線の理想的な傾向は、時間の経過とともに損失が減少し、精度が向上することです。インストラクターは視聴者に追加のエポックを試して損失が最適値に達するかどうかを確認することを勧めます。次のビデオでは、さまざまな形式の損失曲線について説明し、インストラクターは損失曲線の解釈に関するガイドを推奨しています。

パート25

  • 24:00:00 PyTorch for Deep Learning & Machine Learning コースのこのセクションでは、インストラクターが時間の経過に伴うモデルのパフォーマンスを評価する際の損失曲線とその重要性について説明します。損失曲線は、時間の経過とともに損失が減少し、精度が向上する傾向を示す必要があります。損失曲線にはさまざまな形式があり、理想的な損失曲線は、トレーニングとテストの損失が同様の割合で減少することを示しています。アンダーフィッティングは、モデルの損失が低くなる可能性がある場合に発生しますが、オーバーフィッティングは、モデルがトレーニング データを十分に学習した場合に発生し、テストの損失よりもトレーニングの損失が低くなります。インストラクターは、Google の損失曲線ガイドから追加のカリキュラムを提供し、正則化手法やモデルの複雑さの軽減など、オーバーフィッティングに対処する方法について説明します。

  • 24:05:00 このセクションで説明した、深層学習モデルのオーバーフィッティングを減らすいくつかの方法。データ拡張またはデータ品質の向上によってより多くのデータを取得すると、モデルがより一般化可能なパターンを学習するのに役立ちます。事前トレーニング済みのモデルから学習したパターンを取得し、それらを独自のデータセットに適用することで転移学習を使用することも効果的です。レイヤーまたは隠れユニットの数を減らしてモデルを単純化することも役立ちます。学習率の減衰は、時間の経過とともに学習率を低下させることで役立ちます。また、早期停止により、オーバーフィッティングが発生する前にトレーニング プロセスを停止できます。

  • 24:10:00 このセクションでは、機械学習におけるオーバーフィッティングに対処する方法として、早期停止の概念について説明します。テスト エラーが増加し始める前に、モデルのテスト エラーが追跡され、モデルのトレーニングが停止されるか、モデルの損失が最小だった場所で重み/パターンが保存されます。モデルへのレイヤー/ユニットの追加、学習率の微調整、より長いトレーニング、転移学習の使用など、アンダーフィッティングに対処するさまざまな方法も検討されています。オーバーフィッティングとアンダーフィッティングのバランスが強調され、損失曲線を使用して経時的にモデルのパフォーマンスを評価することの重要性が強調されます。最後に、モデルの過度の正則化とアンダーフィッティングを防ぐ方法について説明し、アンダーフィッティングとオーバーフィッティングの間の適切なバランスを達成するという目標を強調します。

  • 24:15:00 深層学習と機械学習のための PyTorch に関するビデオのこのセクションでは、インストラクターがモデルのオーバーフィッティングとアンダーフィッティングの概念と、それらに対処する方法について説明します。データ拡張は、オーバーフィッティングに対処するために導入された方法の 1 つであり、画像を操作してトレーニング データ セットの多様性を高めます。次に、インストラクターは、データ拡張を使用して変換を作成し、それらの変換を使用してデータをロードして、トレーニングおよびテスト データ セットとデータ ローダーを作成する方法を示します。このビデオでは、特定の問題に最適なモデルを見つけるために、さまざまな微調整や変換を行ってさまざまなモデルを試すことの重要性を強調しています。

  • 24:20:00 ビデオのこのセクションでは、インストラクターが PyTorch 変換と ImageFolder クラスを使用してデータ セットとデータ ローダーを作成するプロセスを順を追って説明します。彼らはコード例を提供し、視聴者が必要に応じて自分でテストすることを奨励しています.データ セットは、トレーニング フォルダーとテスト フォルダーの両方のピザ、ステーキ、寿司の画像から作成されます。インストラクターは、ノートブック全体で同様の名前を使用する場合、変数名を明確にすることの重要性についても説明します。彼らはトレーニング データ セットとテスト データ セットの両方のデータ ローダーをセットアップし、トレーニング データ セットは自明なaugment wide関数で拡張されました。次にインストラクターは、視聴者が小さな VGG クラスと train 関数を使用してモデル 1 を構築およびトレーニングすることを提案します。

  • 24:25:00 PyTorch フル コースのこのセクションでは、インストラクターが以前と同じアーキテクチャを使用して新しいモデルを作成およびトレーニングするプロセスを視聴者に案内しますが、トレーニング データは強化されています。目標は、このモデルのパフォーマンスをデータ拡張なしのベースライン モデルと比較することです。インストラクターは、小さな VGG モデル用に以前に作成したクラスを使用し、再現性のために手動シードを設定します。次に、損失関数とオプティマイザーを定義し、ハイパーパラメーターを設定して、タイマーを開始します。最後に、インストラクターは、以前に作成した train 関数を呼び出し、モデルとデータ ローダーを渡し、結果を評価することで、モデルをトレーニングします。

  • 24:30:00 このセクションでは、インストラクターはデータ拡張を使用して 2 番目のモデルのトレーニングを続行し、データ拡張を使用しない最初のモデルほどパフォーマンスが良くなかったことを示します。過適合ではありませんでした。次に、インストラクターは損失曲線をプロットする関数を導入し、それを使用して 2 番目のモデルのパフォーマンスを評価します。損失曲線は、モデルが適合不足であり、場合によっては過適合であることを示しています。これは、トレーニング損失と比較してテスト損失が高いことによって示されます。次に、インストラクターは、モデルのアンダーフィットとオーバーフィットの両方に対処するために何ができるかという質問を投げかけ、より多くのデータを取得する、モデルを単純化する、転移学習を使用する、レイヤーを追加するなどのオプションを提案します。

  • 24:35:00 このセクションでは、講師がモデルの結果を比較することの重要性について説明し、さまざまな実験を追跡するために、PyTorch と TensorBoard、重みとバイアスなどのツールを提供します。ただし、彼は、このコースは今のところ純粋な PyTorch だけに焦点を当てることを強調しています。次に、インストラクターは、各モデル結果のデータ フレームを使用して、モデル結果を並べて比較するプロットを設定します。彼はまた、モデル ゼロをより長い期間トレーニングして改善するかどうかを確認する実験を試みることも提案しています。最終的に、さまざまな実験とその指標を視覚的に比較することは、モデルを改善するために重要です。

  • 24:40:00 このセクションでは、インストラクターがサブプロットを使用して、実験した 2 つのモデルのさまざまな指標を比較します。エポック数の範囲を作成することから始めて、PLT.subplot() と PLT.plot() を使用してトレイン損失のプロットを作成します。トレーニング データとテスト データの両方について、テストの損失と精度について同じことを行います。インストラクターは、データ拡張を実装したモデル 1 はこの段階ではオーバーフィッティングしているように見えるが、損失に関してはモデル 0 の方が優れていると指摘しています。インストラクターは、比較するモデルがもっとあれば、これを関数に変換できる可能性があると示唆していますが、TensorBoard、重みとバイアス、MLflow などのツールは、多数の実験が行われるときにこれらのグラフを理解するのに役立つことにも注意してください。

  • 24:45:00 このセクションでは、スピーカーは、トレーニング データセットだけではなく、テスト データセットでのパフォーマンスに基づいてモデルを評価することの重要性について説明します。彼らは、トレーニング データセットの指標は良好ですが、最終的な目標は、目に見えないデータでモデルを適切に機能させることであると示唆しています。スピーカーは、モデルをより長くトレーニングし、場合によっては各レイヤーに隠れユニットを追加して、より良い結果を達成することをお勧めします。次に、例として食品認識アプリを使用して、トレーニング データセットまたはテスト データセットにないカスタム画像で予測を行う方法のデモンストレーションに進みます。カスタム イメージをダウンロードし、トレーニング済みの PyTorch モデルを使用して予測を行うためのワークフローについて説明していますが、現在のモデルでは優れたパフォーマンスが得られない可能性があることに注意してください。

  • 24:50:00 このセクションでは、インストラクターがピザのカスタム画像をダウンロードし、トレーニング済みのモデルを使用して予測用に準備する方法を示します。イメージは生の GitHub URL を使用してダウンロードされ、データ フォルダーに保存されます。講師は、カスタム イメージは、モデルのトレーニングに使用されたデータと同じ形式である必要があることに注意しています。具体的には、データ型が torch float 32 で、形状が 64 x 64 x 3 の Tensor 形式である必要があります。 torch ビジョン パッケージと、JPEG または PNG を 3 次元 RGB またはグレースケール テンソルに読み取る read_image 関数を使用して、画像を PyTorch にロードする方法を示します。

  • 24:55:00 このセクションでは、インストラクターが torch vision.io を使用してカスタム イメージを PyTorch に読み込み、テンソルに変換する方法を示します。また、形状やデータ型など、画像に関するメタデータを取得する方法も示しています。インストラクターは、画像をモデルに渡す前に、サイズを変更し、float32 に変換し、適切なデバイスに配置する必要があるかもしれないと指摘しています。次のセクションでは、PyTorch モデルを使用してカスタム イメージで予測を行う方法を示す予定です。

パート26

  • 25:00:00 このセクションでは、講師が深層学習におけるデータ型と形状の重要性と、それらに関連するエラーを修正する方法について説明します。インストラクターは画像で予測を試みますが、カスタム データがモデルが最初にトレーニングされたデータ型と同じではないため、エラーが発生します。彼らは、カスタム イメージ テンソルを再作成し、それをトーチ フロート 32 に変換することによって、エラーを修正する方法を示しています。その後、インストラクターは、カスタム イメージの形状に関する別の問題に直面し、変換パイプラインを作成してイメージのサイズを変更することによって修正する方法を示します。モデルがトレーニングされたのと同じサイズ。

  • 25:05:00 このセクションでは、インストラクターが PyTorch の transforms パッケージを使用して入力画像を変換し、深層学習モデルで使用できるように準備する方法を示します。カスタム画像に変換パイプラインを適用する方法を示します。これにより、画像が圧縮され、ピクセル化されます。インストラクターは、これがモデルの精度に影響を与える可能性があることに注意し、パフォーマンスを向上させるために、より大きな画像サイズを試してみることをお勧めします。また、推論のためにモデルを通過する前にカスタム画像にバッチ次元を追加するなど、テンソル次元がモデルの要件と一致することを確認することの重要性についても説明しています。

  • 25:10:00 ビデオのこのセクションでは、プレゼンターが PyTorch モデルを使用してカスタム画像データで予測を行う方法を示します。エラーを回避するために、データを正しくフォーマットし、モデルがトレーニングされたのと同じデータ型、形状、およびデバイスを持つようにすることの重要性を強調しています。プレゼンターは、softmax 関数を使用して、モデルの生の出力またはロジットを予測確率に変換する方法も示します。この例で使用されているモデルはうまく機能しませんが、カスタム データを予測するプロセスが示されています。

  • 25:15:00 ビデオのこのセクションでは、インストラクターがカスタム画像予測プロセスを機能させる方法を示します。この関数は、PyTorch モデル、イメージ パス、クラス名のリスト、変換、およびデバイスを入力として受け取ります。 TorchVision を使用して画像を読み込み、フォーマットし、予測ラベルを取得し、予測をタイトルとして画像をプロットします。インストラクターは、視聴者にこの機能を自分で構築するように促し、ビデオで可能な実装について説明します。このセクションでは、この機能は完全には実装されていません。次のビデオに続きます。

  • 25:20:00 このセクションでは、PyTorch を使用してカスタム データを予測する方法を説明します。まず、モデルが適切に処理できるように、画像データを 0 から 1 の間にスケーリングする必要があります。次に、変換が必要かどうかを確認し、必要な場合は画像を渡します。次に、モデルが正しいデバイス上にあることを確認し、推論モードにします。また、モデルが予測するバッチ サイズ 1 を反映するために、画像に追加のディメンションを追加します。次に、予測を行い、ソフトマックスを使用して生のロジットを予測確率に変換し、argmax を使用してそれらを予測ラベルに変換します。最後に、予測と予測確率とともに画像のプロットを作成します。クラス名のリストが提供されている場合、関数はプロット内の各予測のクラス名を複製します。

  • 25:25:00 このセクションでは、インストラクターが画像を取り込み、事前トレーニング済みの PyTorch モデルを使用して予測クラスを表示できる関数を作成する方法を説明します。この関数は、ラベル付けのためにクラス名のリストを受け取ることができ、予測確率も表示します。次に、インストラクターはカスタム画像と事前トレーニング済みモデルでこの関数を使用する方法を示し、matplotlib との互換性のために結果を CPU に置くことの重要性を説明します。モデルのパフォーマンスが低いにもかかわらず、インストラクターは結果を視覚化する力を強調しています。

  • 25:30:00 このセクションでは、インストラクターが、PyTorch を使用してカスタム データを予測する方法を説明した前のセクションからの主なポイントをまとめます。覚えておくべき主なポイントは、正しいデータ型、正しいデバイス、正しい形状など、モデルの予想される形式に一致するようにデータを前処理する必要があるということです。 PyTorch にはさまざまなデータ型を処理するための多くの組み込み関数があり、ユーザーは必要に応じて独自のカスタム データセット クラスを作成できます。さらに、インストラクターは、モデルをトレーニングする際にオーバーフィッティングとアンダーフィッティングのバランスを取ることの重要性を強調し、演習や課外教材など、さらなる学習と実践のためのいくつかのリソースについて言及しています。

  • 25:35:00 このセクションでは、インストラクターは学習者に、最初に PyTorch カスタム データ セット演習テンプレートを確認し、自分ですべてのコードを記入するように勧めています。行き詰まった場合は、インストラクターが提供する解決策の例を参照できます。提供されるソリューションは、物事を行うための 1 つの方法にすぎず、ユーザーは自由にそれらを参照し、実装と比較できます。プロセス中に発生した解決策とエラーは、YouTube で利用可能なライブ ウォークスルーでも確認できます。インストラクターは、多くの演習をカバーしており、PyTorch ディープ ラーニング リポジトリで追加の演習とソリューションを確認できることをユーザーに思い出させます。インストラクターは最後に、learnpytorch.io でさらに 5 つの章が利用可能であることに言及して、学習者は転移学習、pytorch モデルの実験の追跡、pytorch ペーパーの複製、および pytorch モデルの展開について詳しく学ぶことができます。
PyTorch for Deep Learning & Machine Learning – Full Course
PyTorch for Deep Learning & Machine Learning – Full Course
  • 2022.10.06
  • www.youtube.com
Learn PyTorch for deep learning in this comprehensive course for beginners. PyTorch is a machine learning framework written in Python.✏️ Daniel Bourke develo...
 

MIT 6.034「人工知能」。 2010 年秋。講義 1. 概要と範囲



1. 概要と範囲

このビデオは、MIT 6.034 コース「人工知能」の紹介です。教授は、人工知能の定義とその重要性を説明し、主題を理解するために重要な思考と表現のモデルについて議論します。最後に、このビデオでは、成績の計算方法、クイズと決勝の内容など、コースの概要を簡単に説明しています。

  • 00:00:00 このビデオでは、教授が人工知能の定義とその重要性について説明しています。彼は続けて、このコースを受講する人は誰でも賢くなると言っています。教授はまた、思考のモデルと、主題をよく理解するためにそれらがどのように重要であるかについても説明します.最後に、優れたモデルを作成するための表現の重要性について語っています。

  • 00:05:00 このビデオでは、教授がジャイロスコープの仕組みと問題をグラフで表現する方法を説明しています。その後、彼は農民のキツネのガチョウと穀物の問題を解決する方法を説明します。これは、多くの人が子供の頃からよく知っている例です.

  • 00:10:00 このビデオでは、人工知能の概念と、人工知能によって生成されたテストを含む、そのさまざまなコンポーネントを紹介しています。ビデオでは、ルンペルシュティルツキンの原理について説明しています。この原理では、名前を付けることができれば、それを乗り越えることができると述べています。

  • 00:15:00 このビデオでは、単純なアイデアの概念を紹介しています。これは強力で、単純にも複雑にもなり得ます。次にビデオでは、単純なアイデアの定義と例について説明します。このビデオの要点は、よりスマートなプログラムを構築するにはシンプルなアイデアが重要であり、科学者とエンジニアはそれらを研究する動機が異なるということです。

  • 00:20:00 このビデオでは、1 世紀以上前に Ada Lovelace が行った研究から始めて、人工知能の歴史について説明しています。現代の AI の時代は、1960 年にマービン ミンスキーによって書かれた論文で幕を開けました。いつの日か、人工知能の議論がコースに含まれるようになります。

  • 00:25:00 「ブルドーザー時代」とは、人々が無制限の計算能力にアクセスできることに気づき始め、ルールベースのエキスパート システムを開発し始めた時代を指します。

  • 00:30:00 このビデオでは、人間の進化の歴史と、人間は段階的かつ継続的な改善を通じて進化したという高校の考えについて説明しています。人類の進化につながった偶発的な変化がどのように偶発的な進化の産物であったかを議論し、これらの変化が何であるかを推測します.

  • 00:35:00 このビデオでは、人間の知能の発達に関するノーム チョムスキーの考えを簡単に紹介しています。主なポイントは、言語は人間の知性の中心にあり、このコースの主な目的は学生がその分野のスキルを伸ばすのを助けることであるということです。このビデオでは、コースの重要な側面である朗読とチュートリアルの重要性についても言及しています。

  • 00:40:00 このビデオでは、講義への出席と成績の相関関係など、MIT コースの概要を簡単に説明しています。次に、ビデオは、コースが学生の成績を計算する方法の概要を提供します。これには、小テストと決勝での学生の成績が考慮されます。最後に、このビデオでは、プレッシャーが大きすぎて改善の機会が少なくなるため、すべての最終試験を受けようとしないよう学生に警告しています。

  • 00:45:00 ビデオでは、クイズとファイナルを紹介し、クイズの仕組みとファイナル試験の形式について説明しています。このビデオでは、学生がインストラクターに連絡してチュートリアルをスケジュールする方法についても説明しています。
1. Introduction and Scope
1. Introduction and Scope
  • 2014.01.10
  • www.youtube.com
MIT 6.034 Artificial Intelligence, Fall 2010View the complete course: http://ocw.mit.edu/6-034F10Instructor: Patrick WinstonIn this lecture, Prof. Winston in...
 

講義 2. 推論: ゴール ツリーと問題解決



2. 推論: ゴール ツリーと問題解決

このビデオでは、推論、ゴール ツリー、問題解決の方法について説明します。 「問題削減」と呼ばれる手法を紹介し、微積分の問題を解決するためにどのように使用できるかを説明します。また、ヒューリスティック変換を使用して問題を解決する方法と、知識を使用して複雑なドメインの問題を解決する方法についても説明します。

  • 00:00:00このビデオでは、微積分学の学生が使用する一般的な問題解決手法である問題の削減を紹介しています。問題削減の背後にある教育哲学について説明し、問題削減の例のリストを提供します。

  • 00:05:00 スピーカーは、問題解決の仕組みと、さまざまな変換が問題の解決にどのように役立つかを説明しています。問題を解決するために必要な 4 つの安全な変換について説明します。最初のステップは、すべての安全な変換を適用してから、表を調べて問題が解決したかどうかを確認することです。問題が解決した場合、スピーカーは成功を報告します。

  • 00:10:00 ビデオでは、ゴール ツリーと問題解決の概念について説明し、ヒューリスティック変換のアイデアを紹介しています。これらの変換は、常に成功するとは限りませんが、特定の状況では役立ちます。

  • 00:15:00 ビデオでは、問題の解決に使用できるさまざまなヒューリスティック変換について説明しています。これらの変換の 1 つは変換のファミリーであり、1 つだけを示します。この変換は次のようになります。タンジェントと X の関数の積分がある場合、これを Y の関数の 1 プラス y の 2 乗 dy の積分として書き直すことができます。三角関数形式から多項式形式へのこの変換により、処理したくない三角関数のゴミがすべて取り除かれます。私たちが必要とする C もあり、それはあなたの適切な反射的な反応になるでしょう。 1 から x の 2 乗を引いたものを見たとき、あなたはどうしますか?まあ、あなたはそれを行うことができます。クリステンが何か提案できることがあれば、あなたにできることは何もありません。彼女は、私たちのハンガリー人が私たちの若いターンを変えたので、X人のサインを適用する変換を行うことを示唆していると言います.これは、Scylla が実際にそのことを覚えておく必要がなくなったことを意味します。彼女はプログラムをシミュレートすることができます。これらは多項式形式から三角関数形式に戻るため、次の 3 つがあります。

  • 00:20:00 ビデオでは、推論、ゴール ツリー、問題解決について説明しています。プレゼンターは、「ゴール ツリー」と呼ばれる問題解決手法を紹介します。このツリーは、目標が互いにどのように関連しているかを示しており、どの問題を解決するかを決定するのに役立ちます。プレゼンターは、この手法は「問題誘導ツリー」または「ツリー ゴール ツリー」としても知られていると説明しています。

  • 00:25:00 このビデオでは、ゴール ツリーと問題解決の概念を紹介し、シンボルを使用して機能構成の深さを測定する方法を示します。次にビデオは、安全な変換を適用して積分を 3 つの部分に分割する方法と、特定の有理関数に対してそれがどのように機能するかを示します。

  • 00:30:00 このビデオでは、安全な変換を構成して問題を解決する推論プログラムについて説明しています。これは、プログラムが特定の問題の解決に至らずに停止し、別の問題の作業に戻った様子を示しています。

  • 00:35:00 このビデオでは、新入生の微積分問題に関するシュレーゲルのモデルの背後にある推論について説明しています。このモデルでは、問題を解決するために、変換、古いツリーの仕組み、およびテーブルに関する知識が必要です。このビデオでは、ブレットが提案した手法である関数構成の深さは実際には問題にならないことについても言及しています。ツリーは深くも広くも成長しないからです。

  • 00:40:00 このビデオでは、問題解決において知識がどのように表現されるか、特定の変換によって問題がどのように単純化されるかについて説明しています。また、複雑な領域の問題を解決するために知識をどのように使用できるかについても説明します。

  • 00:45:00 講演者は、コンピューターがいかに「インテリジェント」であるかを示すと思われるプログラムを実演します。しかし、話し手はプログラムが自分と同じことをしていることにすぐに気付きます。そのため、コンピューターは真に知的ではありません。
2. Reasoning: Goal Trees and Problem Solving
2. Reasoning: Goal Trees and Problem Solving
  • 2014.01.10
  • www.youtube.com
MIT 6.034 Artificial Intelligence, Fall 2010View the complete course: http://ocw.mit.edu/6-034F10Instructor: Patrick WinstonThis lecture covers a symbolic in...
 

講義 3. 推論: ゴール ツリーとルールベースのエキスパート システム



3. 推論: ゴール ツリーとルールベースのエキスパート システム

このビデオでは、ルールベースのエキスパート システムがどのように機能するかを説明します。このシステムは、従来の方法では解決が困難な問題を解決するように設計されています。このシステムはゲートで接続されたいくつかのルールで構成されており、システムは特定の動物を確実に認識することができます。

  • 00:00:00 このビデオでは、ルールベースのエキスパート システム (RBS) がどのように構築されるかを説明し、システムがどのように機能するかの例を示します。 RBS は、代数方程式などの従来の方法では解決が困難な問題を解決するように設計されています。

  • 00:05:00 このビデオでは、パトリック ウィンストン教授が推論プログラム、つまりルールベースのエキスパート システムがどのように機能するかを説明しています。プログラムの構造は非常に単純で、目的の結果を得るために反復ループで実行される 4 つのブロックがあります。このプログラムは、過去に回答した質問からヒントを得て、再帰を使用して複雑な結果を達成するため、単純なブロックを含む問題を解決できます。

  • 00:10:00 ビデオでは、ゴール ツリーを使用して、何かがどのように行われたかについての質問に答える方法と、and-or ツリーを使用してこれを行う方法について説明しています。また、統合プログラムがゴール ツリーを使用して、自身の動作に関する質問に答えることができることも説明しています。

  • 00:15:00 このビデオでは、複雑な動作がプログラムの複雑さではなく、環境の複雑さの結果であることが説明されています。ルールベースのエキスパート システムは、知識を単純なルールにカプセル化する方法として 1960 年代後半に開発され、現在でも使用されています。

  • 00:20:00 この YouTube ビデオでは、前方連鎖ルールベース エキスパート システム (RBSES) を使用して小さな動物園で動物を識別する方法について説明しています。 RBSES はゲートで接続されたいくつかのルールで構成され、システムが特定の動物を確実に認識することを可能にします。

  • 00:25:00 このビデオでは、オブジェクトが特定の種類の動物であるかどうかを判断する仮説から逆戻りして、ルールベースのエキスパート システム (RBE) がどのように機能するかを説明しています。

  • 00:30:00 ポルトガルの建築家シザが設計したものと同様の住宅を設計するために、ルールベースのエキスパート システムが作成されました。このシステムは、食料品店のバガーが言うことを if-then ルールに変換することができ、ナレッジ エンジニアがそれを理解できるようにします。

  • 00:35:00 このビデオでは、パトリック ウィンストン教授が、特定のケースの必要性やヒューリスティックの使用など、知識工学の原則について説明しています。彼はまた、2 つのオブジェクトが同じか異なるかというヒューリスティックな 2 番目の問題を問題解決にどのように使用できるかの例も示しています。

  • 00:40:00 プレゼンターは、人間の知性を強化する 3 つの方法について説明します。それは、ルールベースのシステムを構築すること、目標主導型のプログラムを開発すること、および統合プログラムを使用することです。 3 番目のヒューリスティックは、ルールまたは目標が守られていない場合、システムがクラックし、さらなる知識が必要であることを示します。プレゼンターは、プログラムがペニシリンのバレルを患者に処方したケースについて議論することで、これを実証します。

  • 00:45:00 このビデオでは、目標ツリーとルールベースのエキスパート システムによる推論がどのように機能するかを説明しています。どちらの例でも、システムはストーリーを読み、アクションの結果を判断できます。
3. Reasoning: Goal Trees and Rule-Based Expert Systems
3. Reasoning: Goal Trees and Rule-Based Expert Systems
  • 2014.01.10
  • www.youtube.com
MIT 6.034 Artificial Intelligence, Fall 2010View the complete course: http://ocw.mit.edu/6-034F10Instructor: Patrick WinstonWe consider a block-stacking prog...
 

講義 4. 検索: 深さ優先、ヒル クライミング、ビーム



4. 検索: 深さ優先、山登り、ビーム

この YouTube ビデオでは、パトリック ウィンストンが、深さ優先、ヒル クライミング、ビーム、ベスト優先の検索など、さまざまな検索アルゴリズムについて説明しています。例としてマップを使用して、各アルゴリズムの利点と制限、およびさまざまな検索方法を理解することで問題解決スキルがどのように向上するかを示します。ウィンストンは、創世記システムを使用してマクベスの物語に関する質問に答える、インテリジェント システムにおける検索アルゴリズムのアプリケーションについても説明します。彼はまた、ピュロスの勝利の概念と、検索プログラムがグラフを調べてその結果を英語で報告することにより、そのような状況を発見する方法を紹介しています。全体として、ビデオは検索アルゴリズムの包括的な概要と、実際のシナリオでの実際の使用法を提供します。

  • 00:00:00 このセクションでは、パトリック ウィンストンがさまざまな検索方法と、それらが私たち自身の問題解決能力にどのように関係しているかについて説明します。彼は、地図上のある地点から別の地点への最適な経路を見つける例で、優れた検索アルゴリズムの重要性を示しています。彼はまた、可能なすべての経路を探索する大英博物館の検索の概念を紹介していますが、この方法は効率的ではないと指摘しています。彼は、深さ優先、ヒル クライミング、ビーム探索、およびそれらをさまざまなシナリオでどのように使用できるかについて説明します。彼は、さまざまな検索アルゴリズムを理解することで、問題解決に関する直感を養うことができ、私たちの脳がどのように問題に取り組むかについての洞察も得られる可能性があると強調しています。

  • 00:05:00 このセクションでは、マップの例を使用して、深さ優先、ヒル クライミング、およびビーム検索の概念を紹介します。大英博物館のアルゴリズムを利用して、地図で自分の尻尾を噛むことなくすべての可能な経路を見つける方法を説明します。検索はマップで表されますが、マップに限定されるものではなく、実際には意思決定を行う際に行われる選択に関するものであることが明らかにされています。深さ優先検索は、示されている検索の 1 つであり、ひたむきに突き進み、道を選択し、行き止まりに直面したときに後戻りすることで構成されます。アルゴリズムをより効率的にする方法として、バックトラックのプロセスも導入されています。

  • 00:10:00 このセクションのビデオでは、深さ優先検索と幅優先検索の 2 つの主要な検索アルゴリズムについて説明します。深さ優先検索は、オプションのバックトラッキング手法と組み合わせて使用するのが最適です。ゴールにつながるパスを見逃すのを防ぐことができるからです。幅優先探索は、レベルごとにツリーを構築し、ゴールに至るパスを完成させます。ビデオでは、サンプルの問題で両方の検索アルゴリズムをテストし、開始位置を移動し、それに応じて検索を調整します。キューを使用して検討中のパスを表す、検索のアルゴリズムを示すフローチャートが導入されています。

  • 00:15:00 このセクションでは、スピーカーは深さ優先検索アルゴリズムがどのように機能するかを説明します。アルゴリズムは、キューを初期化し、キューの最初のパスを拡張することから始まります。 s を拡張した後、スピーカーは 2 つのパスを取得します。s は a に移動し、s は b に移動します。深さ優先検索の場合、新しい拡張パスがキューの先頭に置かれるため、アルゴリズムは検索ツリーに降り続けることができます。講演者はまた、幅優先検索は深さ優先検索と同じアルゴリズムを使用するが、1 行だけ変更して、新しいパスをキューの前ではなく後ろに配置することを説明します。

  • 00:20:00 このセクションでは、幅優先探索の制限とそれを改善する方法について学びます。このアルゴリズムは非効率的であると見なされ、目標に近づいているのか遠ざかっているのかを判断できません。さらに、同じノードに複数回移動するパスを拡張することが多いため、これを回避する必要があります。最終ノードが以前に拡張されていない場合を除き、パスを拡張しないようにアルゴリズムを修正することにより、重複したパスで時間を無駄にすることを避けることができます。この方法を使用すると、検索効率とパスの品質が大幅に向上します。

  • 00:25:00 このセクションでは、ノードまでの距離を考慮してゴール ノードを見つけるためのより情報に基づいたアプローチとして、ヒル クライミング探索について説明します。深さ優先検索と同様に、Hill Climbing はオプションを語彙的にリストし、ゴール ノードへの近さに基づいて関係を断ち切ります。これにより、後戻りのないより直線的なパスが得られますが、常に最適なパスであるとは限りません。このビデオは、Hill Climbing が、深さ優先検索と比較してエンキューが少なく、より直接的なパスを生成することを示しています。ビデオでは、可能であれば検索アルゴリズムでのヒューリスティックの使用を推奨しています。

  • 00:30:00 このセクションでは、インストラクターは、ヒューリスティックを使用した情報に基づいた検索を可能にする幅優先検索を補完または追加するビーム検索の手法について説明します。 Beam Search は、各レベルで考慮するパスの数に制限を設定し、追加情報またはゴールまでの距離のヒューリスティック測定を利用して、ゴールに最も近づくことができる上位 2 つのパスのみを保持します。インストラクターは、ヒルクライミングは情報に基づいた検索でもあり、ゴールまでの距離を考慮してキューの先頭に新しいパスを追加し、すべてをまっすぐに保つためにソートされていると述べています.

  • 00:35:00 このセクションでは、スピーカーは、山などの連続した空間で使用できる 2 つの追加の検索アルゴリズムであるビーム検索とベストファースト検索について説明します。ビーム検索では、ソリューションとして w 個の最適なパスを選択して保持する必要がありますが、ベスト ファースト検索では、常にゴールに最も近いリーフ ノードで作業する必要があり、検索ツリー内をスキップできます。ヒル クライミングでは、極大値でスタックしたり、平坦な領域で動けなくなったりするなど、連続する空間で問題が発生する可能性があります。最後に、スピーカーは、鋭い橋が存在する可能性がある高次元空間でのヒルクライミングに関する追加の問題を示しています。

  • 00:40:00 このセクションのビデオでは、モデリング インテリジェンスと、インテリジェント システムの構築における検索アルゴリズムの必要性について説明しています。話者は、地形図の例を使用して、実際にはそうではないのに、自分が一番上にいると思い込んでしまう方法を説明します。これは、計画を立て、選択を評価するために必要な検索の概念につながります。次にスピーカーは、創世記システムを使用して、検索アルゴリズムを使用してマクベスの物語に関する質問に答える方法を実演します。システムは情報を吸収し、精緻化グラフを作成し、復讐やその他のより高いレベルの概念に関連するストーリーのパターンを検索します。

  • 00:45:00 このセクションでは、パトリック ウィンストンがピュロスの勝利の概念について説明します。これは、最初はすべてが順調に進んでいるように見えますが、最終的にはマイナスの結果につながる状況です。彼は、検索プログラムがグラフを調べることでそのような情報を発見し、その情報に基づいて質問に答える方法を示しています。プログラムは、明示的なステートメントと if/then ルールの組み合わせを使用して、これらのグラフを作成し、情報を英語で報告します。ウィンストンはまた、これらのプログラムは、情報を生成した検索について報告することで、常識的な答えとより高度な考えを生み出すことができると述べています.最後に、パーサー システムによって生成された言語出力を使用して、マクベスの性格と動機に関する質問に答えるシステムの能力を示します。
4. Search: Depth-First, Hill Climbing, Beam
4. Search: Depth-First, Hill Climbing, Beam
  • 2014.01.10
  • www.youtube.com
MIT 6.034 Artificial Intelligence, Fall 2010View the complete course: http://ocw.mit.edu/6-034F10Instructor: Patrick WinstonThis lecture covers algorithms fo...
 

講義 5. 検索: 最適、分枝限定、A*



5. 検索: 最適、分枝限定、A*

このビデオでは、シカゴとロサンゼルスの間のルート 66 の例に焦点を当てて、2 つの場所の間の最短経路を見つけるためのいくつかの検索アルゴリズムについて説明します。このビデオでは、ヒューリスティック距離の概念を紹介し、ヒル クライミング、ビーム検索、分岐限定などのさまざまな検索アルゴリズムの例を示します。講演者は、検索を最適化するために A* アルゴリズムで許容できる一貫したヒューリスティックを使用することの重要性を強調しています。さらに、このビデオでは、拡張リストと飛行距離を使用して最短経路の下限を決定することの有効性についても説明しています。最終的に、このビデオは、次の講義で A* アルゴリズムのさらなる改良について議論するという約束で締めくくられます。

  • 00:00:00 このセクションでは、教授は、シカゴとロサンゼルスの間のルート 66 の例に焦点を当てて、2 つの場所の間の最短経路を見つける方法について説明します。彼は、アイゼンハワー大統領による州間高速道路システムの作成について言及しています。アイゼンハワー大統領は、ドイツ国内で部隊を迅速に移動させるドイツ軍の能力を再現したいと考えていました。次に教授は、ヒューリスティック距離の概念と、常に正しいとは限りませんが、最適なパスを見つけるのにどのように役立つかを紹介します。彼はまた、ヒル クライミングやビーム検索など、目的地に近づくことによって最適な経路を見つけることを目的としたさまざまな検索アルゴリズムの例を挙げています。

  • 00:05:00 このセクションでは、教授がヒューリスティック距離の概念と問題解決の原理について、答えを知っている人に尋ねることで説明します。地図上で最短経路を見つける例を使用して、教授はフアナが提案した経路に従うことを提案しますが、他のすべての可能な経路が提案された経路よりも長くなるかどうかを確認することによって検証します。教授は、パスの長さが Juana によって提案されたものと一致するまで、パスの長さを計算し、延長する最短のパスを選択するプロセスについて詳しく説明します。

  • 00:10:00 このセクションでは、スピーカーはオラクルなしで最短経路を見つける方法について説明します。アプローチとは、これまでの最短経路をゴールに到達するまで延長することです。スピーカーは、負でない長さのパスを考慮して最短パスを見つけるプロセスを説明する例を提供します。このアプローチは、これまでに行われた作業が無駄になっていないかどうかをチェックし、そうでない場合は、パスの長さが最短になります。講演者は、このアプローチで最短経路を見つけることができるが、長さがゼロの長さが存在する場合は他の経路が存在する可能性があると説明しています。

  • 00:15:00 ビデオのこのセクションでは、話者は分岐と境界を使用して、より複雑な地図上で最短経路を見つける方法を示します。フローチャートの装飾について言及し、キューを初期化するプロセス、キューの最初のパスをテストするプロセス、勝者ではないパスを拡張するプロセスを説明しています。講演者は、分岐限定アプローチは多くのパスを待ち行列に入れ、多くの最適ではないパスを拡張しますが、これは以前に拡張されていないパスのみを拡張することで改善できることに注意します。スピーカーは、最適なパスを見つけるために拡張パス アプローチのみを使用することの重要性を強調しています。

  • 00:20:00 このセクションでは、拡張リストの概念が分枝限定アルゴリズムの調整改善として導入されます。拡張リストは、アルゴリズムが、既に拡張されていて、既に同じポイントに到達したパスよりも長いパスを拡張するのを防ぎます。拡張されたリストを保持することで、ツリーの広大な領域を取り除くことができ、ソリューションに到達するために必要な拡張の数を減らすことができます。前の例と比較して、新しいアルゴリズムは 835 ではなく 38 の拡張しか必要としないため、計算時間が大幅に節約されます。

  • 00:25:00 このセクションでは、飛行距離を使用して最短経路の下限を決定するという概念が紹介されています。経路の下限を提供するために、累積距離と飛行距離が加算されます。次に、S から G までの潜在的距離が最も短いパスを選択して、シミュレーションを示します。スコアが同点の場合、語彙的に最小の値を持つパスが選択されます。

  • 00:30:00 このセクションでは、スピーカーはヒューリスティックを使用してグラフ検索アルゴリズムを高速化する方法について説明します。許容ヒューリスティックを使用すると、推定値が実際の距離よりも小さいことが保証されます。拡張リストは、これらの下限ヒューリスティックのいずれかを使用するよりも便利です。ただし、ヒューリスティックの有効性は問題によって異なり、開始位置の配置を変更することによって、検索の結果が変更される可能性があります。最終的に、ヒューリスティックを使用しても同じノードを介して移動が繰り返されない可能性があることに注意することが重要ですが、効率的な検索に不可欠な何かを必ずしも実行するとは限りません。

  • 00:35:00 このセクションのビデオでは、許容ヒューリスティックと分岐限定アルゴリズムの両方を組み合わせた検索アルゴリズムである A* について説明します。両方のテクニックを活用することで、A* は個々のパフォーマンスを大幅に向上させることができます。許容ヒューリスティックは厳密な目標を使用しますが、分枝限定アルゴリズムは関連する宇宙探査を理解します。このビデオでは、両方の手法を併用すると、A* がどのように問題をより効率的に解決できるかを示しています。ただし、ビデオでは、検索が従来の地図を超えた場合、特定の状況では容認が不可能になる可能性があることにも注意してください。その結果、許容階層と A* アルゴリズムは、最適解を見つけるのにあまり効果的でなくなる可能性があります。

  • 00:40:00 このセクションでは、教授が A* アルゴリズムにおける許容ヒューリスティックの概念について説明します。彼は、距離が奇数のマップの例を示し、許容可能なヒューリスティックを使用しても必ずしも最短経路を見つけることができない場合があることを説明しています。教授は、許容可能なヒューリスティックはマップに対してのみ機能し、マップではない状況でアルゴリズムを機能させるには、ヒューリスティックの許容性よりも強力なものが必要であることを強調しています。このビデオは、次の講義でこの改良点について議論するという約束で締めくくられています。

  • 00:45:00 このセクションでは、講師が A* アルゴリズム内で機能するヒューリスティック関数の要件について説明します。彼は許容性と一貫性の概念を紹介し、ヒューリスティック関数がマップではない状況で機能するためには、許容性と一貫性の両方が必要であることを説明しています。彼は、許容できるが一貫性のないヒューリスティックを使用すると、一貫したヒューリスティックが機能したシナリオでも、アルゴリズムが失敗する可能性があることを示しています。最後に、講師は、拡張リストと適切なヒューリスティック関数の使用を含め、A* アルゴリズムを最適化するために利用可能なすべての利点を使用することの重要性を強調します。
5. Search: Optimal, Branch and Bound, A*
5. Search: Optimal, Branch and Bound, A*
  • 2014.01.10
  • www.youtube.com
MIT 6.034 Artificial Intelligence, Fall 2010View the complete course: http://ocw.mit.edu/6-034F10Instructor: Patrick WinstonThis lecture covers strategies fo...
 

講義 6. 検索: ゲーム、Minimax、およびアルファベータ



6. 検索: ゲーム、ミニマックス、アルファベータ

このビデオでは、コンピューターはチェスをプレイできないという有名なドレフュスの言葉から始めて、AI でのゲームプレイの歴史について説明しています。スピーカーは、if-then ルールがゲームをプレイするプログラムでは効果的ではないこと、およびより深い分析と戦略が必要であることを説明します。ゲーム検索の効率を最適化するために、ミニマックス アルゴリズムと alpha-beta pruning の概念が導入されています。このビデオでは、保険契約のコストを最小限に抑える方法や、漸進的な深化などの手法についても説明します。話者は、ブルドーザーの知能は重要ですが、必ずしも人間が自分の頭の中に持っているのと同じ種類の知能であるとは限らないと結論付けています。

  • 00:00:00 このセクションでは、スピーカーは AI でのゲームプレイの初期の歴史について議論し、コンピューターはチェスをプレイできないというヒューバート ドレイファスの有名な引用を強調します。ただし、講演者は、ゲームが知能の一部の要素をモデル化できると主張し、コンピューターがチェスをプレイする方法を説明します。彼らは、if-then ルールを使用してゲームにアプローチすることを検討しています。この方法はあまり効果的ではありませんが、プログラムをプレイする一部のチェッカーで成功裏に実装されています。講演者は最終的に、ゲームをプレイするプログラムには戦術とスピードに加えてより深い分析と戦略が必要であると結論付けています。

  • 00:05:00 このセクションでは、スピーカーは強力なチェス プログラムを作成する 3 つ目の方法について説明します。これには、可能な限り最高の盤面の状況を判断するために、先を見据え、動きのすべての可能な結果を評価することが含まれます。これには、チェス盤の機能を組み合わせて、最適な盤面の状況を判断するために使用される静的な値を生成する関数が必要です。スピーカーは、静的な値を形成する最も一般的な方法は、線形スコアリング多項式を使用することであると説明しています。ただし、使用される方法は、ボードの状況をランク付けしたり、番号を付けたりする必要はありません。最適なものを決定する必要があるだけです。また、ムーブ ツリーの分岐要因と、ターミナル ノードまたはリーフ ノードの数を計算する方法についても説明します。

  • 00:10:00 このセクションでは、スピーカーは、ゲームの決定木に多数のリーフ ノードがあるため、チェスにおける大英博物館のアルゴリズムの制限について説明します。 Claude Shannon によると、チェスには約 10 から 120 番目の葉節があり、大英博物館の処理を使用して最良の動きを評価することは実際的ではありません。その数字を概観するために、話者は、宇宙のすべての原子がビッグバンの始まりからナノ秒の速度で静的評価を行っていたとしても、それでも14桁足りないと計算しています.したがって、話者は、チェスで最良の動きを評価したい場合は、可能な限り先を見る必要があると結論付けています.

  • 00:15:00 このセクションでは、スピーカーはミニマックス アルゴリズムについて説明します。これには、ゲーム ツリーのリーフ ノードに値を割り当て、レベルごとに「それらをバックアップ」して、各プレイヤーに最適な動きを決定することが含まれます。最大化するプレーヤーはプレイを最大値に近づけたいと考えていますが、最小化するプレーヤーはそれを最小値に押し上げたいと考えています。これらの値を計算し、最善の行動方針を決定することにより、このアルゴリズムを使用してチェスなどの敵対的なゲームをプレイできます。講演者は、単純なゲーム ツリーでアルゴリズムを説明し、より大きなゲーム ツリーで動作中のアルゴリズムの例も示します。

  • 00:20:00 ビデオのこのセクションでは、検索ツリーをできるだけ深く掘り下げる方法を見つけて、ボードの品質の大まかな測定値を明確にすることに焦点を当てています。これにより、次の動きについてかなり良いアイデアを得ることができます.検索ツリーの大部分を切り取る解決策は、ミニマックスの最上位層であるアルファ ベータ アルゴリズムにあります。 Alpha-beta は、alpha と beta の 2 つのパラメーターを使用して、検索ツリーのセクションを切り離し、より効率的な検索を可能にします。このアルゴリズムは、ミニマックスの代替ではなく、より効率的な方法です。アルファ ベータ アルゴリズムが実際にどのように機能するかを示す例を示します。

  • 00:25:00 このセクションでは、スピーカーはゲーム検索のプロセスと、ミニマックスやアルファ ベータなどのアルゴリズムを使用して最適化する方法について説明します。使用される例は、深さ 4 以上のツリーです。スピーカーは、計算する必要がある数値を丸で囲み、切断された状況のために特定のブランチを評価する必要がないことを明らかにします。これにより、計算時間が節約され、より効率的なゲーム検索が可能になります。話者はまた、ディープ カット オフの概念を紹介します。この概念では、ツリー内の別々のレベルで数値が比較され、特定のブランチは無関係と見なされます。信じがたいかもしれませんが、このプロセスは効果的であり、ゲームの検索効率を大幅に高めることができます。

  • 00:30:00 このセクションのビデオでは、アルファ ベータ プルーニングの概念と、ゲーム プレイ アルゴリズムの計算時間をどのように節約できるかについて説明しています。ボードの状態を評価することで、最小化と最大化が可能な最善の動きを決定できます。ミニマイザーは特定の方法で 8 を取得し、マキシマイザーは別の方法で 9 を取得して、カットオフ状況を作成します。アルファ ベータ プルーニングにより、アルゴリズムは、状況に応じてアルファとベータを縮小しながらツリーを進むことができるため、計算が節約されます。この方法は、分岐係数が一定である最適な状況でのみ機能しますが、それでも時間と計算を大幅に節約できるため、ゲームをプレイするプログラムに必要なツールとなっています。

  • 00:35:00 このセクションでは、ゲーム ツリーの計算にかかる保険契約のコストを最小限に抑える方法について学習します。最下位ではなく 1 レベル上の静的値を計算することにより、d リーフ ノードへの b を計算する必要なく、適切な移動を保証する保険ポリシーが提供されます。保険契約のコストは、ツリーのすべてのレベルで葉の数を合計することによって計算されます。ただし、コストを最小限に抑えるために、最初のレベルから始めて、ポリシーがカバーするレベル数に制限があります。代数を使用すると、最高レベルのポリシーに必要な計算は、b から 1 を引いたものよりも 1 を引いた b に等しいことがわかります。これは扱いやすい計算です。

  • 00:40:00 このセクションでは、ゲーム ツリーで保険契約の結果を最適化する方法として、漸進的深化の概念を紹介します。次のレベルに到達しないことに対する保険として、常にすべてのレベルで移動を利用できるようにすることで、プログレッシブディープニングは、要求されたらすぐにアルゴリズムがいつでも答えを用意できることを示しています。さらに、Christopher は一時的な値を使用してアルファ ベータのパフォーマンスを改善することを提案しています。これは、後に重要な概念の再発明であることが示されています。 Deep Blue プログラムは、並列コンピューティングとエンド ゲーム専用の技術を使用することを除けば、他のゲーム プログラムと大差ありません。

  • 00:45:00 このセクションでは、スピーカーは、ゲーム中に不均一なツリーが発生することと、ツリーが一定のレベルまで下がる必要がないことについて説明します。彼は、1997 年に Deep Blue が持っていた余分な繁栄のために、Deep Blue が Kasparov を破ったことについて話します。しかし、彼は、ブルドーザーが砂利を処理するのと同じ方法で計算を実行しているこのタイプの計算は、人間の知性とは異なると述べています.人間のチェスの達人は、長い計算を行うのではなく、パターンを認識して、異なる方法でゲームをプレイします。話者は、ブルドーザーの知能は理解することが重要であるが、必ずしも人間が頭の中に持っている知能と同じタイプであるとは限らないと結論付けています。
6. Search: Games, Minimax, and Alpha-Beta
6. Search: Games, Minimax, and Alpha-Beta
  • 2014.01.10
  • www.youtube.com
MIT 6.034 Artificial Intelligence, Fall 2010View the complete course: http://ocw.mit.edu/6-034F10Instructor: Patrick WinstonIn this lecture, we consider stra...