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

 

深層学習研究のための Tensorflow - 講義 2



深層学習研究のための Tensorflow - 講義 2

TensorFlow for Deep Learning Research に関する講義では、基本的な操作、テンソルの型、プレースホルダー、遅延読み込みなど、幅広いトピックを取り上げます。実行中のグラフを視覚化するために TensorBoard を利用することの重要性が強調され、ランダム シャッフル、ランダム クロップ、TF.dot 多項式、ランダム ガンマ関数など、TensorFlow API のさまざまな関数が説明されています。このビデオでは、さまざまなデータ型の 0-ness の定義、変数の初期化、変数への値の割り当て、TensorFlow インタラクティブ セッションを使用する利点についても説明しています。最後に、TensorFlow でのプレースホルダーの使用について詳しく説明し、未定義の形状でプレースホルダーを使用する場合の潜在的な問題について説明します。

講演者は、TensorFlow でのプレースホルダーの使用についても説明します。これには、複数のデータ ポイントをフィードする方法や無料の dict を使用する方法が含まれます。その後、講義は遅延読み込みに移ります。ここでは、ループ内の同じ操作の複数のノードによって引き起こされるグラフの肥大化を避けるために、実行時まで計算が延期されます。操作オブジェクトの定義を計算から分離し、変数定義と計算関数のコードを構造化することで、TensorFlow で関数を呼び出す際の問題を回避できます。講演者は、オプティマイザーがクロスエントロピーを最小化し、プロパティを使用して TensorFlow コードを効率的に構造化しながら重みとバイアスを更新する方法についても説明します。

  • 00:00:00 講義のこのセクションでは、インストラクターが基本的な操作、テンソルの型、プレースホルダー、遅延読み込みについて説明します。 TensorBoard を使用して視覚化される単純なグラフ プログラムで、TensorBoard を使用して TF グラフを視覚化する方法を示します。このプロセスでは、TF テーブル サマリー ファイル ライターをセッション コンテキストに追加し、イベントを書き込む場所を提供し、書き込む内容を指定し、終了したらライターを閉じます。また、名前引数を追加してグラフを読みやすくする方法も示しています。

  • 00:05:00 このセクションでは、スピーカーは、実行中のグラフを視覚化するために TensorBoard を利用することの重要性を強調しています。これは、他のフレームワークでは容易に利用できない TensorFlow の自動機能です。次に、TF.constant 関数のシグネチャと、その値、形状、およびデータ型を指定または推測する方法について詳しく説明します。さらに、スピーカーは、verify_shape が true または false に設定されている場合に何が起こるか、および TensorFlow が定数の一意の名前をどのように処理するかについて説明します。最後に、レクチャーでは、ベクトルと行列を作成してそれらを加算し、TensorBoard を使用してグラフを視覚化する方法を示します。

  • 00:10:00 講義のこのセクションでは、TensorFlow でのブロードキャストのトピックが紹介され、NumPy とどのように似ているかが示されています。ブロードキャストは、定数を行列に加算および乗算する例を通して示されます。 0 か 1 かを問わず、特定の値が事前に入力されたテンソルを作成する概念、および TF.fill メソッドを使用してカスタム値で入力されたテンソルを作成する方法についても説明します。これらのテンソルのデータ型を正しく設定することの重要性が強調されています。全体として、この講義では、TensorFlow と他の数値ベースのライブラリ (NumPy など) との類似点と相違点を理解することの重要性が強調されています。

  • 00:15:00 このセクションでは、スピーカーは Tensorflow で使用できるいくつかの異なるタイプの制約とシーケンスについて説明します。 1 つの例は、linspace を使用して一連の等距離間隔を作成することです。ここで、開始値と終了値は float 32 または float 64 です。別の例は、正規分布からサンプリングすることによって指定された形状のテンソルを生成するランダム正規関数です。切り捨てられた正規は似ていますが、サンプルは平均の 2 標準偏差内にあります。最後に、特定の次元でテンソルの値をシャッフルする方法として、ランダム シャッフルについて説明します。講演者は、これらの機能を練習して筋肉の記憶を発達させ、常に記録に頼らないようにすることを提案しています。

  • 00:20:00 このセクションでは、講師が Tensorflow API のさまざまな関数について説明します。ランダム シャッフル関数は、デフォルトで 4 次元でデータをシャッフルし、画像データセットに役立ちます。ランダム トリミング関数は、テンソルから指定された形状のデータの連続ブロックをトリミングします。 TF.dot 多項関数は、指定されたロジット テンソルとサンプル数を使用して、多項分布からサンプルを抽出します。最後に、ランダム ガンマ関数について説明します。これは、形状とベータの 2 つのパラメーターを持つ統計の別の分布です。

  • 00:25:00 このセクションでは、講演者は TensorFlow 関数を使用して、深層学習研究用にランダムに生成された定数とシーケンスを生成する方法について説明します。 set_random_seed 関数が導入されました。これにより、ユーザーはグラフ全体のランダム フィードを設定できるようになり、結果がより決定論的にランダムになり、ユーザーは一貫して実験を繰り返すことができます。講演者は、要素ごとの加算、行列の乗算、モジュロ演算など、基本的な演算のためのさまざまな TensorFlow 関数についても説明します。さらに、スピーカーは、ブール値や文字列などのネイティブ Python 型の一部を TensorFlow で使用できることを強調しています。

  • 00:30:00 講義のこのセクションでは、講演者は、TensorFlow でベクトル、行列、文字列などのさまざまなデータ型の 0-ness を定義する概念と、各型で期待される出力について説明します。また、低速の 32 64 を含む TensorFlow データ型を 8 16 32 64 に変換し、それらを NumPy と交換可能に使用する方法についても説明します。さらに、講演者は TensorFlow で定数を使用しないように警告しています。定数はグラフ定義に格納されているため、後で問題が発生する可能性があるからです。

  • 00:35:00 このセクションでは、スピーカーは TensorFlow 変数の使用について説明し、ユーザーは値とオプションの名前とともに TFDOTvariable を使用して変数を定義できることを説明します。サイズは入力される値から推測され、ユーザーは TF.global_variables_initializer() 関数を使用して変数を初期化することを選択できます。スピーカーは、変数が初期化されていないとエラーが発生することを警告しますが、ユーザーは必要に応じて変数のサブセットのみを初期化できます。さらに、スピーカーは、定数は演算子であるのに対し、変数はユーザーが呼び出すことができる複数の関数とメソッドを持つクラスであるため、定数は変数とは異なると説明しています。

  • 00:40:00 このセクションの動画では、TensorFlow で変数を初期化するさまざまな方法を説明しています。そのうちの 1 つは、特定の値で「割り当て」操作を呼び出すことです。このアプローチは、転送学習を使用してモデルをトレーニングする場合に役立ちます。この場合、一部のレイヤーには事前トレーニング済みのモデルから値が割り当てられ、他のレイヤーはランダムに初期化されます。このビデオでは、単一の変数を初期化する方法と、「eval」メソッドを使用して変数の値を取得する方法についても説明しています。さらに、ビデオでは、変数に値を代入するときに、変数が以前に初期化されていなくても問題なく、「代入」操作で値を代入する前に変数を初期化できることが説明されています。

  • 00:45:00 このセクションのビデオでは、変数の初期化と変数への値の割り当てについて説明します。初期化子 op は、変数の初期値を変数自体に割り当てます。さらに、割り当て操作は、変数の現在の値を新しい値で加算、減算、または乗算しますが、割り当てサブ操作は、現在の値から新しい値を減算します。複数のセッションは、変数と初期化の独自のコピーを保持します。複数のセッションを処理するときは、予期しない結果を避けるために実行パスを慎重に管理して追跡することが重要です。最後に、初期化されていない変数は割り当てや操作に影響を与えず、すべてのセッションを閉じてリソースを解放する必要があります。

  • 00:50:00 このセクションでは、スピーカーは TensorFlow ライブラリの変数の初期化について説明します。 TensorFlow を実行する場合、コードで使用されるすべての変数を初期化する必要があります。複数の変数が相互に依存している可能性があるため、複数の変数を使用する場合、これは危険な場合があります。このような場合、変数の初期化値を使用して、変数の値が安全であることを確認してから、別の変数を初期化する必要があります。次にスピーカーは、TensorFlow インタラクティブ セッションを使用する利点と、セッションを使用してコード内の一連の操作を評価する方法を説明します。最後に、スピーカーは、コントロールの依存関係について説明します。これは、最終的な操作を呼び出す前に、関連するすべての操作が確実に実行されるようにする方法です。これは、多くの操作を含む複雑な機械学習モデルで役立ちます。

  • 00:55:00 このセクションのビデオでは、TensorFlow のプレースホルダーについて説明しています。これにより、計算で使用されるデータの値を知らなくてもグラフを組み立てることができます。プレースホルダーは、後で計算される実際の値のプレースホルダーとして機能し、定義された型と形状を持つ TF.placeholder 演算子を使用して定義されます。プレースホルダーを含む操作を実行する場合、プレースホルダーとその値を使用して辞書を作成する必要があり、この辞書が session.run() 呼び出しに渡されます。プレースホルダーは形状を none に設定できますが、一部の操作では形状を定義する必要があり、エラーが発生する可能性があることに注意してください。

  • 01:00:00 このセクションのビデオでは、プレースホルダーと、プレースホルダーが独自の立場で有効なファーストクラスの操作である方法について説明します。これは、TensorBoard で視覚化できます。このセクションでは、複数のデータ ポイントをフィードする方法と、グラフ内の任意の変数または定数に対して free dict を使用する方法についても説明します。次に、ビデオは、必要なときにのみオブジェクトが作成される遅延読み込みと、実行前にグラフ内にノードが作成される通常読み込みに進みます。遅延読み込みの概念は、特に大規模なデータセットを操作する場合に、メモリ管理に役立ちます。

  • 01:05:00 このセクションでは、講演者が遅延読み込みと TensorFlow への影響について説明します。遅延読み込みは、計算がグラフの構築時ではなく実行時まで延期される手法です。これにより、特にループ内で、計算グラフ内で同じ操作の複数のノードが発生する可能性があります。グラフの肥大化やその他の関連する問題を回避するために、スピーカーは操作オブジェクトの定義を操作の計算と実行から分離することを推奨しています。さらに、スピーカーは、変数の定義が 1 つの場所にあり、計算機能が別の場所にあるように、コードを構造化することの重要性を強調しています。

  • 01:10:00 このセクションでは、深層学習の研究に TensorFlow を使用する際に、関数呼び出しの問題を回避するためにコードを構造化する方法について講師が説明します。 Python プロパティを使用して、講師は「start_prediction」、「optimized」、「error」などの内部属性を定義する方法を実演します。コード ブロックの最初の部分では、演算を追加する前に、データ サイズ、ターゲット サイズ、重み、およびバイアスを計算します。この操作の結果の出力がグラフに追加されます。 'optimize' 関数は同じパターンに従い、最初に呼び出されたときに初期ノードを作成し、その後呼び出されたときにこれらのノードにハンドルを返します。

  • 01:15:00 このセクションでは、スピーカーは、オプティマイザーがクロス エントロピーを最小化し、TensorFlow の重みとバイアスを更新する方法について説明します。オプティマイザーが初めて呼び出されると、TensorFlow は逆伝播を行い、損失に寄与する変数を更新します。続いてオプティマイザが呼び出されると、TensorFlow はすでにグラフを持っており、着信ノードを計算して、追加のノードを呼び出すことなく重みを最小化および更新します。プロパティの使用は、TensorFlow コードをより効率的に構造化するのに役立ちます。次の講義では、このプロセスをよりよく理解するための例を提供します。
Tensorflow for Deep Learning Research - Lecture 2
Tensorflow for Deep Learning Research - Lecture 2
  • 2017.02.05
  • www.youtube.com
This is the second lecture in the series of tutorials on tensorflow and is based on the publicly available slides from the Stanford University class - CS20SI...
 

深層学習研究のための Tensorflow - 講義 3



深層学習研究のための Tensorflow - 講義 3

深層学習研究のための TensorFlow に関する 3 番目の講義では、MNIST データセットを使用した線形回帰とロジスティック回帰について説明します。講師は、入力データのプレースホルダーを作成し、重みとバイアスのトレーニング可能な変数を初期化し、予測を考え出し、損失を計算し、オプティマイザーを特定の学習率で勾配降下として定義することにより、TensorFlow で線形回帰モデルをトレーニングする方法を示します。講義では、ミニバッチ確率的勾配降下法と、変数の形状を覚えておくことの重要性についても説明します。モデルの精度は、TF argmax 関数から取得した最大値のインデックスとターゲット変数 y を比較し、TF reduce sum と TF float を使用して正しい予測の数を計算し、それをテストの総数で割ることによって計算されます。例。最後に、講師は、このモデルは強力であるとは見なされておらず、より高い精度をもたらす畳み込み層などのより堅牢なモデルがあることを指摘しています。

  • 00:00:00 このセクションでは、講演者は深層学習研究のための TensorFlow に関する 3 番目の講義を開始し、前の講義の資料の復習から始めます。彼らは、TensorFlow が計算グラフの定義をその実行から分離する方法と、グラフにさまざまな操作を追加してグラフを組み立てる方法を説明しています。次に、TF の定数、変数、プレースホルダー、およびグラフ内のそれらの機能について説明します。スピーカーは、遅延読み込みを回避することの重要性を強調し、代わりにグラフの組み立てと実行を分離して最適な効率を実現します。次に、線形回帰の最初の例を紹介し、データセット内の独立変数に基づいて従属変数 Y を予測する方法を説明します。スピーカーは、リスナーが例に従って問題を解決することをお勧めします。

  • 00:05:00 このセクションでは、講師が線形回帰の基本を説明し、TensorFlow で線形回帰モデルをトレーニングする方法を示します。 y の予測値が W に X を掛けて B に加算される、単純な線形モデルが使用されます。損失は、予測値と Y の実際の値の差として計算され、トレーニングは、次に、講師は線形回帰の例のコードを共有します。入力データは火災の数であり、出力ターゲット変数は特定のサンプルのテストの数です。このコードは、入力データのプレースホルダーを作成し、W と B のトレーニング可能な変数を初期化し、予測を行い、損失を計算し、オプティマイザーを特定の学習率で勾配降下として定義する方法を示しています。

  • 00:10:00 このセクションでは、講師が深層学習研究のために TensorFlow でモデルをトレーニングするプロセスについて説明します。モデルを作成して損失関数を設計したら、次のステップはセッションを開始し、定義されたエポック数だけモデルを実行することです。各エポックでは、セッションを通じてトレーニング データを繰り返し実行し、変数を更新して損失を最小限に抑えます。プロセスは TensorBoard によって視覚化され、結果のモデルを使用して、任意の入力値の出力を予測できます。講師は、モデルの予測に影響を与えるデータ内の外れ値の存在にも注意します。

  • 00:15:00 このセクションでは、講師が TensorFlow でモデルをトレーニングする際のオプティマイザーの役割を説明し、勾配降下、勾配運動量、Adam、RMSprop、近位勾配、および近位 a 勾配を含むいくつかのオプティマイザーをリストします。講師は、モデルが一般化可能であることを確認するために、これまで見たことのないデータでモデルのパフォーマンスをテストすることの重要性を強調しています。外れ値に対する二乗誤差損失関数の感度に対処するために、講師はフーバー損失関数を紹介し、その仕組みを説明します。講師は、TensorFlow で Huber 損失関数をコーディングする方法についても説明します。

  • 00:20:00 このセクションでは、深層学習で一般的に使用される損失関数である Huber 損失の実装について講師が説明します。 Huber 損失は回帰問題に使用され、予測とラベルの間の残差を見つけることによって機能します。残差が Delta 値より小さい場合、Small Res という関数が返されます。ただし、Delta より大きい場合は、Large Res が返されます。その後、講師は MNIST データセットを使用したロジスティック回帰についての議論に移ります。ロジスティック回帰は分類問題に使用され、ロジットを X として W と B を足したものとして計算することによって機能します。この結果はソフトマックス関数に渡され、確率分布が生成されます。この場合に使用される損失関数はクロスエントロピー損失であり、2 つの確率分布間の距離を測定します。

  • 00:25:00 このセクションでは、講師がミニバッチ確率的勾配降下法の概念と、ディープ ラーニング用のモデルをトレーニングする際のバッチの使用について説明します。そうすることで、GPU メモリを最大限に活用するのに役立ち、完全なトレーニング セットを使用できない場合に効率的です。チュートリアルには、モデルのプレースホルダーを作成し、入力および出力機能の重みとバイアスの値を初期化し、初期化に tf.random.normal 関数を使用してテンソルフローでモデルを作成する手順が含まれています。これらの変数を作成する際に、これらの変数の形状を覚えておくことの重要性も強調されました。具体的には、最後の入力フィーチャ ディメンションとクラスの数です。

  • 00:30:00 このセクションでは、クロス エントロピー損失関数を使用して損失を計算する、バッチ サイズに対する次元数が 10 の単純な DF モデルについて説明します。オプティマイザーが定義され、モデルがトレーニングされると、正しい予測の総数を見つけるためにテストされます。正しい予測は、ロジット バッチとソフトマックス関数を使用して計算されます。ここで、確率値がモデルに供給され、実際のラベルと比較されて正しい予測値が計算されます。オーバーフィッティングを避けるために、テスト セットに対してオプティマイザーを実行しないことをお勧めします。

  • 00:35:00 このセクションでは、プレゼンターがモデルの精度を計算する方法を説明します。 TF argmax 関数は、行の最大値を取得するために使用され、確率が最も高い桁のインデックスを返します。このインデックスをターゲット変数 y と比較します。次に、TF reduce sum と TF float を使用して、正しい予測の数を計算します。最後に、正しい予測の数をテスト例の総数で割って精度を求めます。これは、この特定の線形モデルで 90% です。発表者はまた、このモデルは強力とは見なされておらず、より高い精度をもたらす畳み込み層などのより堅牢なモデルがあることにも言及しています。
Tensorflow for Deep Learning Research - Lecture 3
Tensorflow for Deep Learning Research - Lecture 3
  • 2017.02.15
  • www.youtube.com
This is the third lecture in the series of tutorials on tensorflow and is based on the publicly available slides from the Stanford University class - CS20SI ...
 

深層学習研究のための Tensorflow - 講義 4



深層学習研究のための Tensorflow - 講義 4

TensorFlow for Deep Learning Research シリーズの講義 4 では、講演者はディープ ラーニングに基づく自然言語処理における単語の埋め込みについて詳しく説明します。この講義では、NLP 問題に対する単語埋め込みの学習の概念を説明し、ニューラル ネットワークで単語を数値ベクトルとして表現するプロセスについて説明します。この講義では、AI ベースの CBOW とスキップ グラムを使用して単語ベクトルを生成し、ネガティブ サンプリングと NCE を使用してソフトマックスで計算の複雑さの問題に対処するさまざまな方法について説明します。さらに、講師は TensorFlow に変数を埋め込むプロセスと、t-SNE を使用して高次元の単語ベクトルを縮小された次元で視覚化するプロセスを強調しています。最後に、説明した概念の要約と、単語モデルの構築に焦点を当てた次の講義の概要を説明して、講義を締めくくります。

  • 00:00:00 このセクションでは、講師が深層学習に基づく NLP における単語埋め込みの概念について説明します。単語の埋め込みは、ニューラル ネットワークで単語を数字として表現する方法であり、単語間の意味的な関係を捉えます。目的は、国などの類似した概念を 2 次元空間に投影したときにクラスター化できるモデルを構築することです。講師は、単語の埋め込みをカウントによって学習するプロセスについても説明し、ニューラル ネットワークでバックプロパゲーションを使用する新しいアプローチを紹介します。

  • 00:05:00 このセクションでは、スピーカーは共起行列を使用して単語をベクトルとして表現する方法について説明します。ただし、共起行列は非常に大きくてまばらであるため、操作が困難です。これに対処するために、スピーカーは、切り捨てられた SVD を使用して、行列の低ランク近似を見つけることを提案しています。これには、行列を 3 つの行列に因数分解し、表現として使用する右特異ベクトルの最初の K のみを選択することが含まれます。ただし、SVD は計算コストの高い操作であり、特に語彙が大きい場合は、スケーリングが困難になります。さらに、語彙に新しい単語を追加するには、計算全体をやり直す必要があります。

  • 00:10:00 このセクションのビデオでは、AI 作成ベースの方法を使用して単語ベクトルを生成する 2 つの方法について説明します。連続バッグ オブ ワード (CBOW) とスキップ グラムです。 CBOW は対象単語の周囲の文脈を使用して中心単語を予測しますが、スキップ グラムは中心単語を使用して文脈単語を予測します。ワンホット ベクトルを使用して各単語を表現し、単純なニューラル ネットワークを使用して重み行列を作成し、単語ベクトルを学習します。トレーニング サンプルは、ウィンドウ サイズを選択し、テキスト上でウィンドウを移動することによって選択されます。ニューラル ネットワークは、文の途中で特定の単語が与えられた場合に、コンテキスト内の他の単語の確率を見つけるようにトレーニングされます。

  • 00:15:00 レクチャーのこのセクションでは、スピーカーは、単語をベクトルとして表現してニューラル ネットワークで解釈できるようにする単語埋め込み技術について説明します。この手法では、コンテキストから単語をランダムに選択し、重み行列を使用して単語ベクトルを学習し、出力行列と組み合わせて語彙内の単語の確率分布を作成します。ソフトマックス関数は、スカラー出力分布を正規化するために使用されるため、同様のコンテキストを持つ単語には同様の確率が割り当てられます。このアプローチを使用することにより、講義の例では、インテリジェントな単語とスマートな単語が同様のコンテキストでどのように発生するかを示したため、これら 2 つの単語の単語ベクトルは非常に似ています。

  • 00:20:00 このセクションでは、講師がソフトマックスで発生する計算の複雑さの問題に対する潜在的な解決策について説明します。この問題に対処するために一般的に使用される 2 つの方法は、ネガティブ サンプリングとノイズ コントラスト推定 (NCE) です。 NCE はソフトマックスを理論的に保証して近似できますが、どちらの方法も実際には同様の結果を生成します。次に、経験的分布と知識分布の定義について詳しく説明します。ここでの目標は、モデルのパラメーターを使用して経験的分布を近似することです。最後に、講師は言語モデルの推定問題を軽減する方法として NCE を紹介します。

  • 00:25:00 このセクションでは、スピーカーは、プロキシ バイナリ分類を使用して 2 クラスのトレーニング問題のデータを生成する方法を説明します。彼らは P チルダ C から中央の単語をサンプリングし、PT リトル P チルダ W コンマ C から真のサンプルを 1 つ取得します。QW を使用して K ノイズ サンプルを生成し、それらに 0 に等しいラベル D を割り当てます。データ ポイントはノイズです。次に、2 つの分布の混合を作成することにより、2 クラス データの D、コンマ W の同時確率を計算します。条件付き確率の定義を使用して、D が 0 の場合と 1 の場合の 2 つのケースで W と C が与えられると、これを D の条件付き確率に変換できます。

  • 00:30:00 このセクションでは、スピーカーは分配関数の高価な計算の問題と、Noise Contrastive Estimation (NCE) を使用してそれを解決する方法について説明します。 NCE は、パーティション関数をすべての経験的コンテキスト ワードのパラメーターとして追加し、逆伝播によって学習することを提案しています。 Vc パラメータを 1 に固定し、P チルダ W コンマ C を Vc による分割関数で割った u シータ W コンマ C に置き換えることにより、2 項分類問題が得られます。目的は、対数確率として記述できる、K 個の負のサンプルに関して D の条件付き尤度を最大化することです。講演者は、NCE がどのように期待値をモンテカルロ近似に置き換え、プロセスの計算コストを削減するかを説明します。

  • 00:35:00 このセクションでは、ネガティブ サンプリング (NS) の代わりにノイズ コントラスト推定 (NCE) の使用について説明します。 NCE は、言語モデリングの目的を 2 項分類問題に還元することができ、目的がモデル パラメーターの同じポイントで実現されることが示されています。 NCE 損失のための TensorFlow API と名前スコープの使用が示されています。これにより、TensorBoard での視覚化を向上させるためにノードをグループ化できます。変数名のスコープについても、名前スコープ機能のコンテキストで説明されています。

  • 00:40:00 このセクションでは、講師が深層学習研究のために TensorFlow に変数を埋め込むプロセスについて説明します。特定のスコープ内に変数を埋め込むことで、変数は TensorFlow ボードで適切にグループ化された視覚化の一部になります。講師は、t-SNE と呼ばれる手法を使用して単語ベクトルを視覚化する方法についても説明し、視覚化のために TC をプロットするためのレシピを提供します。埋め込み行列から学習した高次元ベクトルを取得することにより、t-SNE を使用して次元を 2D または 3D に縮小し、単語間の最近傍関係を示します。最後に、講師は、word to work モデルに使用されるコードの概要を説明します。

  • 00:45:00 このセクションでは、講師は入力と出力のプレースホルダーを定義し、NCE 損失の変数を構築し、埋め込みと埋め込み行列を定義するプロセスについて説明します。 50,000 の語彙サイズと 128 のバッチ サイズを使用して、レクチャーでは、各単語の 128 次元の単語ベクトルを学習する埋め込み行列を定義します。スキップグラムでの推論の過程も説明されており、講義では説明を簡単にするために一度に 1 つの単語に焦点を当てています。次に、TensorFlow API を使用して損失関数を定義し、講義ではネガティブ サンプルやトレーニング ステップ数などの主要な変数の内訳を提供します。

  • 00:50:00 このセクションでは、NCE (ノイズ コントラスト推定) を使用して、softmax の複雑さを解決するのに役立つバイナリ分類問題を作成する方法について説明します。代理分類用に作成された 64 個のネガティブ サンプルと 1 個のポジティブ サンプルのそれぞれが単語ベクトルに対応します。 TensorFlow の自動微分を使用してバイナリ分類器の重みを更新し、1 つの正の例を 64 の負の例から分離します。講義は、単語ベクトル、NCE、埋め込み行列、主成分分析 (PCA) など、これまでに説明した概念の概要で終わります。次の講義では、単語モデルを構築しながら、さまざまなプログラムと実験を管理することに焦点を当てます。
Tensorflow for Deep Learning Research - Lecture 4
Tensorflow for Deep Learning Research - Lecture 4
  • 2017.03.04
  • www.youtube.com
This is the fourth lecture in the series of tutorials on tensorflow and is based on the publicly available slides from the Stanford University class - CS20SI...
 

深層学習研究のための Tensorflow - 講義 5_1



深層学習研究のための Tensorflow - 講義 5_1

TensorFlow for Deep Learning Research シリーズの 5 番目の講義では、ディープ ラーニングの実験を効果的に管理する方法、TensorFlow での自動微分の重要性、モデルのトレーニングと変数の保存のプロセスなど、いくつかのトピックを取り上げます。講演者は、TensorFlow などの深層学習フレームワークで自動微分が提供されているため、ユーザーは勾配を処理せずにモデルを簡単にコーディングできると説明しています。勾配を手動で計算することは必須ではありませんが、単純な関数とネットワークについて計算することは依然として役に立ちます。サブクラスと必要なプレースホルダーとフィード手法を使用した名前付きエンティティ認識モデルの作成、TensorFlow での変数の保存と復元、およびさまざまなセッションやマシン間でモデルを保存するプロセスについても説明します。

  • 00:00:00 このセクションでは、講演者は深層学習の実験を管理する方法と、TensorFlow での自動微分の重要性について説明します。モデルを書くときは、いろいろなことを試したり、トレーニングを開始したり再開したりすることになるため、適切な管理が不可欠であると説明されています。 TensorFlow などの深層学習フレームワークでは自動微分が提供されているため、ユーザーは実際の勾配を扱わずにモデルを簡単にコーディングできます。スピーカーは、TensorFlow の「勾配」演算により、2 番目の引数として提供されるリスト内の各テンソルに関して Y の勾配を見つけることができる例を提供します。また、TensorFlow とディープ ラーニングのすべてが数値微分に基づいているとも述べています。

  • 00:05:00 このセクションでは、スピーカーは、TensorFlow に既にドット グラデーション機能がある場合に、グラデーションを手動で計算する方法を学ぶ必要があるかどうかについて話します。彼は、必須ではありませんが、特にカスタムレイヤーを作成したり、爆発や消失勾配などの勾配の問題を処理したりする場合に、単純な関数やネットワークの勾配を作成することが依然として役立つことを示唆しています.彼はまた、モデルをよりオブジェクト指向の方法で構造化して、使いやすくし、モデルを完全に関数の外に移動することも提案しています。スピーカーは、深層学習モデルのコンポーネントをカプセル化する方法の例として、CS 244 D 割り当て構造に言及しています。

  • 00:10:00 このセクションでは、講演者は深層学習モデルの作成におけるモデルの側面について説明します。彼らは、モデルは完全な推論が書かれている場所であり、入力を受け取り、出力を与えるためにフォワードパスを実行し、次に損失操作を追加して、予測された出力をプレースホルダーからの真の出力ラベルと比較する損失スカラーを作成すると説明しています。スピーカーは、すべてを 1 つの基本クラスとして抽象化し、言語モデルなどの特定のタイプのモデルのサブクラスを作成することを提案しています。最後に、サブクラスと、プレースホルダーやフィード技術などの必要な API を使用して固有表現認識モデルを作成する方法について説明します。

  • 00:15:00 このセクションでは、TensorFlow を使用して深層学習モデルをトレーニングするプロセスと、実験を効果的に管理する方法について学びます。このプロセスには、埋め込み行列をトレーニングするループでトレーニング データのエポックを実行する前に、変数行列を作成し、トレーニング データの埋め込みを取得することが含まれます。進行状況を保存するために、train.saver への TF はグラフ内の変数をバイナリ ファイルに保存します。これは、将来の実行中に呼び出して、停止した場所から開始することができます。コード例は、セーバー オブジェクトをインスタンス化し、トレーニング ステップをループしてオプティマイザーを実行し、セッションとディレクトリ名を保存する方法を示しています。

  • 00:20:00 このセクションでは、講演者は TensorFlow の Save クラスとそれに関連する変数の詳細を掘り下げます。 0 から始まるトレーニング不可能なコード変数として定義されるグローバル ステップ変数は、「最小化」関数で指定することにより、トレーニング操作が呼び出されるたびにインクリメントできます。さらに、「max to keep」変数は保存されるチェックポイントの数を最新のものに制限し、「keep checkpoint every」変数はチェックポイントが保存される頻度を制御するため、長いトレーニング サイクルに役立ちます。

  • 00:25:00 このセクションでは、講師が TensorFlow で変数を保存および復元する方法について説明します。すべてを保存するのではなく、変数のリストまたは辞書を指定して、特定の変数を保存できると説明しています。これの利点は、特に転移学習を行う場合に、スペースを節約し、スループットを向上させることです。変数を復元するには、ユーザーは tf.latest_checkpoint 関数を呼び出すことができます。これは、特定のディレクトリで最新のチェックポイントをチェックし、session.restore() 関数を使用してそこから復元します。インストラクターはまた、変数に対応するキーと値でコレクションを作成し、すべてのデフォルト値で saver オブジェクトをインスタンス化することにより、ユーザーが TensorFlow 0.11 以降でグラフを保存できることにも言及しています。

  • 00:30:00 レクチャーのこのセクションでは、インストラクターが TensorFlow モデルをさまざまなセッションやさまざまなマシンで保存および復元する方法を説明します。この手順には、グローバル変数初期化子の実行、セッションの保存、および「メタ グラフのエクスポート」メソッドを利用した保存済みグラフ ファイルの作成が含まれます。元のグラフが利用できない場合は、この保存されたグラフを復元して、まったく別のプロセスまたはマシンで変数を再初期化できます。インストラクターは、TF.summary についても言及しています。これについては、次のビデオで説明します。
Tensorflow for Deep Learning Research - Lecture 5_1
Tensorflow for Deep Learning Research - Lecture 5_1
  • 2017.03.18
  • www.youtube.com
This is the first part of the fifth lecture in the series of tutorials on tensorflow and is based on the publicly available slides from the Stanford Universi...
 

深層学習研究のための Tensorflow - 講義 5_2



深層学習研究のための Tensorflow - 講義 5_2

ビデオ チュートリアルでは、TensorBoard でのデータの視覚化を可能にする TF サマリー ops の実装について説明します。このチュートリアルでは、TF.summary.scalar、TF.summary.histogram、および TF.summary.image の 3 種類のサマリー op を取り上げ、それらを 1 つにマージして、FileWriter クラスを使用してイベント ファイルに書き込む方法を説明します。講師は、ネーム スコープを使用して TensorBoard でグラフを視覚化する方法を示し、テスト ライターと訓練を受けたライターを定義して、要約を別々のファイルに書き込みます。彼らは、TensorBoard の視覚化機能を利用して、モデルのパフォーマンスをよりよく理解することを強調しています。全体として、TensorBoard はトレーニングの進行状況を追跡するための重要なツールであり、op を追加してそれらをマージするための API は簡単です。

  • 00:00:00 このセクションでは、ビデオ チュートリアルで、TensorBoard で視覚化するための要約データを生成するために計算グラフのノードに情報を付加する関数である TF 要約演算の使用方法について説明します。このチュートリアルでは、次の 3 種類の要約演算について説明します。TF.summary.scalar は、損失、クロスエントロピー、学習率など、グラフ内のスカラー値ノードにアタッチします。特定のレイヤーの重みなど、テンソルの分布を視覚化するための TF.summary.histogram。 TF.summary.image は、画像、入力、またはいくつかの中間層を視覚化するためのものです。このチュートリアルでは、すべてのサマリー op を 1 つにマージし、FileWriter クラスを使用してそれらをイベント ファイルに書き込む方法について説明します。

  • 00:05:00 このセクションでは、スピーカーは、TensorBoard でデータを視覚化するために、TensorFlow でファイル ライターとサマリーを設定する方法を説明します。各ステップで実行すると大量のデータが生成される可能性があるため、特定の間隔で実行するようにライターを設定することをお勧めします。ファイル ライターにグラフ オブジェクトを提供することで、計算グラフをグラフ定義として保存し、TensorBoard で視覚化できます。講演者は、X 軸で特定のステップを選択して、対応する値を Y 軸で確認することにより、TensorBoard でスカラーとヒストグラムを視覚化する方法を実演します。 TensorBoard の視覚化機能を利用して、モデルのパフォーマンスをよりよく理解するようユーザーに勧めます。

  • 00:10:00 このセクションでは、テンソルを取り、サマリー ノードを追加する variable_summary という関数の定義について講師が説明します。この関数は、平均、標準偏差、最大、最小、およびヒストグラムをカバーします。各変数は、命名の観点からスコープアウトされます。彼らはまた、モデルが十分にトレーニングされていない場合に損失が最大になり、ステップ サイズが大きくなると損失が減少する、分布の無秩序の考え方についても説明しています。さまざまなファイル ライターをさまざまな実験に使用でき、ログ ギアに保存できます。密集住居オプションにより、さまざまな選択肢内での選択と切り替えが可能になります。

  • 00:15:00 このセクションのビデオでは、概要オペレーションの実装と、視覚化のために TensorFlow で名前スコープを使用することに焦点を当てています。このコードは、クロス エントロピーと精度の名前スコープを定義して、TensorBoard でグラフを視覚化するのに役立ちます。マージされた op は TF.summary.merge_all を呼び出すことによって取得され、この op はセッションの実行時に使用されます。このコードでは、テスト ライターと、結果のサマリーを別のファイルに書き込むためのトレーニング済みライターも定義します。各ステップで、コードはモデルをトレーニングし、要約を書き込みます。ステップ数 mod 10 がゼロに等しい場合、要約はテスト作成者に書き込まれ、その他のすべてのステップについては、トレーニング済みの作成者に書き込まれます。

  • 00:20:00 このセクションでは、スピーカーは TensorBoard を実行して、テスト ライターとトレーニング ライターの両方で同時にイベントを視覚化する方法について説明します。コマンド "s about -- clock there is equal to the path" はすべてを視覚化するのに役立ち、現在のホストは localhost コロン 6 ゼロ ゼロ 6 であり、ブラウザーを介してナビゲートできます。さらに、TF ドット サマリー ドット イメージには、デフォルトで tensor max outputs という名前が付けられており、形状パス サイズ、高さ、幅、およびチャネルを使用して 4 次元テンソルを解釈します。最大出力引数は、レンダリングされて TensorBoard に表示されるオフセット バック イメージの数を決定します。全体として、TensorBoard はトレーニングの進行状況を追跡するための重要なツールであり、さまざまな op を追加してそれらをマージするための API は簡単です。
Tensorflow for Deep Learning Research - Lecture 5_2
Tensorflow for Deep Learning Research - Lecture 5_2
  • 2017.04.03
  • www.youtube.com
This is the second part of the fifth lecture in the series of tutorials on tensorflow and is based on the publicly available slides from the Stanford Univers...
 

計算グラフとしてのバックプロパゲーションの背後にある直感



計算グラフとしてのバックプロパゲーションの背後にある直感

計算グラフとしてのバックプロパゲーションの背後にある直感については、このビデオで説明されています。スピーカーは、代理関数を使用して、入力を出力にマッピングする経験的関数を推定する方法と、損失関数を最小化するパラメーターを見つけることが目標であることについて説明します。バックプロパゲーションでは、グラフの逆方向パスを介して、各パラメーターに関する損失関数の勾配を計算できます。グラフ内の各ゲートのローカル勾配が計算され、それらを使用して、各入力に対する最終出力の勾配を計算できます。スピーカーは、分岐およびベクトル化された演算の勾配を処理する方法と、導関数を計算するときに次元が機能することを確認する方法についても説明します。

  • 00:00:00 このセクションでは、バックプロパゲーションを使用すると、ニューラル ネットワークのトレーニングをすばやく収束させることができます。それを深く理解することは、研究者にとって有益です。講義は、ニューラル ネットワークの目的は、入力を出力にマッピングする関数 (F(x) で表される) を見つけることであると説明することから始まります。講義では、代理関数 G(x,θ) を使用して F を推定することを概説します。ここで、θ はニューラル ネットワークのパラメーターを表し、目的は損失関数 J を最小化するパラメーターを見つけることです。グラフの逆方向パスを介して各パラメーターに関する損失関数の勾配を計算することにより、ネットワークが最適なパラメーターを見つけることができるようにします。

  • 00:05:00 このセクションでは、スピーカーはシータに関する G の導関数を見つけることについて説明します。これは、ニューラル ネットワークのトレーニングに不可欠です。使用される例は、X、Y、および Z に関する F の偏導関数を計算する必要がある、X、Y、および Z の単純な関数です。ローカル勾配の概念が導入されました。これは、特定の操作の入力に対する出力の導関数です。ただし、離れた変数 (この場合は X、Y、Z) に関する最終的な出力を計算するには連鎖規則が必要です。

  • 00:10:00 このセクションでは、勾配の逆流を使用して計算グラフで勾配を見つける方法を説明します。出力ノードの勾配は自明に 1 であり、各ノードで勾配を計算するには、ローカル勾配に前のノードから受け取った勾配を掛けます。次に、プログラムは、Del X による del F、Del Y による del F、および Del V による del F の最終勾配を計算できます。ニューラル ネットワークの場合は、J 損失関数です。最後に、ニューラル ネットワークのニューロンがフォワード パス中に単純な関数を実行する方法と、バックプロパゲーション中に勾配をローカルで計算して使用する方法を学びます。

  • 00:15:00 このセクションでは、スピーカーは、バックプロパゲーションの背後にある直感を、ニューロンの計算グラフとして説明します。局所勾配は、後方関数に del Z を Del X で、del Z を Del Y で乗算することによって得られます。逆方向の流れは、ニューロンの出力の方向に進み、そこでデータを送信している他のニューロンは、Del X によって Del J を取得します。計算グラフ手法は、後方勾配が適用されるシグモイド関数などのより複雑な関数にも使用されます。数値的に計算されます。各ノードのローカル勾配は、関数の導関数を取得し、それを勾配フローで乗算することによって計算されます。

  • 00:20:00 このセクションでは、スピーカーは、計算グラフで各ゲートのローカル勾配を計算する方法と、それらを使用して各入力に対する最終出力の勾配を取得する方法について説明します。ビデオで使用されている例には、加算ゲートや乗算ゲートなどの複数のゲートで構成される小さな計算グラフが含まれており、スピーカーはこの例を使用して、バックプロパゲーション アルゴリズムの背後にある直感を説明しています。スピーカーは、グラフ内の各ゲートのローカル勾配を計算する方法を詳しく説明し、それらを組み合わせて各入力に対する最終出力の勾配を計算する方法を示します。

  • 00:25:00 このセクションでは、スピーカーは計算グラフとしてのバックプロパゲーションの背後にある直感について説明します。加算ゲートや乗算ゲートなど、さまざまなタイプのゲートの勾配がどのように計算されるか、および逆流を計算するときに現れるパターンが説明されています。スピーカーは、各ゲートの順方向関数と逆方向関数を定義する方法についても説明します。一度定義すると、これらの関数を任意の計算グラフに使用できるため、プロセスがより効率的になります。

  • 00:30:00 このセクションでは、バックプロパゲーションにおけるフォワード パスとバックワード パスの概念を計算グラフとして説明します。フォワード パスは、損失に達するまで、次のノードの入力となる出力を計算します。逆方向パスでは、最初に DZ が 1 に設定され、逆方向に計算が行われます。ベクトルを扱う場合、局所勾配はヤコビ行列を使用して取得され、連鎖則では左乗算が使用されます。 Del X による Del L または Del Y による Del L は、2 つのヤコビ行列、Del X による del Z または Del Y による del Z、および Del V による del L を使用して計算されます。

  • 00:35:00 このセクションでは、スピーカーは、計算グラフを使用して、特定の関数のフォワード パスとバックプロパゲーションを計算する方法を説明します。関数の例を使用して、スピーカーは中間変数を作成し、フォワード パスを計算するプロセスを順を追って説明します。次に、スピーカーは、各ゲートの入力と出力に関する勾配を計算することにより、逆方向パスを計算する方法を示します。話者は、シグモイド関数の導関数を覚えておくことの有用性を強調しています。

  • 00:40:00 このセクションでは、スピーカーは逆伝播で分岐およびベクトル化された操作の勾配を処理する方法を説明します。分岐が発生すると、勾配が追加され、関数の勾配を計算するときに、以前の中間勾配を再利用できます。行列の乗算などのベクトル化された演算は、各要素の勾配を個別に計算し、行列演算を使用してそれらを結合することにより、同様に処理できます。勾配の次元は、実行される操作の出力の次元によって決まります。

  • 00:45:00 このセクションでは、TensorFlow での行列乗算の例を使用して、関数で del D/del W と del D/del X を計算するときに次元が確実に機能するようにする方法をスピーカーが説明します。 W と DD の次元はわかっており、乗算を機能させる唯一の方法は W dot dot dot X を使用することなので、この式を覚えておくことをお勧めします。スピーカーは、TensorFlow のようなフレームワークがそのような複雑さを抽象化したとしても、TensorFlow の計算グラフ操作を理解することが重要であることを視聴者に思い出させます。この知識は、ユーザーが順方向および逆方向のパスを記述する必要があるカスタム レイヤーを扱うときに役立ちます。
Intuition Behind Backpropagation as a Computational Graph
Intuition Behind Backpropagation as a Computational Graph
  • 2017.03.13
  • www.youtube.com
Here I go into details on how to visualize backpropagation as a computational graph. As part of my other tutorials on tensorflow, we have discussed as to how...
 

コンピューター ビジョン向けの深層学習の製品化



コンピューター ビジョン向けの深層学習の製品化

Jumio の CTO 兼チーフ サイエンティストである Lavash Patel が、同社が AI と ID の専門家を組み合わせてオンラインで信頼を確立し、ID ドキュメントの信頼性を検証する方法について説明します。さまざまな ID とサブタイプがあり、読み取り不可能な画像を修正して拒否する必要があるため、身元確認のプロセスは困難です。精度を維持するために、AI モデルが問題を検出し、人間が結果の健全性チェックを行う、ヒューマン イン ザ ループ アプローチが採用されています。 Patel はまた、Jumio がハイブリッド アクティブ ラーニング アルゴリズムを使用して深層学習を生産化する方法についても説明しています。このアルゴリズムは、新しいサブタイプに適応し、それ自体を再トレーニングすることによって改善されます。さらに、顔認識におけるクリーン データの重要性と、機械学習の目的で機密データを扱う際の PCI コンプライアンスの維持の重要性を強調しています。

  • 00:00:00 このセクションでは、Jumio の CTO 兼チーフ サイエンティストである Lavash Patel が、AI と ID の専門家を組み合わせてオンラインで信頼を確立し、ID ドキュメントの真正性を検証する同社のビジネスについて説明します。この種の検証プロセスの問題は、携帯電話、Web カメラ、単純な API 呼び出しなど、あらゆる種類のチャネルからのトラフィックを受け入れるという事実によって困難になります。これらの問題に取り組むために、Jumio は分類モデルと Facemash モデルを組み合わせて使用し、ID の真正性とカメラの前にいる人物の身元を検証します。

  • 00:05:00 このセクションでは、さまざまな ID とサブタイプが存在することを考慮して、本人確認に AI を使用する際の課題について話します。ブレやグレアのために判読できない画像を排除する必要性と同様に、画像の修正または位置合わせの重要性が強調されています。 ID 画像の承認は、すべてのコンポーネントが有効であると見なされるために合格する必要があるため、拒否よりも厳しいプロセスです。厳密な精度と不正ユーザーの排除を維持するために、AI モデルを使用して問題を検出し、人間を使用して結果の健全性チェックを行うヒューマン イン ザ ループ アプローチが採用されています。このアプローチにより、変換と不正検出の点で業界をリードする精度が可能になります。

  • 00:10:00 このセクションでは、講演者はコンピューター ビジョン向けの深層学習を製品化する際の分類の側面について説明します。過去数年間、画像分類は Inception バージョン 4 や Viji 16 などの事前トレーニング済みネットワークを使用して解決されてきましたが、粒状タグではなく集約タグが原因で、問題は少し異なります。タグ付けされた画像が 1 億以上あるため、さまざまなクラスを発見することは、モーフィングされたクラス発見の問題になり、アクティブ ラーニングで解決できます。ハイブリッド アクティブ ラーニングには、教師なし学習または組み込みのクラスタリングのステップが含まれ、ラベル付きの例を使用して最も人気のあるクラスから始めて、いくつかのクラスを取得します。

  • 00:15:00 このセクションでは、講演者は、ハイブリッド アクティブ ラーニング アルゴリズムを使用して、コンピューター ビジョンのディープ ラーニングを製品化する方法を説明します。このアルゴリズムは、クラスごとに多数のサンプルを収集し、分類器をトレーニングして、出力信頼レベルで画像を 50 クラスに自信を持って分類します。次にアルゴリズムは、分類子が信頼できない画像を自動的にクラスター化し、人間のエージェントがそれらを確認して、必要に応じて新しいクラスを追加します。モデルが作成されると、API としてデプロイされ、コンプライアンス規制がある場合は、ロギング、モニタリング、およびヘルス チェックが追加される場合があります。さらに、スピーカーは、アルゴリズムが新しいサブタイプに適応し、スペルが正しくない新しい ID が検出され、人間のエージェントがそれを拒否したときに行ったように、アルゴリズム自体を再トレーニングすることによって改善を続けていることに注意します。

  • 00:20:00 このセクションでは、スピーカーは、チャンピオン モデルを常に配置し、チャンピオンと比較したパフォーマンスに基づいて新しいモデルを評価することにより、新しいモデルをどのように製品化するかについて説明します。この方法では、データ セットを継続的に収集してクリーニングするハイブリッド アクティブ ラーニング インフラストラクチャを使用して、継続的な改善も可能になります。本番パイプラインは、データセットのクリーン度に敏感であり、トレーニングの目標エラー率は 20% 以下です。また、プロセス全体が PCI および GDP に準拠している必要があります。つまり、すべてを暗号化して、データをトレーニングに渡すのではなく、データに渡す必要があります。次にスピーカーは、顔照合に関する 2 つ目のケース スタディを紹介します。ここでは、セルフィーと ID を照合する際に、年齢、性別、民族性に関するデータの偏りを利用しています。

  • 00:25:00 このセクションでは、講演者は、深い畳み込みネットワークで顔の埋め込みとトリプレット損失関数を使用して、不正なユーザーを検出する問題に取り組むための可能なアプローチについて説明します。このプロセスでは、顔検出器を使用して顔を切り取り、公開データセットを使用してモデルをトレーニングした後、本番データを微調整します。このモデルは、監視されたインフラストラクチャを使用して有益なサンプルを収集し、データを継続的に増強することを含む、アクティブ ラーニングのプロセスを通じて微調整されます。講演者は、幅広いユースケースにおけるアクティブラーニングの有効性を強調しています。

  • 00:30:00 このセクションでは、スピーカーはコンピュータ ビジョン、特に顔認識におけるクリーン データの重要性を強調しています。彼は、深層学習の製品化にはモデリングだけではなく、分類などの単純な問題でさえ製品化段階で非常に複雑になる可能性があることを強調しています。コラボレーション インテリジェンスやヒューマン イン ザ ループのワークフローも、アルゴリズムの改善に役立ちます。顔認識では、クリーンなデータ セットが必要なため、特に重要です。講演者はまた、彼らの会社がウィーンとモントリオールに拠点を置く研究開発チームを採用していると述べました。

  • 00:35:00 このセクションでは、講演者は機械学習と AI の目的で機密データを処理する際に PCI コンプライアンスを維持するという課題について説明します。講演者は、データは意図された目的にのみ使用されるべきであり、不正アクセスを防ぐために非常に安全な場所と手順が必要であると説明しています.また、スピーカーは、データが PCI DMZ 内の Amazon S3 バケットに置かれ、機械学習の目的で難読化されたイメージが作成され、個人データが漏洩しないようにリモートで監視されることも説明しています。
Productionalizing deep learning for Computer Vision
Productionalizing deep learning for Computer Vision
  • 2018.10.16
  • www.youtube.com
In this conference talk, I explore how we use deep learning algorithms for smarter data extraction, fraud detection, and risk scoring to continuously improve...
 

ゲイル・ワイス:トランスフォーマーのように考える



ゲイル・ワイス:トランスフォーマーのように考える

Gail Weiss は、このビデオで変換エンコーダーの概念について説明し、シーケンスを処理してベクトルにエンコードする能力を説明しています。 Weiss は、Transformer エンコーダーの長所と制限を調査するいくつかの研究を強調し、Transformer エンコーダーの機能を表すために、制限付きアクセス シーケンス処理言語 (RASP) と呼ばれるプログラミング言語を紹介します。彼女はまた、多頭注意、選択パターン、および特定の条件下でのソフトマックスの課題についても説明した後、シーケンス演算子とライブラリ関数を使用して逆数とフリップ セレクターを計算する方法について詳しく説明します。 Weiss は、トランスフォーマーに最適なプログラムを作成するための洞察と、ユニバーサル トランスフォーマーとサンドイッチ トランスフォーマーからの洞察を提供し、最終的には選択述語とバイナリ対オーダー 3 の関係について説明します。

彼はまた、変圧器モデルで高次の注意を使用することの潜在的な利点と欠点、およびレイヤー全体で情報を維持する際の残留接続の重要性についても話します。彼女はまた、RASP モデルから逸脱する非常に深いトランスフォーマーの潜在的な問題についても説明し、情報のあいまいさを克服するために、より長い埋め込みを使用することを提案しています。

  • 00:00:00 ビデオのこのセクションでは、シーケンスを処理するように設計されたニューラル ネットワークの一部である変換エンコーダーの概念をゲイル ワイスが紹介します。彼女は、Transformer エンコーダーが特定のシーケンスを取得し、BERT を含むいくつかの一般的な例を使用して、一連のベクトルにエンコードすると説明しています。次に Weiss は、形式言語を認識して計算を実行する能力など、Transformer エンコーダーの長所と制限を調査したいくつかの研究を強調します。これらの研究は、Transformer エンコーダーの能力に関する洞察を提供しますが、Weiss は、Transformer が実際にどのようにタスクを処理するかについて明確な直感を提供していないと述べています。

  • 00:05:00 このセクションでは、Gail Weiss が、再帰型ニューラル ネットワーク (RNN) は、入力ベクトルに基づいて状態間の遷移を定義し、到達した状態に応じて最終的な分類を出力する有限状態マシンに似ていると説明しています。決定論的有限オートマトンの理解を使用して表現力を分析することにより、RNN を使用して何をすべきかについての洞察を得て、RNN を重み付き有限オートマトン、決定論的有限オートマトン、または重み付き決定論的有限オートマトンに変換できるようにします。ただし、この直感は Transformer には存在しないため、Transformer エンコーダーで同様の目的を果たすモデルを考え出す必要があります。 RNN とは異なり、Transformer エンコーダーは入力全体を一度に受け取り、固定回数の処理を適用するディープ ネットワークを介してすべての入力トークンを並列に処理します。 Transformers には状態はありませんが、一連の操作によって情報を処理および伝達するという感覚があります。

  • 00:10:00 このセクションでは、Gail Weiss がトランスフォーマー エンコーダーを制限付きアクセス シーケンス処理言語 (RASP) と呼ばれるプログラミング言語として表現する方法を説明します。RASP は、シーケンス オペレーター (S-ops) の作成を記述します。 S-ops は、操作をシーケンスに適用する変換エンコーダーのレイヤーを表し、より多くの処理された情報を作成します。 RASP は、トークンとインデックスの 2 つの定数を提供します。これらは、任意の入力シーケンスから文字とインデックスの新しいシーケンスを作成し、トランスフォーマー エンコーダー レイヤーの入力に入る各ベクトルに要素ごとのフィードフォワード ネットワークを適用します。プログラマーは、適用される操作の論理的または合理的な計算に責任を負います。これは、要素単位の操作である可能性があるためです。

  • 00:15:00 ビデオのこのセクションでは、Gail Weiss が多頭注意の概念を紹介しています。これは、要素単位ではないトランスフォーマー エンコーダー レイヤーの一部です。彼女はまず、シングルヘッド アテンションとその仕組みを説明することから始めます。ベクトルのシーケンスに 2 つの線形変換を適用し、一連のクエリと一連のキーを作成します。キーは提供する必要がある情報を記述し、クエリは各位置で必要な情報を記述します。各キーを使用したクエリのスカラー積により、重みが正規化され、各位置での出力が取得されます。 Weiss は、モデルがより多くのパラメーターを持つことを可能にするキーと値の中間変換に関する質問も明確にしています。

  • 00:20:00 このセクションでは、スピーカーは多頭自己注意と、それを使用して複数の操作を単一のレイヤーに圧縮する方法について説明します。このプロセスでは、入力ベクトルを同じ長さのベクトルに分割し、各ブロックを異なるヘッドに渡します。複数の頭が適用されると、それらが連結されて、多頭の自己注意の出力が形成されます。異なるヘッド間の依存関係はありませんが、複数の異なるヘッドがあるため、1 つのレイヤーで複数の操作を行うことができます。このプロセスにより、プログラマーは、コンパイラーの問題であるマルチヘッド自己注意ではなく、注意ヘッドについて心配することができます。

  • 00:25:00 このセクションでは、Gail Weiss がトランスフォーマーの特定の選択パターンをエンコードする方法の例を提供します。ゼロ、1、または 2 で自分自身を表すかどうかに基づいてポジションを選択する例を使用して、Weiss は、最初のポジションは最後の 2 つのポジションを選択し、2 番目のポジションは何も選択せず、3 番目のポジションは最初のポジションのみを選択することを示しています。 Weiss はまた、より大きいか等しい、より小さいか等しい、等しくないなど、さまざまな種類の比較を選択できること、およびセレクターを組み合わせて構成できることも説明しています。ただし、トランスフォーマーへの選択パターンの抽象化は、実行される操作の合理性に依存しており、これを保証するのはプログラマー次第であると Weiss は指摘しています。

  • 00:30:00 このセクションでは、スピーカーは特定の条件下でソフトマックスを使用する際の課題について説明します。つまり、選択基準を満たさない残りのポジションにわずかに焦点を当てるということです。この問題に対処するために、スピーカーは、これらの埋め込みのサイズが大きくなると、softmax が「以下」および「以上」の位置の厳密な選択を近似し始めることを示唆しています。次に、プレゼンテーションは集約の考え方と、平均を使用してトークンを選択および重み付けする方法に移ります。スピーカーは、トークンの反転の例と、反転セレクターを作成し、トークンを集約して、「hello」という単語の例を使用して「olleh」を出力する例を使用して、反転した入力シーケンスを取得する方法を提供します。

  • 00:35:00 このセクションでは、スピーカーは、長さ演算子が入力の一部ではなくてもトランスフォーマーで使用できる方法と、任意のパワーを隠す可能性のある恣意的に強力な選択操作を防ぐために選択決定がペアワイズである方法について説明します。スピーカーは、埋め込みの値を追加するスキップまたは残差接続などの他の変換コンポーネント、および RASP モデルには存在しないレイヤー ノルムについても話します。さらに、講演者は、コードの繰り返しを避けるための便宜上、関数の使用とセレクターの構成について言及しています。

  • 00:40:00 このセクションでは、スピーカーは、val、min、max などのシーケンス演算子を使用して、どのインデックスが特定の範囲内にあるかを確認する方法について説明します。また、インプレース ヒストグラムや入力シーケンス内のトークンのカウントなどの関数を実装する際のセレクター幅などのライブラリ関数の有用性についても言及しています。さらに、スピーカーは、レイヤーの正規化がそのような計算を複雑にする可能性があることに注意して、セレクターとインジケーター関数を使用してシーケンスの長さを計算する方法について説明します。最後に、フィードバック ネットワークを使用して逆数を計算する代替ソリューションを提案していますが、層の正規化によって影響を受ける可能性があることは認めています。

  • 00:45:00 このセクションでは、Gail Weiss が、比較的短いシーケンスを扱う場合でも、トランスフォーマーが逆数とフリップ セレクターを計算する方法を学習する方法について説明します。彼女はさらに、Ras プログラム分析を使用して、コンピューティング リバースを適用するタイミングとフリップ セレクターを適用するタイミングを決定できると同時に、select と Aggregate のペアが注目の的であることを確認できると説明しています。最後に、実際のトランスフォーマーが 2 つのレイヤーで逆計算を実行する方法を探ります。これは、トランスフォーマーが 20 エポック後に最大 100 の長さの入力シーケンスを反転するときに 99.6% の精度を達成することができたという調査結果によって裏付けられました。

  • 00:50:00 このセクションでは、Gail Weiss が、タスクを効果的に実行するために 2 つのレイヤーを必要とするトランスフォーマーに最適なプログラムの作成について説明します。プログラムを 1 層に減らして 2 倍のパラメーターを追加したり、2 つのヘッドを使用したりしても、変化するシーケンスの長さに対処する方法がわからないため、高い精度を得ることができません。さらに、アテンション パターンは両方のレイヤーで同じであり、最初のレイヤーは一様なアテンションを使用してシーケンスの長さを計算し、2 番目のレイヤーは同じ逆アテンション パターンを使用します。さらに、Weiss はインプレース ヒストグラムを示します。これには、トークンの選択と、そのトークンが入力シーケンスに出現する回数の出力が含まれます。各トークンをそれ自体と同じトークン、またはシーケンス トークンの先頭の最初の位置に集中させることで、アテンション ヘッドを 1 つだけ使用してトランスフォーマーをトレーニングし、逆数やその他の要素の計算をはるかに簡単にします。

  • 00:55:00 このセクションでは、Gail Weiss が Universal Transformer と Sandwich Transformer から得られる洞察について話します。どちらも Transformer モデルの考え方と利用方法に影響を与えます。彼女は、RASP のすべてのシーケンス演算子は有限回の演算の結果であると説明しています。そのため、この言語は無限に強力ではなく、有限回の O(n^2) 計算です。彼女はまた、Transformer エンコーダーのアテンション ヘッドの計算コストと、n^2 計算を利用する価値がないことにも触れています。その後、会話は選択述語と二項対三次関係に関する議論に移ります。

  • 01:00:00 このセクションでは、Gail Weiss が、2 次ではなく 3 次など、より高次の注意を払った変圧器モデルの電力の潜在的な増加について説明します。彼女は、そのようなモデルは潜在的に O(n^2) を超える演算で関数を計算し、その能力を高めることができると説明しています。ただし、これは計算コストも高くなります。 Weiss はまた、レイヤー全体で情報を保持および再利用する方法として、Transformer モデル内の残留結合の重要性を強調し、それらを削除すると、別個の操作として表示されなくても、パフォーマンスが大幅に低下する可能性があることを示唆しています。

  • 01:05:00 ビデオのこのセクションでは、Gail Weiss が、非常に深いトランスフォーマーで発生する可能性のある潜在的な問題と、それらが RASP モデルからどのように逸脱する可能性があるかについて説明します。彼女は ICML で読んだ論文に言及し、変換器から特定の情報を削除することの重要性について言及しています。しかし、彼女はまた、情報が重要であると認識された場合、情報が保持される可能性があることにも言及しています. Weiss はまた、トランスフォーマーが深くなるにつれて、情報のあいまいさの問題を克服するために、非常に長い埋め込みを持つという考えについても説明しています。
Gail Weiss: Thinking Like Transformers
Gail Weiss: Thinking Like Transformers
  • 2022.02.25
  • www.youtube.com
Paper presented by Gail Weiss to the Neural Sequence Model Theory discord on the 24th of February 2022.Gail's references:On Transformers and their components...
 

Matt Zeiler によるディープ ニューラル ネットワークの視覚化と理解



Matt Zeiler によるディープ ニューラル ネットワークの視覚化と理解

Matt Zeiler が、画像や動画のオブジェクト認識のための畳み込みニューラル ネットワーク (CNN) の視覚化と理解について説明します。彼は、深層ニューラル ネットワークが人間や霊長類と比較してオブジェクトを認識する方法について説明し、CNN がレイヤーを通過することによってオブジェクトを識別する方法を学習する方法を示します。 Zeiler は、CNN アーキテクチャを改善するプロセスを説明し、限られたデータでトレーニングする場合の制限について説明します。最後に、彼は上位層での下位層の使用と、ニューラル ネットワークでの畳み込みの適用に関する質問に答えます。

  • 00:00:00 このセクションでは、Matt Zeiler が、画像やビデオ内のオブジェクトを認識するために使用される畳み込みネットワークを視覚化する手法について説明します。これにより、各レイヤーが何を学習しているかを理解し、パフォーマンスを向上させるための洞察を得ることができます。畳み込みニューラル ネットワークは 80 年代後半から存在しており、以前とほとんど同じアーキテクチャを使用した新しいアプローチが採用されています。この分野でのブレークスルーは Geoff Hinton のチームによるもので、彼らのニューラル ネットワークは一般的なベンチマークである ImageNet のエラー率を通常の 26% から 10% 削減し、認識タスクのパフォーマンスを向上させました。

  • 00:05:00 このセクションでは、物体認識におけるディープ ニューラル ネットワークのパフォーマンスを霊長類や人間のパフォーマンスと比較した最近の研究について Matt Zeiler が説明します。ある研究では、画像が提示されたサルの脳内の電極の発火を記録し、その認識精度をディープ ニューラル ネットワークや人間の認識精度と比較しました。その結果、画像が 100 ミリ秒未満で提示された場合、人間、ディープ ニューラル ネットワーク、およびサルの IT 皮質がほぼ同等に機能することが示されました。さらに、Zeiler は、畳み込みネットワークが実際に何を学習しているかを学習することを目標に、最上位の特徴をまばらにしながら画像を再構築するために使用される教師なし学習モデルである D 畳み込みネットワークについて説明しています。

  • 00:10:00 このセクションでは、Matt Zeiler が、特に複数層の情報を扱う場合に、適切な再構成を実現するために畳み込みネットワークの操作を可逆にすることの重要性について説明しています。彼は、一度に最も強いアクティベーションを持つ単一の特徴マップを選択し、それを畳み込みネットワークの上部への入力として使用して、からの視覚化を再構築することにより、ネットワークの最上位レイヤーがどのように視覚化されるかを示します (50,000 画像の検証セットを使用)。ボトムアップ。第 1 層の特徴マップの視覚化は、研究者が以前に予想していた、さまざまな方向と周波数で方向付けられたエッジと色のエッジで構成されるフィルターを示しています。ただし、上位層の視覚化は、ネットワークがさまざまなオブジェクトをどのように学習して分類するかについて、複数の画像で最も強い活性化と不変条件を示すことで、新しい洞察を提供します。

  • 00:15:00 このセクションでは、Zeiler がニューラル ネットワークの第 2 層の開発について説明します。この層は、第 1 層よりもはるかに複雑なパターン セットを示します。第 2 層には、エッジ、平行線、曲線、円、カラフルなブロックなどの組み合わせが存在します。プーリングにより、イメージから処理できる範囲が広がります。 3 番目の層を見ると、Zeiler は、犬の顔や人間の顔など、オブジェクトの表現を構築するために重要なオブジェクトのパーツをどのように学習するかを示しています。グループ化機能は 3 番目のレイヤーに引き続き存在しますが、意味的に関連性の高いグリッドまたは特定の顔構造のグループ化として存在します。

  • 00:20:00 このセクションでは、ニューラル ネットワークがレイヤーを通過する際に特定のオブジェクトを識別する方法を学習する方法について説明します。ネットワークの第 4 層では、接続がよりオブジェクト固有になり、タスクで明示されていないカテゴリ (草など) が機能になります。モデルは、さまざまな種類の犬や、さまざまな方向にあるさまざまな種類のキーボードなど、複数の特徴を認識することも学習します。最後の畳み込み層は、分類層に近づくにつれて、畳み込みに対する境界効果のために大きくなります。この最後のレイヤーのコンテンツは、モデルが画像がどのクラスに属するかを決定する必要があり、このレイヤーには 256 個のフィーチャしか存在しないため、オブジェクト固有の内容になります。

  • 00:25:00 このセクションでは、Matt Zeiler が、画像の関連部分でビジュアライゼーションがトリガーされていることを確認するための実験について説明します。彼らは、画像上で平均ピクセル 128 のゼロのブロックをスライドさせ、モデルの活性化または確率を記録しました。ポメラニアン犬の顔をブロックすることで、ポメラニアンの可能性が大幅に低下することがわかりましたが、顔がブロックされている場合、最も可能性の高いクラスはテニス ボールです。興味深いことに、彼らは、画像内のテキストをブロックするときに機能を大幅に削除するため、5 番目の層がテキスト検出器を学習したことを発見し、層がテキストを他のクラスに関連付けることができるという概念を提供しました。最後に、彼らは 2012 年の ImageNet チャレンジで優勝したトロント グループのモデルを使用し、最初の層のフィルターの正規化に大きな格差があることを発見しました。

  • 00:30:00 ビデオのこのセクションでは、Matt Zeiler がディープ ニューラル ネットワークのアーキテクチャを改善するプロセスについて説明しています。彼は、くりこみの問題を修正した後、最初の層のフィルターが大きすぎてデッド フィルターになることが明らかになったと説明しています。 2 番目のレイヤーにも多くのブロッキング アーティファクトが含まれていたため、情報が失われ、畳み込みのストライドが小さくなり、ブロッキング アーティファクトが除去され、2 番目のレイヤーの柔軟性が向上しました。これらの変更は、2013 年の ImageNet コンペティションで優勝するのに役立ち、これらのアプローチは後のコンペティションで再び使用され、良い結果につながりました。 Zeiler は、一般化機能と、顕著性を判断する際のこれらのニューラル ネットワークの使用についても説明しています。

  • 00:35:00 このセクションでは、Zeiler は、少量のトレーニング データしか使用されない場合のディープ モデルの制限について説明し、モデルが機能を適切に学習するのに苦労していると述べています。彼は、これらのモデルは、物体認識にとって一般的に重要な特徴の認識に長けており、さまざまな表やグラフで示されているように、ほんの数例で他のタスクに転用できると説明しています。さらに、Zeiler は、すべての中間層とさまざまなタイプの分類器を調べて、深いモデルをトレーニングすることがいかに重要かを調べています。最後に、Zeiler は、トレーニング済みのモデルを利用して収集したラベル データをクリーンアップすることが可能であり、トレーニング モデルを改善できる可能性があることを示唆しています。

  • 00:40:00 このセクションでは、Zeiler は、分類でまともなパフォーマンスを示したニューラル ネットワークの下位層を、上位層または分類出力の近くで使用できるかどうかについての質問に答えます。彼は、抽出を繰り返すことで上位層により多くの情報が存在する可能性があると説明していますが、さまざまな種類の情報も役立つ可能性があります。その後、会話は、大規模なニューラル ネットワークをトレーニングするためのさまざまなレイヤーのパフォーマンスとハードウェアに関する考慮事項に移ります。 Zeiler はまた、微妙な感情や身振りなど、具体的でないクラスを認識するニューラル ネットワークの能力や、さまざまなレイヤー サイズのマッピングについても説明しています。

  • 00:45:00 このセクションでは、スピーカーは、畳み込みがニューラル ネットワークの画像やその他のレイヤーにどのように適用されるかを説明します。畳み込みの適用は、フィルターのサイズと、フィルターが適用される場所の間のストライドの 2 つのパラメーターに依存します。下位層では、スピーカーは、空間コンテンツが多すぎてすべての場所での計算が高すぎるため、2 のストライドが使用されると説明しています。ただし、これを行うと、情報が失われる可能性があります。話者はまた、ニューラル ネットワークの最初の数層には教師なし学習がなく、「放棄された」などの説明的な言葉がすでに語彙に組み込まれていることにも言及しています。
Visualizing and Understanding Deep Neural Networks by Matt Zeiler
Visualizing and Understanding Deep Neural Networks by Matt Zeiler
  • 2015.02.02
  • www.youtube.com
Matthew Zeiler, PhD, Founder and CEO of Clarifai Inc, speaks about large convolutional neural networks. These networks have recently demonstrated impressive ...
 

ChatGPT のトレーニング方法



ChatGPT のトレーニング方法

ChatGPT は、人間の会話を模倣するように設計された機械学習システムです。最初に大量の非構造化テキスト データに依存する生成的な事前トレーニング アプローチを使用してトレーニングされ、次に強化学習を使用して微調整されて、ユーザーの好みによりよく適応します。

  • 00:00:00 ChatGPT は、人間の会話を模倣するように設計された機械学習システムです。これは、大量の非構造化テキスト データに依存する生成的な事前トレーニング アプローチを使用してトレーニングされます。

  • 00:05:00 ChatGPT は、ユーザーの要求に人間のように応答するように訓練されたチャットボットです。これは、最初に手動で構築された目的の動作を示す例でモデルを調整し、次に強化学習を使用してモデルをユーザーの好みに合わせて調整することによって行われます。

  • 00:10:00 ChatGPT は、特定の入力に対して K 個の出力のランキングを使用してトレーニングされるチャットボットです。報酬モデルは、ロジットまたは正規化されていないログ確率を表すスカラー スコアをペアの各メンバーに割り当てます。スコアが大きいほど、モデルがその応答に配置される可能性が高くなります。報酬モデルをバイナリ分類器として扱う損失には、標準的なクロス エントロピーが使用されます。トレーニングが完了すると、スカラー スコアを報酬として使用できます。これにより、純粋に監視された設定よりもインタラクティブなトレーニングが可能になります。強化学習段階では、チャット ボットであるポリシー モデルが最終的な教師ありモデルから微調整されます。会話環境で人間に応答するときに、一連のトークンのアクションを発行します。会話履歴と対応するアクションである特定の状態が与えられると、報酬モデルは数値報酬を返します。開発者は、ここで強化学習アルゴリズムとして近位ポリシー最適化または PPO を使用することを選択します。このビデオでは PPO の詳細については説明しませんが、これはさまざまな分野で人気のある選択肢です。ここで最適化しようとしている学習済み報酬モデルは、私たちが気にかけている真の目標の適切な近似値です。ただし、これはプロキシ目標の近似値にすぎません。