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

 

講義 21. TSP アルゴリズムのチューニング



講義 21. TSP アルゴリズムのチューニング

この YouTube ビデオは、長年にわたって存在してきた NP 困難な問題である巡回販売員問題 (TSP) に焦点を当てています。スピーカーは、検索空間を最適化し、TSP アルゴリズムを高速化するために検索を剪定するためのさまざまなアルゴリズムとアプローチを実行します。これには、より優れた最小スパニング ツリー アルゴリズムの実装、コンパイラの最適化の有効化、テーブル ルックアップ アルゴリズムを使用するための距離計算の変更などがあります。検索スペースを制限し、速度とパフォーマンスのためにプログラムを最適化するために創造的に考える必要性がビデオ全体で強調されており、TSP やその他の関連する問題を解決するための貴重な洞察を提供します。

このビデオでは、キャッシング、遅延評価、ハッシュ テーブルへのデータの格納など、TSP アルゴリズムを最適化するためのさまざまな手法について説明し、直感よりも経験的なデータの重要性を強調しています。また、TSP の問題を解決した経験と、彼の職業におけるパフォーマンス エンジニアリングの重要性についても説明しています。講演者は、インクリメンタル開発や再帰的生成などのコード最適化プロセスについての洞察を提供し、実装が簡単なこれらの手法を聴衆に使用するよう促します。最後に、講演者は、パフォーマンス エンジニアリングを追求し、さまざまな Google サービスを強化するアルゴリズムを開発したこと、および彼のキャリアを通じて築いた友情に感謝の意を表します。

  • 00:00:00 このセクションでは、John Bentley が巡回販売員問題 (TSP) を紹介します。これは、長年にわたって存在してきた NP 困難な問題です。彼は、この問題についての経験と、40 年以上前にこの問題にどのように夢中になったかについて説明しています。次に、セットのすべてのサブセットを列挙する再帰的なソリューションについて説明し、セット内の整数をカウントするプロセスについて説明します。彼は、この方法はうまく一般化できませんが、TSP のより高速なアルゴリズムを開発するのに役立つ原則を提供すると述べています。

  • 00:05:00 このセクションでは、スピーカーはサイズ M のすべてのセットを再帰的に生成する方法を説明します。アプローチは、サイズ n-1 のセットから開始し、最後にゼロを追加してサイズ M のすべてのセットを列挙することです。最後にゼロがあるセットの数は、2 の M 乗から 1 を引いて計算されます。再帰的なスケッチは、すべてのサブセットがゼロから逆方向にカウントされ、最後に 1 が追加される例で示されています。このアルゴリズムのコードは単純で、ほとんどのプログラミング言語で実装できます。講演者は聴衆に質問をして発言するよう促し、彼らの創造性は教育システムによって打ち負かされた可能性があると述べています。ビデオの残りの部分では、巡回販売員の問題と、そのための効率的なアルゴリズムを開発する方法について説明します。

  • 00:10:00 このセクションでは、巡回セールスマン問題 (TSP) と、NP 困難として証明された最初の問題の 1 つであるコンピューター サイエンスにおける典型的な問題としてのその重要性について話します。講演者は、同僚が博士論文で 16 ポイントの TSP を解決するのに苦労したことについて話し合ったときに、どのようにしてこの問題に関心を持つようになったかについての個人的な逸話を共有しています。次に講演者は、20 年後に同じ問題を解決するためのプログラムをどのように作成したかについて説明します。この問題は、リーハイ大学のアルゴリズム クラスで人気のトピックとなり、パフォーマンス エンジニアリングが 40 年間でどのように変化したかについてのさらなる調査につながりました。

  • 00:15:00 このセクションでは、スピーカーは、n 都市のすべての階乗順列を生成して最適なツアーを見つけるための単純な C プログラムでの再帰アルゴリズムについて説明します。ツリーの分岐係数は各ノードで 9 になり、n=10 の大きなツリーになり、10 の階乗の組み合わせが可能になります。プログラムは、順列ごとに都市間の距離の合計をチェックし、これまでに見つかった最小の合計を保存します。プログラムは正しく動作しますが、n=10 の場合の速度は不明です。

  • 00:20:00 このセクションでは、スピーカーは順列の実行にかかる時間について説明し、プログラムを高速化するためのさまざまな方法を提案します。彼は、高速なラップトップで 4 つの順列を実行するのにかかる時間と、順列が大きくなるにつれて時間が劇的に増加する方法について説明しています。彼はまた、1 つの開始を選択して他のすべてを無視するか、並列化を使用するなど、プログラムを高速化する方法も検討しています。さらに、コンパイラ、特に GCC と -o3 を使用してプログラムを最適化する可能性についても言及しています。最後に、より高速なマシンと高速な CPU 時間を使用する利点について説明します。

  • 00:25:00 このセクションでは、スピーカーは、さまざまな最適化によって TSP アルゴリズムがどれだけ高速になるかについて説明します。たとえば、コンパイラの最適化を有効にするだけで、パフォーマンスが最大 25 倍向上する可能性があります。さらに、長年にわたってハードウェアが改善されているため、カーネルの最適化により、より高速なクロック速度、より広いデータ パス、およびより深いパイプラインが得られます。 150 倍の速度アップ。さらに、テーブル ルックアップ アルゴリズムを使用するように距離計算を変更すると、2.5 倍から 3 倍の速度アップにつながる可能性があります。モデリングにより、TSP アルゴリズムに対するさまざまな最適化の効果を判断できます。

  • 00:30:00 このセクションでは、スピーカーは、同じ部分を繰り返し計算することを避けるために、同じ合計を複数回計算するための帰納的アルゴリズムを最適化するさまざまな方法を説明します。講演者はまた、4 つのアルゴリズムの実行時間を示し、より高速なマシンを使用する方法や、en の各要素を利用して同じ時間内に問題のサイズを 1 ずつ作成する方法などを説明します。また、巡回セールスマンの問題を解決する方法を説明し、問題の側面によって最適なツアーが異なるように見えることを示しています。話者は、実行時間が長いにもかかわらず、問題を解決することを奨励することで締めくくります。

  • 00:35:00 このセクションでは、スピーカーは 52 階乗の大きさについて説明し、どの指数関数よりも高速であるかを説明します。彼は、それはおよそ 2 の 225 乗、または 10 の 67 乗であり、膨大な数であると説明しています。日常的に言えば、彼は 52 階乗ナノ秒をカウントダウンし、100 万年ごとに 1 歩進み、最終的に赤道を一周し、太平洋から一滴の水を取る例を挙げています。次に、これらの問題を効率的に解決するには、検索スペースを制限し、検索を削減する必要があることを強調しています。

  • 00:40:00 このセクションでは、話し手は娘から与えられた解決すべき問題を提示します。問題は、1 から 9 までの 9 つの整数のすべての順列を見つけて、長さ m の最初の各部分文字列が M で割り切れ、全体が 9 で割り切れるようにすることです。スピーカーは、問題を解決するプログラムを書く前に考えるように提案しています。 .次に、文字列と再帰手順を使用してすべての可能な順列を生成する AWK プログラミング言語のプログラムについて説明します。このプログラムを実行すると、約 49 時間かかります。時間の複雑さ。

  • 00:45:00 このセクションでは、スピーカーは、プログラムを使用して特定の文字列を探すときに検索スペースを最適化する方法について説明します。彼は、特定の数で割り切れる、特定の位置に特定の数を含むなど、特定のプロパティを持つ文字列を見つける例を通してこれを示しています。勝者の文字列に存在する必要があるプロパティを定義することにより、検索スペースを 100 万の 3 分の 1 から 5 万の可能な選択肢に大幅に減らすことができます。これは、プロセスを高速化するために検索を絞り込むことの重要性を強調しています。スピーカーは、速度とパフォーマンスのためにプログラムを最適化する方法について考える必要性を強調しています。

  • 00:50:00 このセクションでは、スピーカーは、TSP アルゴリズムを高速化するために検索を削除する方法について説明します。検索を削減する 1 つの方法は、うまくいかないことを続けないことです。つまり、さらに追加して合計が最小合計よりも大きくなることが判明した場合は、検索を停止します。この方法では、同じマシン上で時間がかからず、アルゴリズムを高速化できます。ただし、講演者は、TSP パスや最小スパニング ツリーの計算など、探索を刈り込み、下限を取得するための他のアイデアも紹介します。これらはより強力ですが、より高価でもあります。

  • 00:55:00 このセクションでは、より優れた最小スパニング ツリー アルゴリズムを実装して TSP の下限を改善する方法について説明します。彼は、都市のサブセットのビット マスク表現による並列処理を使用して、MST を迅速かつ効率的に計算します。 MST の計算には n の 2 乗の時間がかかりますが、この方法は強力なプルーニング メカニズムであり、プログラムの速度が向上します。いくつかの試行と課題の克服の後、プログラムは 17 秒から 0 秒にかかり、より大きなデータセットを簡単に処理できるようになりました。

  • 01:00:00 このセクションでは、遅延評価を実装し、データをハッシュ テーブルに格納し、よりスマートな検索でより良い開始ツアーを使用することで、TSP アルゴリズムを最適化する実験についてスピーカーが説明します。彼は、キャッシングの利点と、さまざまなアプローチを実験およびテストすることによってアルゴリズムのパフォーマンスを最適化する方法について説明しています。講演者は、パフォーマンス エンジニアリングは経験的なデータに頼るべきであり、直感はしばしば間違っていることを強調しています。彼はまた、モナドノック山への登頂と、予測可能なアルゴリズムと予測不可能なアルゴリズムの違いについても言及しています。

  • 01:05:00 ビデオのこのセクションでは、スピーカーは、単にランダム ツアーを使用するのではなく、TSP アルゴリズムを最初の開始都市により迅速に誘導することで、よりスマートに検索する方法を説明しています。単純な挿入ソートを使用して、最も近い 30 都市を最初に訪問することで、検索スペースを削減でき、大きな違いが生まれます。話者は、1997 年には 230 を出すことができてうれしかったが、さらに 20 年後には、ムーアの法則だけを使用すると、1,000 の係数を得ることができると述べています。しかし、ムーアの法則とコンパイラ テクノロジをすべてのアルゴリズムと組み合わせることで、最大 52 個まで拡張することができました。講演者は、共有したすべてのことを 160 行のコードで実現できることを強調しており、これらすべては十分に範囲内にあります。このクラスを修了した人の練習の様子。

  • 01:10:00 このセクションでは、不必要な作業を回避するためのキャッシュ、事前計算、結果の保存など、コードを最適化するためのいくつかの手法について説明します。彼はまた、漸進的なソフトウェア開発の重要性と再帰的生成の力を強調しています。講演者は、彼が議論するテクニックのいくつかは、彼が書いたコード チューニングに関する古い本でカバーされていると述べていますが、いくつかのアイデアは現在でも適用されています。彼はまた、プロファイラーやコスト モデルなど、舞台裏で多くのツールを使用して実験を行い、コストを見積もったことにも言及しています。最後に、これらのテクニックは実際に簡単に実装できるため、視聴者がこれらのテクニックを探求して使用することを奨励しています。

  • 01:15:00 このセクションでは、スピーカーは、アルファ ベータ プルーニングからハッシュ衝突の問題まで、さまざまなトピックについて説明します。講演者はまた、1990 年代初頭に巡回セールスマン問題を解決した経験を同僚と共有しています。彼らは 48 の州都の問題を解決することができ、そのことに大喜びしました。講演者はまた、彼の職業におけるパフォーマンス エンジニアリングの重要性を強調し、自動化されたゲリマンダリングや通話コーディングなど、さまざまな計算システムへの関与について言及しています。全体として、このセクションでは、講演者のコンピューター プログラミングにおける膨大な経験と、さまざまな手法や問題に関する彼の見解についての洞察を提供します。

  • 01:20:00 このセクションでは、スピーカーはパフォーマンス エンジニアリングを生き方として追求してきたことに感謝の意を表します。彼は、Google のさまざまなサービスを強化するアルゴリズムを開発できるようになったと述べています。講演者はまた、彼のキャリアを通じて築いた友情に感謝し、パフォーマンス エンジニアリングが彼にとってそうであったように、他の人にとって良いものになることを望んでいます。
21. Tuning a TSP Algorithm
21. Tuning a TSP Algorithm
  • 2019.09.23
  • www.youtube.com
MIT 6.172 Performance Engineering of Software Systems, Fall 2018Instructor: Jon BentleyView the complete course: https://ocw.mit.edu/6-172F18YouTube Playlist...
 

講義 22. グラフの最適化



講義 22. グラフの最適化

このビデオでは、グラフの概念、それを表すさまざまな方法、およびグラフ アルゴリズムの効率を向上させる最適化手法について説明します。講演者は、グラフをメモリに保存してエッジを追加、削除、またはスキャンするための最適な方法とともに、関係をモデル化し、目的地に到達するための最短経路または最も安価な方法を見つけるためのグラフのアプリケーションを探究します。このビデオでは、ビット ベクトルを使用したグラフ検索でのキャッシュ パフォーマンスの最適化と、プレフィックスの合計を使用して負の値を除外する並列幅優先検索アルゴリズムの実装についても説明します。最後に、講演者は、1,000 万の頂点と 1 億のエッジを持つランダム グラフでの実験について語り、信頼性と一貫性を確保するためのコードにおける決定論の重要性を強調します。

このビデオでは、right min 演算子の実装、決定論的並列 BFS コード、方向最適化手法、グラフ圧縮など、さまざまなグラフ最適化手法についても説明します。方向最適化手法には、フロンティアが大きく、他のグラフ アルゴリズムに適用されている場合に着信エッジを探索するためのボトムアップ アプローチが含まれます。一方、グラフ圧縮は、連続するエッジ間の差をエンコードし、使用されるビット数を減らすことによってメモリ使用量を削減することを目的としています。これらの値を保存します。さらに、このビデオでは、さまざまな種類のグラフで最適化をテストして、どこがうまく機能し、どこがうまくいかないかを判断することの重要性を強調しています。

  • 00:00:00 このセクションでは、インストラクターがグラフの概念を紹介し、オブジェクト間の関係をモデル化するためにグラフを表現および使用するさまざまな方法について説明します。例としては、ソーシャル ネットワーク、タンパク質ネットワーク、ワールドワイド ウェブなどがあります。頂点とエッジは重み付けと方向付けが可能で、メタデータとタイプを持つことができます。インストラクターは、ある都市から別の都市への最短経路や、目的地に到達するための最も安い方法を見つけるためのグラフのアプリケーションも提示します。最後に、グラフ アルゴリズムの効率を向上させるための圧縮や並べ替えなどのグラフ最適化手法について説明します。

  • 00:05:00 コンピュータビジョンにおける画像セグメンテーション。スピーカーは、メモリ内のグラフを表す 2 つの方法についても説明します。次数 N の 2 乗のスペースを必要とする隣接行列と、次数 M のスペースを必要とするエッジ リスト表現です。
     
  • 00:10:00 ビデオのこのセクションでは、隣接リスト形式や圧縮スパース行形式など、グラフを表すさまざまな方法について説明しました。隣接リスト形式には、ポインターの配列が含まれます。各ポインターは、その頂点のエッジを格納するリンクされたリストを指します。これには O(n + m) のスペース要件がありますが、メモリへのランダム アクセスが原因でパフォーマンスの問題が発生する可能性があります。一方、圧縮された疎行形式では、O(n + m) のスペース使用量があり、頂点の次数を効率的に計算できます。さらに、エッジの値または重みを追加の配列に格納できます。

  • 00:15:00 このセクションのビデオでは、ストレージ コスト、グラフのスキャン、エッジの追加、エッジの削除、特定の頂点のすべての隣接点の検索など、さまざまなグラフ表現におけるトレードオフについて説明しています。隣接行列のストレージ コストは O(n^2) ですが、エッジの追加と削除は O(1) です。エッジ リストの場合、コストはグラフのスキャンに O(m)、エッジの追加に O(1) です。エッジの削除は O(m) です。 JCU リストにエッジを追加または削除するには、次数 V が必要であり、ストレージ コストは O(m+n) です。最悪の場合、圧縮されたスパース行形式でエッジを追加すると、最大で O(m+n) のコストがかかる可能性があります。特定の頂点のすべての近傍を見つけることは、隣接行列の場合は O(n)、エッジ リストの場合は O(m)、隣接リストの場合は O(V の次数) です。

  • 00:20:00 このセクションでは、スピーカーは、隣接行列、エッジ リスト、JCL リスト、圧縮スパース行 (CSR) 形式など、グラフを表すさまざまな方法について説明します。 CSR は、グラフを更新する必要のない静的アルゴリズムでスパース グラフを処理するのに最適であると彼は説明します。これは、頂点のすべての隣接がメモリに連続して格納され、スキャンが容易になるためです。彼はまた、現実世界のグラフはまばらでべき乗次数分布を持つ傾向があることにも注目しています。つまり、ほとんどの頂点は次数が低く、次数が非常に高い頂点はいくつかあります。

  • 00:25:00 このセクションでは、インストラクターがグラフの最適化と幅優先探索アルゴリズムの実装について説明します。グラフの次数分布が歪んでいる場合、頂点間で並列化されたアルゴリズムを実行すると、エッジの数が異なるため、負荷の不均衡の問題が発生する可能性があります。幅優先探索アルゴリズムは、ソース頂点からの距離の順に頂点を訪問するために使用され、出力には、訪問された順序で訪問された頂点、各頂点からソース頂点までの距離、およびツリーの各頂点が幅優先探索の前のレベルで親を持つ幅優先探索ツリー。シリアル BFS アルゴリズムは、距離を無限大に初期化し、キュー データ構造を作成し、ルートの距離をゼロに設定して、キューに配置します。アルゴリズムは、キューに頂点がなくなるまで繰り返します。このアルゴリズムに必要な作業は、N と M の観点から説明されています。

  • 00:30:00 このセクションでは、スピーカーは、圧縮されたスパース行フォーマットを使用したシリアル BFS アルゴリズムの実装について説明します。このアルゴリズムには、parent と Q の 2 つの配列の初期化、ソース頂点のキューへの配置、および現在の頂点の近傍の反復処理が含まれます。ただし、コードの最もコストのかかる部分は、メモリへのランダム アクセスを構成するネイバーの親へのアクセスです。これにより、ほぼ毎回キャッシュ ミスが発生し、パフォーマンスが低下する可能性があります。アドレス配列は主にシーケンシャルにアクセスされ、頂点ごとにエッジ配列へのランダム アクセスが 1 回だけ必要なため、キャッシュ フレンドリーになります。アルゴリズムの全体的な作業は、次数 M + N であると判断されます。

  • 00:35:00 このセクションでは、スピーカーはグラフ最適化におけるキャッシュ パフォーマンスの分析と最適化について説明します。この分析では、配列の順次初期化、キューの先頭からの頂点のデキュー、次数の計算、およびオフセット配列とエッジ配列へのアクセス中にキャッシュ ミスがどのように発生するかを分析します。最適化には、頂点がまだ探索されているかどうかを格納するためのビット ベクトルの使用が含まれます。これは、親情報を持つ配列へのアクセスによるキャッシュ ミスを減らすための 1 ビット変数です。この最適化により、em から n までのエッジと頂点の配列にアクセスする際のキャッシュ ミスが減少します。

  • 00:40:00 このセクションでは、スピーカーは、ビット ベクトルを使用してグラフ検索を最適化し、キャッシュ ミスの数を減らす方法を説明します。ビット ベクトルの最適化では、「visited」と呼ばれるサイズが 32 を超える約 n のビット ベクトルを初期化し、ソース頂点を除いてそのビットを 0 に設定します。このコードは、ビット ベクトル操作を使用して訪問済みの近隣をチェックし、近隣を探索するときにビットを設定します。講演者は、フロンティアで動作し、探索された頂点ごとに親ポインターを生成する幅優先探索アルゴリズムの並列実装も示します。並列実装では、フロンティア上の複数の頂点が同じ近隣にアクセスしようとする場合の潜在的な競合を認識する必要があり、各プロセッサがほぼ同じ量の作業を行うようにするために負荷分散が必要です。

  • 00:45:00 このセクションでは、インストラクターは、すべての親エントリを負のエントリに初期化することから始めて、グラフで並列幅優先検索を実行する方法を示します。次に、インストラクターはソース頂点をフロンティアの 0 番目のインデックスに設定し、フロンティア サイズが 0 よりも大きい間、cell for ループを使用してフロンティアのすべての頂点を並列に反復処理します。彼らは、度数配列の「i 番目」のエントリをフロンティアの頂点の度数に設定し、この配列で前置和を実行します。次に、インストラクターはフロンティアを再度ループし、各頂点の近隣をチェックして探索されたかどうかを確認し、比較とスワップを実行して、頂点がまだ探索されていない場合は、近隣の親の負の値の元の値と交換します。 .

  • 00:50:00 このセクションでは、ビデオは並列幅優先検索 (BFS) アルゴリズムについて説明します。このアルゴリズムは、配列内の負の値を除外し、生成に使用される非負の値を保持します。プレフィックス合計による出力配列の一意のオフセット。このビデオでは、アルゴリズムの作業とスパンも分析され、反復回数はグラフの直径によって制限され、頂点あたりの作業は n であり、アルゴリズムの全体的な作業は n プラス M のシータであり、一致することが示されています。シリアルアルゴリズムの働き。

  • 00:55:00 このセクションでは、講演者は、1,000 万の頂点と 1 億のエッジを持つランダム グラフでの実験と、双方向のハイパースレッディングを備えた 40 コアのマシンでアルゴリズムをテストした方法について話します。また、ハイパースレッディングのしくみと、コードに非決定性があるかどうかを判断することの重要性についても説明しています。それらは、BFS コードで以前に探索された頂点に write min 演算子や負の値を使用するなどの決定論的プロセスを実装することによって、非決定論を修正する方法を示しています。これにより、コードによって生成される最終的な BFS ツリーは常に同じになり、信頼性と一貫性が確保されます。

  • 01:00:00 このセクションでは、プレゼンターが適切な最小演算子の実装と、決定論的な並列 BFS コードを使用する利点について説明します。適切な最小演算子は、比較とスワップを伴うループを使用して実装できます。まだ完全に決定論的ではありませんが、一貫した BFS ツリーが生成されます。決定論的並列 BFS コードは、デバッグが容易であり、そのパフォーマンスについての推論も容易です。プレゼンターは、方向最適化手法も紹介します。これは、フロンティアが大きく、多くの頂点が既に探索されている場合に着信エッジを探索するためのボトムアップ法を含み、エッジ トラバーサルを節約します。

  • 01:05:00 このセクションのビデオでは、2012 年に Scott Beamer によって研究された、BFS におけるトップダウンおよびボトムアップ アプローチのパフォーマンスについて説明します。 -up アプローチは、大きなフロンティアに対してより効率的です。これら 2 つのアプローチのどちらを選択するかは、フロンティアのサイズに基づいており、n が 20 を超えるしきい値が実際にはうまく機能しています。このビデオでは、フロンティアを表現するさまざまな方法についても説明し、トップダウンとボトムアップの両方のアプローチよりも常に高速な方向最適化アプローチを含む、3 つの異なるトラバーサル アプローチのパフォーマンスを比較しています。方向最適化のアイデアは、単なる BFS よりも一般的であり、他のグラフ アルゴリズムにも適用されています。

  • 01:10:00 このセクションでは、講演者は、方向最適化とグラフ圧縮という 2 つのグラフ最適化手法について説明します。方向の最適化には、フロンティアのサイズに基づいて疎または密の実装を選択することが含まれます。グラフ圧縮の目的は、連続するエッジ間の差異をエンコードし、可変長コードまたは K ビット コードを使用してこれらの値を格納するために使用されるビット数を減らすことで、メモリ使用量を削減することです。 K ビット コードのデコードに関する 1 つの問題は、予測できない分岐が含まれることです。そのため、最適化には、エンコードに同じバイト数を必要とする整数をグループ化し、ヘッダー バイトを使用してグループのサイズと各整数をデコードするために必要なバイト数。これにより、スペースの使用量がわずかに増加しますが、デコードのコストが削減されます。

  • 01:15:00 このセクションでは、大規模だが比較的まばらな現実世界のグラフでアルゴリズムを実行しているときにスペースを節約するために、アルゴリズムを実行しているときにその場でエッジをデコードし、それらをエンコードする必要があることを学びます負荷の不均衡を避けるためのチャンク。実験では、これらの圧縮スキームがスペースを節約し、圧縮されていないバージョンよりもわずかに遅くなるだけであることが示されていますが、メモリ使用量のために並列実行すると圧縮されていないバージョンよりも高速になります。最後に、グラフの最適化は特定のグラフではうまくいくかもしれませんが、他のグラフではうまくいかないかもしれません.
22. Graph Optimization
22. Graph Optimization
  • 2019.09.23
  • www.youtube.com
MIT 6.172 Performance Engineering of Software Systems, Fall 2018Instructor: Julian ShunView the complete course: https://ocw.mit.edu/6-172F18YouTube Playlist...
 

講義 23. 動的言語における高性能



講義 23. 動的言語における高性能

このビデオでは、Julia プログラミング言語に焦点を当てて、高レベルの動的型付け言語でパフォーマンス クリティカルなコードを記述する際の課題について説明します。 Julia は、C や Fortran などの低レベル言語と同じレベルのパフォーマンスを提供しながら、高レベルのインタラクティブな機能を提供することを目指しています。複数の型、組み込みのメタ プログラミング、および最適化されたコード パスで機能する汎用コードを作成する Julia の能力により、大きなヴァンダーモンド行列の生成や特殊関数の特定の多項式の最適化されたコードなどの状況で、Python よりも高速になります。さらに、Julia の最適化されたコード パスは、Python よりもはるかに高速にボックスを割り当てるため、配列などの動的データ構造を処理するのに適しています。最後に、このビデオでは Julia の複数のディスパッチと型推論機能について説明します。これにより、異なる引数に対して異なるバージョンの関数を使用し、型を再帰的に推論できます。

このビデオでは、パラメトリック ポリモーフィズムが Julia でどのように機能するか、またそれによって型の無限ファミリーを作成する方法についても説明します。 X と Y のパラメーターを持つポイント型のようなパラメーター化された型を定義し、それらのパラメーターを実数のサブタイプに設定することで、特定のサブタイプで「インスタンス化」できる型のセット全体を作成できます。さらに、スピーカーは、スレッディング、ガベージ コレクション、分散メモリ並列処理を実装するための Julia の機能とライブラリ、および識別子に対する幅広い Unicode サポートについて説明します。さらに、適切でわかりやすい名前を持つ変数を持つことの重要性が強調され、講演者は、将来の新しい開発につながる可能性がある Julia テクノロジーと Silk テクノロジーの融合を模索しているプロジェクトについて言及します。

  • 00:00:00 このセクションでは、講演者は、Python や Matlab などの高レベルの動的型付け言語でパフォーマンスが重要なコードを記述する際の課題について話します。これらの言語はテクニカル コンピューティングやインタラクティブな調査で人気がありますが、パフォーマンスが重要なコードを記述する場合、パフォーマンスの壁にぶつかる傾向があります。その結果、人々は従来、Fortran や C などの低レベル言語をパフォーマンス クリティカルなコードを記述するためのソリューションとして使用していましたが、これにより、コーディングの複雑さが大幅に増し、一般性が失われています。次に、講演者はプログラミング言語 Julia を紹介します。Julia は、C と同じレベルのパフォーマンスを提供しながら、Python と同じくらい高レベルでインタラクティブであることを目指しています。 2013 年には、最近の 1.0 リリースが安定しており、約束されたパフォーマンスを提供しています。

  • 00:05:00 このセクションでは、スピーカーは大きな vandermonde 行列を生成するときの Julia と Python のパフォーマンスの違いについて説明します。 Python は数百行の C コードに依存して行列を生成しますが、コードが複雑なためにかなりの時間がかかりますが、Julia は同じ行列を 2 つのネストされたループだけで型宣言なしで生成できます。 Julia には、メタ プログラミングまたはコード生成のための組み込みの手法もあり、特別な関数の特定の多項式の非常に最適化されたインライン評価を可能にします。場合によっては、Julia は、特殊関数用に最適化された C および Fortran ライブラリよりも 2 ~ 3 倍高速になることがあります。

  • 00:10:00 このセクションでは、スピーカーは、Julia のような高水準言語が、低水準言語では困難なパフォーマンスのトリックをどのように可能にするかについて説明します。彼は、Julia を Python と対比させ、Julia が完全に汎用的であると同時にコードを高速にコンパイルできることを強調することで、Julia がいかに高速であるかを説明しています。講演者はまた、Julia でノートブックを使用して数値のリストの合計を計算する方法を示し、Julia の実装を Python および C と比較します。彼は、ベンチマーク ツールを使用して統計を収集し、実装の最小時間を返す方法を示します。走る。

  • 00:15:00 このセクションでは、スピーカーは Julia でマクロを使用して、ループを設定し、時間を計る式を書き換えることについて説明します。この方法を使用すると、10 の 7 乗を処理するのに約 11 ミリ秒かかります。次に、Julia 内から Python 関数を呼び出せるようにする pycall というパッケージを利用して、Python でのベンチマークに移ります。彼は、Python の sum 関数は C で書かれているため、比較的うまく機能するが、Python のリストはあらゆるタイプの項目で構成できるという事実は、C よりも遅くなるように構造化する必要があることを意味すると述べています。これは対照的です。パフォーマンスを犠牲にしない方法で異質性を可能にする Julia に。

  • 00:20:00 このセクションでは、講演者は、配列などのデータ構造で高性能を達成することに関して、Python などの動的言語の課題について説明します。スピーカーは、配列のすべての要素の値と型タグの組み合わせにより、最適化された実装で、配列のボックスを再割り当てせずに配列のすべての要素の型情報とデータを読み取ることが困難になることに注意します。彼らは、配列のパフォーマンスを向上させるために設計されたライブラリである numpy の使用を、同様の値を一緒に入力してディスパッチすることによって配列操作を最適化する方法として強調しています。

  • 00:25:00 このセクションでは、講演者は Python コード用に高速な Python コンパイラを作成する方法について説明します。ただし、Python ですべての型が同じかどうかを確認するための高速パスを提供する機能がありません。つまり、ループの反復ごとに、結果に新しいボックスを割り当て、plus 関数を動的に検索する必要があります。もっとゆっくり。組み込みの Python は、C および NumPy コードよりもはるかに遅いことが判明しました。 Julia の配列型には型が付加されているため、メモリ内の NumPy 配列のように見えます。任意の配列と呼ばれる Python リストに相当するものは、純粋な Python よりもさらに遅いことがわかりました。 Julia はコード パスを最適化して、Python よりもはるかに高速に多くのボックスを割り当てました。

  • 00:30:00 このセクションでは、講演者は、あらゆるコンテナ タイプで機能し、plus 関数をサポートするストレート ループを使用して、Julia で最適化されたコードを記述する方法を示します。この関数は完全に一般的で、ループオーバーが可能でプラス関数を持つものなら何でも動作します。講演者はまた、ほとんどのコードは自動ベクトル化できないため、コンパイル時間とコード サイズが増加するため、ループのベクトル化はデフォルトではないことも説明しています。さらに、コードは、複素数、四元数の配列、一意の整数のセットを使用してテストされ、それらすべてに対して機能します。全体として、Julia はいくつかの要因により高速です。

  • 00:35:00 このセクションでは、スピーカーは、関数に渡される引数のタイプに応じて、Julia プログラミング言語が関数の特殊バージョンをコンパイルする方法を説明します。たとえば、x の関数 f が x プラス 1 に等しい場合、64 ビット整数が渡された場合、Julia はその型に特化したその関数のバージョンをコンパイルします。入力の型から推論された出力の型に移行するプロセスは、型の推論と呼ばれます。話者は、Julia は動的言語であるため、型推論が失敗する可能性があり、失敗した場合は C にフォールバックすることに注意します。

  • 00:40:00 このセクションでは、スピーカーは型推論について説明し、それが再帰的にどのように機能するかの例を示します。彼は、LLVM コンパイラが単純な関数を取得し、定数の折りたたみを行うことでそれをいくつかのマシン命令に最適化する方法を示しています。次に、型宣言を使用してエラーを防止し、ディスパッチと呼ばれる処理を行う方法を示します。これにより、異なる引数に対して異なるバージョンの関数を使用できます。型階層に基づいてさまざまなメソッドを定義することで、1 つの関数が複数のメソッドを持つ方法を示しています。

  • 00:45:00 ビデオのこのセクションでは、スピーカーが Julia の型の階層を説明しています。主な型は「数値」、サブ型は「整数」と「極実数」です。彼はまた、Julia での複数ディスパッチの概念についても話しています。ここでは、メソッドは最初の引数の型だけでなく、すべての引数の型によって決定されます。このオブジェクト指向プログラミングの一般化により、混合型で動作する操作を簡単にオーバーロードし、階層の下で最も具体的なメソッドを選択できます。プラス関数の例は、この点を説明するために使用されます。

  • 00:50:00 このセクションでは、スピーカーは、単精度の実数や複素数などのさまざまな種類の値を別の値に加算する方法を説明します。ただし、単精度の複素数を倍精度のカップル メンバーに追加するなど、異なるタイプの値を一緒に追加すると、メソッドの所有権に関する問題が発生する可能性があります。スピーカーは、平方根関数の例と、引数の型を適切に推測するためにその戻り値がどのように型安定している必要があるかを示しています。型推論により、戻り値の型が入力の値ではなく入力の型に依存することが保証されます。スピーカーは、パフォーマンスの低下につながる、Python や MATLAB などの動的言語での型推論の課題についても言及しています。

  • 00:55:00 このセクションでは、スピーカーは、さまざまな言語が複素数と整数演算を処理する方法と、Julia のデフォルトの整数演算が 64 ビットを使用して、ビット サイズが小さい言語よりもオーバーフローしにくくする方法について説明します。スピーカーは、Julia でカスタム型を定義する利点についても話します。具体的には、2 次元ベクトルのカスタム ポイント型を定義することに焦点を当てています。これは、2 つの値に配列を使用するよりも高速で効率的です。スピーカーは、このカスタム型を最適化するために何度か反復を行い、最終的に、プラス関数が定義された不変の構造体に到達します。

  • 01:00:00 ビデオのこのセクションでは、スピーカーは、ポイント オブジェクトにジェネリック型を使用することの制限と、その結果生じるパフォーマンスの問題について説明します。ジェネリック ポイント タイプでは、X 変数と Y 変数はボックスへのポインターである必要があり、その結果、ポインターの追跡が大幅に行われ、ランタイム チェックが遅くなります。さらに、型は可変であるため、メモリ内のオブジェクトへのポインターとして格納する必要があり、パフォーマンスの問題がさらに発生します。これらの問題に対処するために、スピーカーは、X と Y に指定された引数の型を持つ可変でない構造体を使用することを提案します。これにより、ボックスへのポインターとしてではなく、型をメモリに直接格納できるようになるため、パフォーマンスが向上します。

  • 01:05:00 このセクションでは、スピーカーは Julia でパラメトリック ポリモーフィズムがどのように機能し、どのように型の無限ファミリーを作成できるかを説明します。 X と Y のパラメーターを持つポイント型のようなパラメーター化された型を定義し、それらのパラメーターを実数のサブタイプに設定することで、特定のサブタイプで「インスタンス化」できる型のセット全体を作成できます。これにより、パフォーマンスや汎用性を犠牲にすることなく、データ型を柔軟に変更できます。コンパイラは、これらの型を連続したメモリに格納し、タイトなループで合計関数を最適化するのに十分スマートです。これらのパラメーター化された型は、Julia の高レベルの構文に追加され、パフォーマンスの最適化のために C コードを記述する必要がなくなります。

  • 01:10:00 このセクションでは、Julia が混合型入力を処理する方法をスピーカーが説明します。これにより、プログラミングの柔軟性が向上します。プラス記号を使用して数値を加算する限り、任意の 2 種類の数値を加算でき、結果の型は戻り値の型によって決まります。 64 ビット整数と float64 が追加された例が示されています。さらに、コンパイラは配列内のすべての型を認識しているため、sum などの関数を高速に計算できます。ベクトル化コンパイラーは、より複雑なデータ構造を最適化する能力が制限される可能性がありますが、Julia では、構造とパラメーターを使用して計算を高速化する方法があります。講演者は、高速で特殊なコンパイルと型推論を可能にする Julia の主要な設計上の選択肢を強調します。

  • 01:15:00 このセクションでは、配列やパラメータ化された型の実装など、Julia の技術的な側面について説明します。 Julia は、あまりにも多くの特権型を組み込むことを避けることを目指しており、代わりにユーザー コードを組み込みコードと同じくらい優れたものにすることができます。 Julia には具象型があります。これは final であり、エラーを引き起こす可能性のあるサブタイプを持つことはできません。たとえば、配列のサブタイプはそのタイプの実際の配列ではなく、その配列を使用する関数のコンパイラで問題を引き起こす可能性があります。コンパイラは、LLVM を使用して、解析、マクロの書き換え、型の推論など、いくつかのパスの後、マシン コードを生成します。 Julia にはメタプログラミング機能もあり、ユーザーは構文を変更してコードを書き直すことができます。コード生成は多次元配列で可能であり、並列機能は Silk のような言語ほど高度ではありませんが、この言語には Python のようなグローバル インタープリター ロックがありません。

  • 01:20:00 このセクションでは、スレッディング、ガベージ コレクション、分散メモリ並列処理を実装するために Julia が提供するさまざまな機能とライブラリについて講演者が説明します。 BigNum 型と BigFloat ライブラリも導入されており、大きくて正確な数値の操作が可能です。講演者は、Julia が識別子として幅広い Unicode をサポートしており、方程式を入力するときに役立つ LaTeX 文字のタブ補完が可能であることを指摘しました。 Python によるこの機能の借用についても言及されています。

  • 01:25:00 このセクションでは、スピーカーは、動的言語で適切でわかりやすい名前を持つ変数を持つことの重要性について説明します。彼は、変数に特定の形式で名前を付けると、コードが読みやすく理解しやすくなると述べています。次にスピーカーはプレゼンターに感謝し、Julia テクノロジーと Silk テクノロジーの融合を模索しているプロジェクトについて言及します。これは、将来の新しい開発につながる可能性があります。
23. High Performance in Dynamic Languages
23. High Performance in Dynamic Languages
  • 2019.09.23
  • www.youtube.com
MIT 6.172 Performance Engineering of Software Systems, Fall 2018Instructor: Steven JohnsonView the complete course: https://ocw.mit.edu/6-172F18YouTube Playl...
 

リチャード・ファインマン: 機械は考えることができますか?



リチャード・ファインマン: 機械は考えることができますか?

ビデオ「Richard Feynman: Can Machines Think?」の中でファインマンは、計算、問題解決、大量のデータ処理などの多くの点で機械は人間より優れているが、機械が人間のような思考や知性を達成することは決してないと主張している.機械は、光や距離の変化などの複雑さのために画像の認識に苦労し、コンピューターはパターンを認識しますが、新しいアイデアや関係を自分で発見することはできません。ファインマンはまた、気象予測やその他の複雑なタスクに機械を使用することの有効性についても論じ、ヒューリスティックのリストを使用してカリフォルニアで行われた海戦のチャンピオンシップで優勝したルミックという男性の例を挙げています。ファインマンは、インテリジェントな機械を作るために、開発者がこっそりと進化する心理的な歪みを避け、代わりに労働を回避する新しい方法を見つけることに集中することを提案しています.

  • 00:00:00  Q&A のこのセクションでは、Richard Feynman が、機械が人間のような思考と知性を実現するかどうかについての質問に答えます。彼は、機械は異なる材料で作られ、同じように物事を行うことは決してないため、機械が人間のように考えることは決してないと信じています.しかし、彼は、計算、問題解決、大量のデータ処理など、多くの点で機械が人間よりも優れていると述べています。彼は、人間は常に、パターンの認識など、機械よりもうまくできることを見つけようとしていると主張していますが、これは明確な手順に入れるのが困難でした.全体として、ファインマンは機械の能力と人間との違いについて興味深い視点を提供しています。

  • 00:05:00 このセクションでは、ファインマンは、特に人間と比較して、機械が画像を認識する際に直面する困難について説明します。彼らは、さまざまな画像に存在する可能性のある光、距離、傾き、およびその他の要因の変化を説明するのに苦労しています.人間は指紋を簡単に比較できますが、指紋を完全に一致させることは複雑であるため、機械はこのタスクに苦労することがよくあります。コンピューター システムは、人が実行できる特定のことを実行してパターンを認識できますが、現時点では、新しいアイデアや関係を自分で発見することはできません。人間は、特定の領域、特に、比較をより困難にする複雑さがある認識の領域で、依然として機械よりも優れています。

  • 00:10:00 このセクションでは、Richard Feynman が天気予報やその他の複雑な作業に機械を使用するというアイデアについて説明します。彼は、コンピューターはより多くのケースと変数をより高速に分析できるため、人間よりも正確な予測を行うことができると説明しています。人々はマシンに対してヒューリスティックなアプローチを試してきましたが、一連の手順を与える方がより効果的です。ファインマンは、ヒューリスティックスのリストを使用してカリフォルニアでの海戦チャンピオンシップで優勝したルミックという男の例を挙げています。 Lumic のマシンはその過ちから学び、時間の経過とともにより効果的になりました。最も効果的なヒューリスティックを学習して選択するマシンのプロセスは、インテリジェントに見えました。

  • 00:15:00 このセクションでは、Richard Feynman が、問題を解決し、新しいヒューリスティックを見つけるために開発されていたマシンについて説明します。マシンには多くのバグがあり、そのうちの 1 つは、マシンが解決策を見つけるたびにクレジットが割り当てられるヒューリスティックに関係していました。これにより、マシンはこのヒューリスティックを繰り返し使用し、結果に歪みが生じました。ファインマンは、知的機械を作るために、開発者はある種の心理的歪みをこっそりと進化させることを避け、労働を回避する新しい方法を見つけることに集中するべきだと示唆しています。彼は、機械が知性の必要な弱点を示していると述べて締めくくります。
Richard Feynman: Can Machines Think?
Richard Feynman: Can Machines Think?
  • 2019.11.25
  • www.youtube.com
This is a Q&A excerpt on the topic of AI from a lecture by Richard Feynman from September 26th, 1985.This is a clip on the Lex Clips channel that I mostly us...
 

Eye on AI : Ilya Sutskever



Eye on AI : Ilya Sutskever

このビデオでは、Ilya Sutskever が AI に関連するさまざまなトピックについて説明しています。彼は、AI と機械学習に対する初期の関心を共有し、Jeff Hinton との共同作業が畳み込みニューラル ネットワーク AlexNet の開発にどのようにつながったかについて説明しています。 Sutskever は、言語モデルの課題と限界についても語り、言語モデルは単に統計的な規則性を学習するだけではなく、アイデアや概念を表現することは重要な成果であると主張しています。彼はまた、AI トレーニングにおける大量のデータとより高速なプロセッサの必要性についても議論し、個人がデータを入力してシステムがどのように動作するかを指定する高帯域幅形式の民主主義の可能性を示唆しています。

  • 00:00:00 このセクションでは、Ilya Sutskever が AI と意識に対する彼の初期の関心と、それがどのようにして機械学習を追求するようになったかについて語ります。機械学習は、当時の人工知能の最も重要な側面であると彼は考えていました。 2003 年当時、AI の最大の成果はチェスのエンジンである Deep Blue だったので、コンピューター学習のアイデアはまだ完全に利用できなかったと彼は指摘します。次に、Sutskever は、トロント大学の教授である Jeff Hinton をどのように見つけ、彼と共同作業を開始したかを共有し、最終的に 2012 年に畳み込みニューラル ネットワークである AlexNet に関する共同作業につながりました。

  • 00:05:00 ビデオのこのセクションでは、Ilya Sutskever が、AI に貢献する初期の動機と、十分に大きなデータセットで大規模で深いニューラル ネットワークをトレーニングすると、ビジョンなどの複雑なタスクの解決に必ず成功するという認識について語っています。 .彼は、このアイデアが Imagenet コンペティションの成功にどのようにつながったか、および畳み込みニューラル ネットワークの重要性について説明しています。次に、GPT プロジェクトが、完全に解決される前は機械学習の聖杯と見なされていた、次の単語を予測することが教師なし学習につながる可能性があるというアイデアの調査から始まったことについて話します。彼らは、Transformer の論文が発表されるまで、この目的のために再帰型ニューラル ネットワークを使用していました。これにより、目標を達成することができました。

  • 00:10:00 このセクションでは、Ilya Sutskever が、大規模な言語モデルの限界、特に訓練を受けた言語に含まれる知識と、現実に対する根本的な理解の欠如について説明します。彼はまた、スケーリングとディープ ラーニングが、スケールを生産的に使用し、その見返りとして何かを得る最初の方法をどのように提供したか、そして何をスケーリングするかがいかに重要であるかについても語っています。 Sutskever は、言語モデルの制限について話すのは難しいが、今日見られるこれらの制限が 2 年後も変わらないという自信を持っていることを心に留めておくことが重要であると示唆しています。

  • 00:15:00 このセクションでは、Ilya Sutskever は、機械学習モデルは統計的な規則性のみを学習し、世界の性質を理解していないという考えに反対しています。彼は、統計的規則性を学習することは重要な成果であり、過小評価すべきではないと主張しています。これらのモデルは、データを予測して圧縮することにより、人間が生成したテキストのレンズを含む、データを通して見た世界をより深く理解します。言語モデルは、優れた出力を生成するにはいくつかの制限がありますが、アイデア、概念、およびプロセスの表現を学習するのに優れています。 Sutskever は、人間のフィードバック ステップからの強化学習を改善することで、マシンの幻覚に対する傾向を制限し、その知識を活用してより大きな結果を達成できるようになるのは時間の問題だと考えています。

  • 00:20:00 このセクションでは、Ilya Sutskever が、ニューラル ネットワーク トレーニングのフィードバック ループについて説明します。GBT のパブリック チャット インターフェイスがフィードバックを提供し、ユーザーの操作に基づいて罰または報酬を生成できます。彼は、このアプローチがニューラル ネットワークの幻覚の問題に対処するのに役立つ可能性があると述べています。 Sutskever は、共同埋め込み予測アーキテクチャに関する Jana Kun の研究と、大規模な言語モデルの基礎となる非言語世界モデルのアイデアについてもコメントしています。彼は、マルチモーダルな理解が望ましい一方で、世界を視覚的に、またはビデオから理解する必要はないと述べています。色のようないくつかの概念はテキストからしか学べないからです。 Sutskever は、色のネットワーク埋め込みが人間の知覚に似ているという例を提供しています。

  • 00:25:00 このセクションでは、スピーカーは、大きな課題の 1 つは、画像の予測など、不確実性を持つ高次元ベクトルを予測することであるという論文でなされた主張について説明します。ただし、スピーカーは、現在の自己回帰トランスフォーマーが既にその特性を備えており、完全に正常に動作することを指摘し、igpt での OpenAI の作業の例を挙げて、トランスフォーマーをピクセルに適用し、複雑で微妙な方法で画像を生成しました。話者は、事前に訓練されたモデルには、言語とそれを生成する世界のプロセスに関する知識が既にあり、人々の思考、感情、相互作用の圧縮された表現を含むと主張しています。したがって、根底にある現実についてモデルを教えるという問題は、モデルに知識を与えることではなく、プロセスを自動化することであり、スピーカーはアルゴリズムで達成できると示唆しています。

  • 00:30:00 このセクションでは、Ilya Sutskever がモデルを教えて出力の精度を高めるプロセスについて説明し、言語モデルが優れているほど、生成モデルも優れており、忠実度が高いほど、より多くの言語モデルをキャプチャできることを説明しています。プロセス。彼は、モデルは現在、AI 支援を使用してモデルをより効率的に教える「教師の軍隊」の知識を持っていると述べています。強化学習プロセスでは、高レベルの信頼性を達成するために、人間の教師がモデルの動作を確認します。 Sutskever は、モデルが幻覚を起こさないようにしながら、モデルの信頼性と制御性を高め、学習を高速化することに重点を置いています。彼は、大規模な言語モデルと人間の脳の類似点に注目し、大規模なモデルを処理するには、より多くのパラメーターとデータが必要であると示唆しています。

  • 00:35:00 このセクションでは、Ilya Sutskever が AI トレーニングにおける大量のデータの必要性について説明し、現在はトレーニングの初期段階で大量のデータが必要であると述べていますが、創造的なアイデアにより、より少ないデータからより多くを学ぶことができる可能性があると述べています. Sutskever はまた、モデルをスケーリングするためのより高速なプロセッサの必要性と、結果がそれらを上回る場合のコストの潜在的な価値についても言及しています。民主主義と AI のトピックについて、Sutskever 氏は、政府がこの技術を助言のためにどのように使用するかについて不確実性を表明しましたが、将来的には市民がニューラル ネットワークに情報を提供する民主的なプロセスが望ましい可能性があることを示唆しています。

  • 00:40:00 このセクションでは、Ilya Sutskever が民主主義における AI の役割について議論し、AI が、個人がデータを入力してシステムがどのように動作するかを指定する機会を持つ高帯域幅の民主主義を切り開く可能性があることを示唆しています。しかし、Sutskever は、特定の状況ですべての変数を理解して分析する AI の能力について疑問を投げかけています。中規模の企業でさえ、1 人の人間の理解を超えている可能性があることを考えると、AI は適切な方法で構築されれば、ほぼすべての状況で非常に役立つ可能性があると彼は示唆しています。
Ilya Sutskever: The Mastermind Behind GPT-4 and the Future of AI
Ilya Sutskever: The Mastermind Behind GPT-4 and the Future of AI
  • 2023.03.15
  • www.youtube.com
In this podcast episode, Ilya Sutskever, the co-founder and chief scientist at OpenAI, discusses his vision for the future of artificial intelligence (AI), i...
 

機械学習のための数学 - 多変量解析 - フル オンライン スペシャリズム



機械学習のための数学 - 多変量解析 - フル オンライン スペシャリズム

  1. この YouTube ビデオは、機械学習をサポートするための微積分の本質的な概念を直感的かつグラフィカルに理解できるようにすることを目的とした Multivariate Calculus オンライン スペシャライゼーションの一部です。動画では、微分、連鎖則、積則、特殊な場合の関数、偏微分など、さまざまな概念を取り上げ、興味深い応用を存分に楽しむために数学の基礎を理解することの重要性を強調しています。このビデオでは多変量解析も紹介しています。これにより、微積分を適用して高次元空間をナビゲートし、偏微分と全導関数の概念を使用して多変量データを分析できます。

  2. このビデオ シリーズでは、機械学習のための多変量解析の概念について説明します。ヤコビ行列とヘッセ行列は、最適化手法と連鎖律と共に導入されます。トレーニングとバックプロパゲーションに焦点を当てて、ニューラル ネットワークがカバーされています。関数を近似する方法としてテイラー級数が説明され、多変量計算を使用して高次近似を作成するプロセスが説明されます。このビデオは、複雑な現実世界の問題に取り組む上でのこれらの概念の重要性を強調しています。

  3. ビデオの 3 番目の部分では、多変量微積分のさまざまな側面について説明します。まず、関数を多項式級数として近似するためのツールとしてテイラー級数を使用し、近くの点で元の関数の近似を作成します。次に、勾配のみを使用して解に向かって進むニュートン・ラフソン法と、線形代数と微積分を組み合わせたベクトルである勾配の概念に移行します。さらに、このビデオでは、制約のある最適化問題を解くのに役立つラグランジュ乗数の方法について説明しています。最後に、このビデオでは、最小二乗法を使用して関数をデータに適合させる方法を示しています。これにより、変数間の物理的な関係と仮説を明らかにすることができます。全体として、ビデオは、機械学習における多変量解析の実用的なアプリケーションの包括的な概要を提供します。

  4. ビデオのこのセクションでは、データを関数に適合させる方法について説明します。線形回帰から始まり、非線形モデルに進みます。非線形最小二乗フィッティングの最急降下式が導入されました。これは、関数とパラメーターが非線形であるモデルの残差の二乗和を最小化するために使用されます。このビデオでは、フィッティング パラメーターの適切な開始推定値を生成し、フィッティングとデータを視覚的に比較することの重要性についても説明しています。このコースでは、導関数の定義から、ニューラル ネットワークや線形回帰への応用まで、機械学習のための多変量計算の入門的な理解を提供します。

パート1

  • 00:00:00 このセクションでは、インストラクターが機械学習学習者向けの多変量解析コースを紹介します。このコースは、グラフィックスとアニメーションを使用して微積分とその応用を理解し、より直感的で圧倒されないようにすることを目的としています。このコースは、基礎から始まり、モジュール 5 と 6 の興味深いアプリケーションに至るまで、重要な微積分の概念を紹介する 6 つのモジュールで構成されています。インストラクターは、理解を深めるために詳細をざっと読み、概念をグラフィカルに表現することに重点を置くことを提案していますが、興味のある人のために、より厳密な説明へのリンクも提供しています。最後に、このセクションでは、機械学習などの数学の興味深いアプリケーションを十分に楽しむために、その癖や表記法など、数学の退屈な基礎を理解することの重要性を強調しています。

  • 00:05:00 このセクションでは、関数の選択が科学の創造的な本質である方法と、微積分を使用して車の速度と時間のグラフから速度以上のものを抽出する方法について説明します。加速度は局所勾配として定義され、時間に対してプロットして分析用の新しいグラフを作成することもできます。インストラクターは、一定の速度のグラフでは一定のゼロ勾配があり、より複雑なグラフではさまざまな点の正と負の勾配があることを示します。結局のところ、微積分は、関数とその変数の変化との関係を記述するための一連のツールにすぎず、それらを調査して操作することができます。

  • 00:10:00 このセクションでは、加速度関数の導関数を取得する概念について、車のジャークとして知られる各点での加速度関数の勾配を取得することによって説明します。このビデオでは、積分と呼ばれるものに密接に関連する反導関数または逆手順のアイデアも探究しています。次に、数学表記法を使用して勾配の概念を定義することにより、導関数の正式な定義に進みます。線形関数の勾配は、上昇と実行の両方がそれぞれ垂直軸と水平軸に沿った距離である上昇オーバーラン式を使用して説明されます。最後に、極限表記法を使用して勾配を表現する方法の概念についても説明します。

  • 00:15:00 このセクションの動画では、微分の概念と、微分を関数の勾配の検出に使用する方法について説明しています。このプロセスでは、式 (f(x+Delta X) - f(x)) / Delta X のゼロにデルタ X が近づくと、その点での接線の勾配が得られます。このビデオでは、この方法を使用して単純な 1 次関数と 2 次関数の勾配を求める例を示し、和の規則の交換可能性を示しています。結果の勾配は、それぞれ定数と x の関数です。

  • 00:20:00 このセクションでは、インストラクターが微分のべき乗則について説明します。 X の関数 f が AX の B 乗に等しく、それを微分すると、その結果は、X の f ダッシュが ABX の B 乗から 1 を引いたものに等しくなり、これはべき法則として知られています。インストラクターはまた、長くて複雑な表現では微分が面倒になる可能性があると述べています。プロセスを高速化するために、和やベキの規則などの規則を使用できます。次にビデオは、微分すると興味深い結果が得られる 3 つの特殊なケース関数について説明します。最初の関数は、X が 1 に等しい X の f です。これは、x が 0 に等しいところで不連続性を示します。インストラクターは、この関数に微分式を適用して、その勾配を調べます。

  • 00:25:00 このセクションでは、ビデオで微積分の特殊なケース関数について説明します。まず、関数の値が自身の勾配の値と常に等しいという性質を持つ関数について説明します。 X に対する指数関数 e は、すべての必要な基準を満たす唯一の関数です。次に、三角関数の正弦関数と余弦関数、およびそれらの導関数についてビデオで説明します。これらの関数の自己反復パターンは、指数関数の 1 つを思い起こさせるかもしれません。最終的に、ビデオは、微分が単純な概念であることを強調しています。代数のすべてを処理できなくても、各点で上昇または実行勾配を探すことができます。

  • 00:30:00 このセクションでは、2 つの関数の積を区別するための便利なショートカットである積則をビデオで説明します。この規則により、数学者は、比較的単純な関数を扱うときに導関数を計算するという面倒なプロセスを回避できます。このルールは、一方の辺が x の関数 f で、もう一方の辺が x の関数 g である長方形を使用して記述されます。これら 2 つの関数の積は、x の a と呼ばれる長方形の面積を与えます。四角形を 4 つの領域に分割することにより、少量の Delta X で側面が変更され、最も速く縮小する最小の四角形は無視できます。 x に関する a の導関数の最終的な式は、x の f に X の G の導関数を掛けたもの、X の G に x の f の導関数を掛けたものです。

  • 00:35:00 ビデオのこのセクションでは、チェーン ルールの概念が導入され、幸福とピザとピザとお金の関数を関連付けることで、お金に対する幸福の変化率を見つけるために使用されます。チェーン ルールは、派生関係のチェーンを作成する方法であり、直接代入ができない複雑な関数に特に役立ちます。次に、ビデオは関数にチェーンルールを適用し、お金に関する幸福の変化率の目的の関数を取得します。このビデオは、チェーン ルールの利点について説明し、次のビデオですべての時間を節約するルールがどのように使用されるかをプレビューすることで締めくくります。

  • 00:40:00 このセクションでは、微積分の積規則を、積として書き直された分数に適用する方法の例を示します。最初のステップは、分母を上に移動して負の 1 乗することにより、関数を積として書き直すことです。次に、関数は X の G と X の H の 2 つの部分に分割されます。各部分の導関数は、異なる表記法を使用して計算され、合計、累乗、連鎖の規則が適用されます。両方の部分の微分式が得られたら、積則を適用して最終的な答えを得ることができます。このセクションは、一見難しそうな機能も適切なツールを使えば簡単に使いこなすことができる一方で、単純に見える機能は挑戦的であると同時に楽しく作業できることを思い出して終わります。

  • 00:45:00 ビデオのこのセクションでは、講師が前のモジュールで学んだ微分概念の拡張である多変量計算を紹介します。分析する変数が複数あるため、微積分を適用して高次元空間をナビゲートできるようになりました。インストラクターは、「多変量」と「多変量」という用語の微妙な違いを説明しますが、区別は重要ではありません。次に、微積分アプリケーションのコンテキストにおける変数とパラメーターの機微を明確にするために議論が続きます。今後のモジュールでは、インストラクターはいくつかの興味深いデータ分析問題に微積分を適用します。

  • 00:50:00 このセクションでは、スピーカーは偏微分を使用して、各変数に関する関数の導関数を見つける方法を説明します。それらは、缶の面積をさまざまな部分に分割し、これらの部分に金属の厚さと密度を掛けることによって、缶の質量を求める例を提供します。各変数 (半径、高さ、厚さ、密度) に関する缶の質量の偏微分を求める方法を示し、カーリー部分記号を使用して複数の変数の関数を微分する方法を説明します。講演者は、偏微分は一変量計算ほど複雑ではなく、機械学習の本質的な概念であると結論付けています。

  • 00:55:00 このセクションでは、偏微分の概念を紹介し、チュートリアルでは 3 つの変数の関数の例を使用して、偏導関数を見つける方法を説明します。次に、チュートリアルでは総導関数の概念を紹介し、関数のすべてのパラメーターの小さな変化によって生じる変化を測定するために使用されることを説明します。このチュートリアルでは、導関数の合計を計算する方法と、連鎖律を使用して変数が多い問題を解決する方法について説明します。最後に、ヤコビアンは、線形代数からいくつかのアイデアを取り入れ、これらの偏導関数を最適化と機械学習のコンテキストで特に役立つものに構築する方法として導入されています。

パート2

  • 01:00:00 このセクションでは、ヤコビアンの概念を多変量計算のコンテキストで説明します。ヤコビアンは、特定の XYZ 座標を指定すると、関数の最も急な勾配の方向を指すベクトルを返すベクトルの代数式です。このビデオでは、複雑で魅力的な関数の 2 次元の例を、この概念を示す等高線図で詳しく説明しています。ヤコビ ベクトルは、低くて暗い領域から離れて高くて明るい領域に向かって上り坂を指していることが示されています。この 2 次元の明確な例は、コースの後半で検討する高次元の問題について視聴者に自信を与えることを目的としています。

  • 01:05:00 機械学習のための多変量解析に関するこのセクションでは、ヤコビ ベクトルとヤコビ行列の概念について説明します。ヤコビ ベクトルは、原点が最大、最小、またはサドルを表す関数のベクトル場を見つけるために使用されます。ヤコビ行列は、ベクトルを入力および出力として受け取る関数に対して構築されます。線形関数の場合、ヤコビ行列は定数勾配であり、ベクトル空間間の座標を変換するために使用できます。機械学習の多くの関数は非常に非線形ですが、その滑らかさにより、空間の各小さな領域をほぼ線形と見なすことができ、各点のヤコビアンを合計してサイズの変化を計算できます。

  • 01:10:00 このセクションでは、数学における最適化の概念を紹介します。これは、システムの最大値または最小値に対応する関数の入力値を見つけることを指します。最適化のプロセスは、ルート計画、生産のスケジューリング、在庫の選択など、さまざまな現実のシナリオで使用されます。単純な関数の最大値と最小値を見つけるには、ヤコビアンを構築してその値を決定できますが、より複雑な関数の場合、最適値を見つけるのはより困難になる可能性があります。ヤコビアンを使用してシステムの最深点を見つけるプロセスを説明するために、底が平らでない砂場の例えが使用されます。

  • 01:15:00 このセクションでは、ヤコビ ベクトルの拡張と考えることができる多変量システムのヘッセ行列の概念を紹介します。ヘッセ行列は、n 変数の関数の N 行 n 列の正方行列です。ここで、n は関数 f の変数の数です。ヘッシアンを見つけるには、最初にヤコビアンを見つけてから、その項を再度微分します。ヘッセ行列は主対角線に対して対称であり、関数がある点で最大か最小かを判断するために使用できます。 Hessian の行列式は、関数が鞍点であるかどうかを判断するために使用されます。

  • 01:20:00 このセクションのビデオでは、2 次元のランドスケープの限界と、高次元、高価な計算、シャープな機能、およびノイズの多い機能に伴う課題について説明します。有限差分法は、明示的な式を持たない可能性がある問題の解を生成するための近似手法として導入されています。さまざまな方向に小さなステップをとることで、このアプローチを使用してヤコビアンを近似できますが、ステップのサイズを選択する際に適切なバランスを見つけることが重要です。

  • 01:25:00 このセクションのビデオは、ノイズの多いデータと、計算コストの高い関数を処理するときに発生する課題についての説明から始まります。講演者は、ノイズの多いデータを処理する最も簡単な方法は、いくつかの異なるステップ サイズを使用して勾配を計算し、ある種の平均を取ることであることを強調しています。その後、ビデオはモジュール 3 を紹介します。ここでは、多変量関数に取り組むために単変量チェーン ルールがアップグレードされます。話者は表記を簡略化し、2 つの多変数微分式の内積によって、多変数連鎖規則をきれいに表現できることを説明します。ビデオは、残りの時間を節約する規則が多変量の問題に対して既に機能していることを強調することで締めくくり、多変数連鎖規則の一般化された形式に関する議論を締めくくります。

  • 01:30:00 このセクションのビデオでは、3 つの関数を使用した単変量の例を使用して、チェーン ルールが 2 つ以上のリンクに対してどのように機能するかを説明します。次にビデオでは多変量のケースを紹介します。ここでは、チェーン ルールは引き続き機能しますが、ヤコビ行列などの詳細にさらに注意を払います。 T に関する F の微分は、F のヤコビアンと X のヤコビアンおよび U の微分ベクトルの積であり、スカラー出力になります。この概念は、人工ニューラル ネットワークとその実世界の問題への応用にとって重要です。

  • 01:35:00 このセクションでは、動画でニューラル ネットワークの数学的機能を紹介します。ニューラル ネットワークは、変数を取り込んで別の変数を返す単純な関数であり、両方の変数がベクトルである場合があります。ニューラル ネットワークの各ノードはアクティビティと呼ばれ、重み、バイアス、活性化関数 (ギリシャ文字のシグマで表される) で構成され、ニューラル ネットワークに脳ニューロンとの関連付けを与えます。このビデオでは、ニューロンを追加してネットワークをより複雑にする方法を示し、式を一般化して n 個の入力、重み、バイアス、および出力をとり、コンパクトなベクトル形式で表すことができるようにします。パズルの最後のピースは、入力と出力の間にニューロンの隠れ層を追加することです。これは、前の層と同じように動作します。

  • 01:40:00 このセクションでは、ラベル付きデータとバックプロパゲーションを使用したニューラル ネットワークのトレーニングの概念を紹介します。焦点は、単純な構造を選択し、重みとバイアスを徐々に更新することによって達成される、ネットワークがトレーニング入力をラベルに最もよく一致させることを可能にする重みとバイアスを見つけることにあります。コスト関数を定義し、変数 W に対する C の勾配をとって、重みとバイアスを更新する方向を決定します。さらに、コストの偏導関数のチェーン ルール式が強調表示されます。これは、一連のトレーニング例のネットワークのコストを最小限に抑えるために WB 空間をナビゲートするために使用できます。

  • 01:45:00 ビデオのこのセクションでは、テイラー級数が関数の近似を構築するためのアプローチとして紹介されています。このビデオは、テイラー級数を使用してニワトリの調理時間を概算する方法の例を示しています。このプロセスでは、オーブンと鶏肉の特性について仮定し、一連の単純な関数を使用して鶏肉の質量と調理時間の関係をモデル化します。テイラー級数法では、グラフ内の点の 1 つと同じ勾配と高さを持つ関数を導出できますが、関心のある点から離れるにつれて、近似は悪くなります。このビデオでは、テイラー級数をべき級数と呼ぶことができることも説明し、べき級数の簡単な一般化された表現を提供します。

  • 01:50:00 このセクションでは、切り捨て級数の概念と、近似によって関数を構築するプロセスについて説明します。一般化されたベキ級数は、X のベキが増加する級数として導入されます。テイラー級数法では、関数に関するすべてを 1 点で知ることにより、他の場所で関数を再構成できます。このメソッドは、正常に動作する連続関数にのみ使用できます。関数を構築するための近似の漸進的な改善は、例を使用してグラフィカルに示されます。最初の概算は、1 つまたは 2 つの情報のみに基づいていますが、より多くの情報を使用して概算をさらに改善します。

  • 01:55:00 このセクションのビデオでは、多変量計算を使用して関数の高次近似を作成するプロセスについて説明しています。まず、F(0)、F'(0)、F''(0) などの情報を使用して 1 次および 2 次の近似を見つけ、2 次方程式を作成します。次に、ビデオは 3 次および 4 次の近似の説明に移り、低次の項を同じに保ちながら区分的に高次の項を追加できることを示します。このビデオでは、3 次近似の 3 次項の前の係数が、3 次項を 2 回微分した結果であることも示しています。全体として、このビデオは、複雑な関数を近似する際の多変量計算の有用性を示しています。

パート3

  • 02:00:00 このセクションでは、ベキ級数の概念がさらに適用されます。ここでは、関数「e を x に」を項ごとに微分し、変わらない満足のいくものを見つけました。テイラー級数は、点 x が 0 に等しいことに特別なことは何もないことを認めており、任意の点で関数についてすべてを知っていれば、どこでも関数を再構築できると述べています。 x が P に等しい点から開始することにより、ドイツ式を調整して任意の展開点を許可することができます。ゼロ次項は、どこでも P の点 F を使用する水平線になり、点 P で曲線の接線を作成するには、利用可能なすべての情報を書き留め、関数の勾配を使用する必要があります。

  • 02:05:00 このセクションでは、関数を多項式級数として近似するための便利なツールとしてテイラー級数を紹介します。彼は、点 P で 2 次導関数を適用し、X を X から P を差し引いたものに置き換えることによって、マクローリン級数を一般的なテイラー級数の形式に変換する方法を示します。結果として得られる 1 次元のテイラー級数式を使用して、関数を多項式級数として便利に再表現できます。講演者はまた、余弦関数のマクローリン級数展開を構築する方法を示し、この例を使用して、余弦と正弦の循環パターン、級数に X の奇数べき乗がないこと、および総和表記を使用して完全に説明することを説明します。シリーズ。このセクションは、級数近似を処理する際に注意し、それらが許容されるドメインを知ることを思い出して終了します。

  • 02:10:00 このセクションでは、テイラー級数が x=0 での不連続性のために 1/X のような動作の悪い関数を処理するのにどのように苦労するかについて説明します。これは未定義の値につながります。ただし、x=1 のように別の場所に移動し、適切な総和表記を使用してテイラー級数を適用すると、一連の改善された関数近似を構築できます。次に、ビデオでは、近似で予想される誤差と、1 次近似を使用して点 P 付近の関数を評価する方法について説明します。話者は、誤差を正確に計算できると述べ、与えられた近似がどれだけ正確になるかを推定する方法を提供します。 .

  • 02:15:00 近くのポイントで元の関数を近似します。このセクションでは、一次近似で導入された誤差項について学習します。これは、小さい数の場合、デルタ x の二乗のオーダーです。また、2 番目の点が X から有限の距離にある場合に、導関数の定義とその誤差を構築する際に、ライズ オーバー ラン近似がどのように役立つかについても説明します。 2 次元の場合、2 次元関数を与えて元の関数を近くの点で近似します。全体として、これらの概念は、問題解決に数値的手法を適用する際に重要な役割を果たします。

  • 02:20:00 このセクションでは、講師が多変量関数のテイラー級数展開を作成する方法について説明します。ゼロ次近似は展開点における関数と同じ高さの単純な平面ですが、1 次近似は 2 方向の勾配情報を組み込みます。 2 次近似には 3 つの項があり、すべてが 2 次導関数です。この合計を作成するには、デルタ X ベクトルにヘッセ行列を掛けてから、再びデルタ X ベクトルの転置を掛ける必要があります。インストラクターは、これはすぐに 2D から多次元超曲面に一般化し、微積分と線形代数のスキル、およびヤコビアンとヘッセの概念を利用すると説明しています。

  • 02:25:00 このセクションでは、ナレーターが、すべてのデータ ポイントを持ち歩く代わりに、平均と幅の 2 つのパラメーターを使用して、高さの分布に方程式を当てはめる方法を説明します。このプロセスでは、モデルがデータにどの程度適合しているかを表す式を見つけ、フィッティング パラメーターの変化に応じて適合度がどのように変化するかを調べます。次に、ナレーターは、方程式の解を推測し、それを評価し、新しい推測を生成し、解に到達するまでプロセスを繰り返すことを含む、ニュートン-ラフソン法を紹介します。この方法は、大きな多次元関数がデータに当てはめられており、それを分析的に解いたり、プロットしたりするのにコストがかかりすぎる場合に役立ちます。

  • 02:30:00 ビデオのこのセクションでは、勾配のみを使用して方程式を解いて解に向かって進む方法として、ニュートン ラフソン法が紹介されています。ただし、この方法では、ループに陥ったり、おかしな値に分岐したりするなどの問題が発生することがあります。それにもかかわらず、このメソッドは解決策を反復するための強力な手段です。ビデオの次のセクションでは、勾配ベクトルを見つけて等高線図の丘を下ることによって、この方法を複数の変数を持つ関数に適用する方法に焦点を当てています。これにより、最終的に最適化が可能になり、関数のパラメーターに最適なものを見つけることができます。

  • 02:35:00 このセクションでは、線形代数と微積分を組み合わせたベクトルである grad の概念について説明します。 Grad は、ベクトルの X&Y 位置に DF by DX と DF by DY を書き留めたベクトルとして定義されます。方向勾配は、勾配 F と平行な単位ベクトルと勾配 F の内積として導入され、方向勾配の最大値は勾配 F のサイズです。勾配が指す方向は、方向として説明されます。等高線に垂直な最急降下の。最後に、データ値とモデル適合の差を最小限に抑えるための勾配の使用について説明します。

  • 02:40:00 与えられた X の 2 乗に Y の 2 乗を加えたものが A の 2 乗に等しいということです。これは、見ている点がすべて半径 A の円上にあることを意味します。このパスの最大値または最小値を見つけるには、ラグランジュ乗数法。これには、関数の輪郭に垂直な勾配ベクトルが、マイナス記号まで、円のパスに垂直な勾配ベクトルと同じ方向にある場所を見つけることが含まれます。これにより、輪郭がパスにちょうど接触するポイントが得られます。ここで、最小値と最大値が見つかります。このアプローチにより、特定のパスに沿った関数の最大値または最小値を見つけるなど、制約を受ける最適化問題を解決できます。

  • 02:45:00 このセクションでは、ラグランジュ乗数の概念が、制約のある最適化問題を解決するためのツールとして紹介されています。円方程式の制約と多変数関数を含む実際の例を使用して、ラグランジュ乗数の使用法を説明します。制約内の関数の最大値と最小値を見つけるために、方程式が設定され、解かれます。結果を 3 次元でプロットすると、最大点と最小点が示されます。この方法は、制約が関係する機械学習の最適化問題で役立ちます。

  • 02:50:00 このセクションのビデオでは、関数を最適化し、多変量解析を使用して問題を解決する方法について説明します。 Newton-Raphson 法が導入され、勾配を使用して、現在の推測から問題の解までどのくらいステップするかを推定します。勾配ベクトルは、等高線に垂直に定義され、それぞれに沿った関数の差に等しい要素を持ちます。軸。ビデオでは、ラグランジュ乗数法を使用して、勾配関数を制約の正接と等しくすることにより、制約を受ける問題を解決する方法を示します。多変量計算を適用すると、最小二乗法を使用して関数をデータに適合させることができ、データをクリーンアップ、分析、およびグラフ化して、変数間の物理的な関係と仮説を明らかにすることができます。

  • 02:55:00 ビデオのこのセクションでは、残差 R とカイ 2 乗と呼ばれる適合の質の尺度を使用して、m と c の最適値を見つける方法を講師が説明します。彼は、R をデータ項目と線上の予測位置の差、カイ 2 乗を残差の 2 乗の合計と定義しています。 M と C のさまざまな可能な値に対してカイ 2 乗がどのように見えるかをプロットすることにより、彼は 215 付近で切片 0 付近で最小値を見つけます。最小値は、カイ 2 乗の勾配がゼロのときに見つかります。 .講師は、問題を明示的に解決する方法を説明し、線形降下法によってそれを行う方法を示します。また、フィッティング パラメータの不確実性を把握する方法についても説明しています。

パート 4

  • 03:00:00 このセクションでは、回帰によって特定のデータに線を当てはめるという概念について説明し、データからの当てはめの偏差を測定する適合度推定量カイ 2 乗を紹介します。適合を視覚的に比較することの重要性は、切片が勾配に依存するという事実とともに強調されています。問題は、y バーでの y の質量中心の位置として作り直され、近似で定数項を考慮するときに勾配の不確実性を排除します。次に、ビデオでは、線形回帰よりも任意に複雑なフィッティング関数について説明します。パラメータは、非線形最小二乗法を使用してデータに適合されます。カイ二乗は、 YI とパラメーター a K を使用した XI のモデルとの差を、すべてシグマの 2 乗で割ったものです。

  • 03:05:00 このセクションでは、スピーカーは非線形最小二乗フィッティングの最急降下式について説明します。これは、関数とフィッティング パラメーターが非線形であるモデルの残差の二乗和を最小化するために使用されます。話者は、この式を使用して、カイ 2 乗の勾配がゼロに等しいか、カイ 2 乗値の変化が止まるときに、最小のカイ 2 乗値に達するまで、各反復中にフィッティング パラメーターのベクトルを更新することを説明します。この種の問題を解決するにはさまざまな方法がありますが、最急降下法が最も簡単で、一般化された非線形最小二乗近似問題の最小値を見つけるのに十分です。

  • 03:10:00 多変量解析に関するこのセクションでは、収束を高速化するためのヘッセ行列の使用、安定性のためのレーベンバーグ・マルカート法、外れ値を処理するためのロバスト フィッティングなど、非線形最小二乗問題を解くためのさまざまな方法をビデオで説明しています。ビデオでは、MATLAB と Python を使用して非線形最小二乗曲線近似を実行する方法を、ガウス分布を人口高データに近似する例を使用して示します。アルゴリズムが意味のある最小値に確実に収束できるように、初期パラメーターの賢明な推測から始めることの重要性を強調しています。

  • 03:15:00 このセクションでは、スピーカーは、データを関数に適合させる際に、適切な開始推測を生成し、適合をデータと比較することの重要性を強調します。彼らは、多変量計算を使用して関数を最適化し、データを関数に適合させることについての議論を締めくくり、Python、MATLAB、または R のわずか数行のコードで関数を適合させることは計算的に簡単であることに注目しています。アルゴリズムが内部でどのように機能するか、および何か問題が発生した場合にアルゴリズムを修正する方法。このコースでは、導関数の定義からニューラル ネットワークや線形回帰に適用する方法まで、機械学習のための多変量解析の入門的な理解を提供し、解析が役立つ場所についての直感を可能にしました。
Mathematics for Machine Learning - Multivariate Calculus - Full Online Specialism
Mathematics for Machine Learning - Multivariate Calculus - Full Online Specialism
  • 2019.11.15
  • www.youtube.com
Welcome to the “Mathematics for Machine Learning: Multivariate Calculus” course, offered by Imperial College London. This video is an online specialisation ...
 

ETL スピーカー シリーズ: Ilya Sutskever、OpenAI



ETL スピーカー シリーズ: Ilya Sutskever、OpenAI

「ETL Speaker Series: Ilya Sutskever, OpenAI」というタイトルの YouTube ビデオで、OpenAI の共同創設者でチーフ サイエンティストの Ilya Sutskever が、大規模な言語モデル、人工ニューロンの背後にある前提、AI における意識、AI の財務構造などのトピックについて説明しています。非営利の AI 組織。 Sutskever 氏は、OpenAI の成功のために技術的進歩と優れた研究を行うことの重要性を強調し、AI と起業家精神に関心のある学生に独自のアイデアを探求するよう奨励しています。彼はまた、深層学習スタックのさまざまな層の改善と専門家のトレーニングが将来的に大きな影響を与えると予測しています。最後に、主催者は、Sutskever の洞察に満ちた議論に感謝し、今後のイベントに彼を招待するとともに、視聴者を起業家精神とイノベーションに関するより多くのリソースを提供するスタンフォードの e コーナー Web サイトに誘導します。

  • 00:00:00 このセクションでは、Ravi Balani が、OpenAI の共同創設者兼チーフ サイエンティストである Ilya Sutskever を紹介します。彼は、大規模な言語モデルを生成する事前訓練済みの Transformer 3 (GPT-3) のリリースの背後にある基礎的精神として有名です。および付随する製品である Chat GBT です。バラニは、イスラエルで数学とコンピューター サイエンスを学び、後にトロント大学で博士号を取得したロシア系イスラエル人移民としてのスツケバーの背景について説明します。 Sutskever は、現在の AI ランドスケープにつながったディープラーニング革命を開始したことで知られるようになった AlexNet の原動力として認められています。次に、Sutskever は、大規模言語モデルの背後にある前提と、それが人間の脳の生物学的ニューロンからどのようにインスピレーションを得ているかを説明します。

  • 00:05:00 このセクションでは、OpenAI の Ilya Sutskever が、ニューラル ネットワークが経験から学習するために使用する数式であるバック プロパゲーション アルゴリズムの開発について説明します。彼は、大規模な言語モデルは、テキスト内の前の単語から次の単語を高い精度で推測するように訓練されたニューラル ネットワークであり、予測誤差の最適化を通じて理解が運用化されると説明しています。 Sutskever は、人工ニューロンは生物学的ニューロンとそれほど変わらないことを示唆しており、これを想像することができれば、現在の大規模な言語モデルと同様に、人間は次の単語をかなりうまく推測できることがわかります。ただし、人間の学習に対する理解はまだ限られているため、人間と人工ニューラル ネットワークを直接比較することには注意を払っています。

  • 00:10:00 このセクションでは、OpenAI の共同創設者である Ilya Sutskever が、ニューラル ネットワークの学習方法と人間の学習方法の違いについて説明します。ニューラル ネットワークは、数学やプログラミングが得意です。ただし、このレベルの専門知識を達成するには、大量のデータが必要です。一方、人間は少ない文書しか読まなくても、何かを深く理解することができます。機械が人間の学習と適応を超える特異点について議論するとき、Sutskever はその点がいつ発生するかを知りません。進歩が必要であり、不確実性は高い。意識を定義するのは難しいですが、AI システムでテストする必要があるのは必然です。

  • 00:15:00 このセクションでは、OpenAI の最高科学責任者である Ilya Sutskever が、人工知能における意識の概念について説明します。彼は、意識は二元的な概念ではなく程度の問題であり、動物は人間に比べて意識が低下している可能性があることを示唆しています.次に、OpenAI の使命と、Microsoft と密接な関係を持つ非営利団体から営利団体に移行するという決定にまつわる倫理的問題について話します。彼は、OpenAI によって達成された進歩と、彼の意思決定において倫理がどのように役割を果たすかについて、彼の直接の責任を認めています。

  • 00:20:00 このセクションでは、Ilya Sutskever がオープン ソースとクローズド ソース AI の長所と短所について説明します。オープンソース AI は少数の手に権力が集中するのを防ぎますが、これはパワー バランスの観点からは望ましいことですが、AI 機能がますます強力になるにつれて、長期的には理想的ではないかもしれません。最終的には、安全性が、これらのモデルをオープンソース化しない明白かつ直接的な要因になるはずです。さらに、非営利か営利かの決定は、資金調達による資金のほとんどがクラウド プロバイダーに費やされるデータ センターの多額のコストを考えると、簡単ではありません。

  • 00:25:00 このセクションでは、OpenAI の共同創設者である Ilya Sutskever が、人工知能 (AI) を扱う非営利組織の財務構造について説明しています。これらの企業は大規模なニューラル ネットワークをサポートするために多額の資金を必要としますが、コストが大きくなりすぎたため、大学はこれをサポートできなくなりました。したがって、寄付によって資金提供される OpenAI のような非営利団体は、AI 企業に学術に貢献する手段を提供します。 OpenAI の財務構造は独特です。営利企業ではなく、「利益上限会社」です。 OpenAI の株式は、投資家に対して有限の義務を負う債券です。支払いが完了すると、OpenAI は再び非営利になります。ばかげているように思えるかもしれませんが、AI がますます顕著になっているため、この構造は不可欠であり、AI 企業が非営利の投資を支援する方が有益である可能性があります。 Microsoft は OpenAI の投資家の 1 つであり、OpenAI は AGI (Artificial General Intelligence) の可能性とその世界への影響を理解しているため、彼らと AGI (Artificial General Intelligence) に関するディスカッションを行っています。

  • 00:30:00 このセクションでは、Ilya Sutskever が OpenAI の受託者責任と、投資家にとっての潜在的なリスクについて説明します。彼は OpenAI を DeepMind と区別しています。これは、OpenAI が営利セクションに GP または LP を持つ非営利団体によって保持されているためです。さらに、Sutskever は、合理的で完全に検証または認定された進歩を遂げるために、より強力なニューラル ネットワークに対する政府の規制と慎重な評価の必要性についての考えを共有しています。倫理的義務に関して、彼は市民の義務の重要性を認めていますが、彼が居住する米国の繁栄を優先しています.

  • 00:35:00 このセクションでは、インタビュアーが OpenAI の Ilya Sutskever に、北極星として追跡している成功の指標について尋ねます。 Sutskever 氏によると、主要な KPI は技術の進歩と優れた調査、システムの理解、より適切なトレーニング、より適切な制御です。彼は、コア テクノロジが OpenAI の成功の中心にあると考えています。 OpenAI が人々の目的地になるのか、それともバックエンド インフラストラクチャの一部として使用されるのかを尋ねられたとき、Sutskever 氏は、物事が急速に変化するため、その質問に答えるのは難しいと述べています。 AI と起業家精神に関心のある学生へのアドバイスとして、Sutskever 氏は、自分の固有の素質に傾倒し、自分のアイデアを探求することを勧めています。

  • 00:40:00 このセクションでは、Ilya Sutskever が、直感を信頼するという彼の信念について説明します。これは、独自の視点を活用して新しい機会に磨きをかけることができる起業家精神において特に価値があります。今後 5 年から 10 年のディープ ラーニングの将来について尋ねられたとき、Sutskever は、おそらくこれまでのスケーリングへの焦点ではなく、ディープ ラーニング スタックのさまざまなレイヤーの改善を通じて、この分野で進歩が続けられると予測しています。 .彼はまた、貢献の道として深層学習の新しいフロンティアを特定することの価値を強調し、スペシャリストのトレーニングが将来大きな影響を与えると予測していますが、それはニューラル ネットワークのジェネラリスト トレーニングが確立された後に限られます。

  • 00:45:00 このセクションでは、スピーカーはスペシャリスト トレーニングのアイデアと、特にオープンソース コミュニティである程度すでに行われている方法について説明します。オープンソース コミュニティでは、人々が力不足で最大限のパフォーマンスを得る必要があるモデルで作業していますできるだけ。彼は、AI における勝利の優位性は、独自のデータ セットや有能なベース モデルなど、いくつかの要因の組み合わせになると考えています。研究者や新興企業に AI テクノロジを公開する場合、モデル アクセスなどの中間的なアプローチが、大きく複雑な動作領域を持つニューラル ネットワークの研究において非常に生産的である可能性があることを彼は示唆しています。最後に、講演者は、OpenAI での AI 統合の影響は生産性のわずかな向上であるが、チームのダイナミクスに劇的な変化をもたらしていないことを共有しています。

  • 00:50:00 このセクションでは、主催者は、人工知能と深層学習に関する洞察に満ちた議論について Ilya Sutskever に感謝します。彼らは彼を将来のイベントに招待し、業界のリーダーをフィーチャーした今後の ETL セッションについて聴衆に思い出させます。また、視聴者をスタンフォード大学の e コーナー Web サイトに誘導し、起業家精神とイノベーションに関するリソースを提供しています。
ETL Speaker Series: Ilya Sutskever, OpenAI
ETL Speaker Series: Ilya Sutskever, OpenAI
  • 2023.04.19
  • www.youtube.com
Ilya Sutskever is the co-founder and chief scientist of OpenAI, which aims to build artificial general intelligence that benefits all of humanity. He leads r...
 

Ilya Sutskever (OpenAI チーフ サイエンティスト) - AGI、アラインメント、スパイ、マイクロソフト、啓蒙の構築



Ilya Sutskever (OpenAI チーフ サイエンティスト) - AGI、アラインメント、スパイ、マイクロソフト、啓蒙の構築

OpenAI のチーフ サイエンティストである Ilya Sutskever は、このビデオでさまざまなトピックをカバーしています。これには、GPT の不正使用の可能性、AI システムにおける信頼性の重要性、AGI の構築における人間と機械のコラボレーションの役割、AGI のソフトウェアとハードウェアの制限、および学術研究の可能性。彼は、AGI を構築する際にミスアライメントの可能性を減らすためにアプローチの組み合わせが必要になると考えており、超人的な AI に必要なブレークスルーは、後から考えると必ずしもブレークスルーのようには感じられないかもしれないと考えています。彼はまた、モデルを教える際の人間のインプットの価値を強調し、言語モデルの影響がデジタルの世界を超えて広がる可能性があることを示唆しています。

  • 00:00:00 このセクションでは、Ilya Sutskever が GPT の違法な使用の可能性について議論し、外国政府がすでにプロパガンダ目的で GPT を使用している可能性があることを認めています。彼はまた、AI から AGI への移行の正確なタイムフレームを示すことは困難ですが、AI の経済的価値はそれに至るまでの数年間で指数関数的に増加し続けると述べています。 Sutskever はまた、自動運転車を現在の AI の例えとして使用し、モデルはあらゆることを実行できるように見えるかもしれませんが、信頼性と堅牢性を確保するためにはまだやるべきことがあると指摘しています。最後に、Sutskever は、2030 年までに AI が GDP の何パーセントを占めるようになるのか、そしてなぜそれが高い割合に達しないのかを予測するのは難しいことを認めています。

  • 00:05:00 このセクションでは、OpenAI チーフ サイエンティストの Ilya Sutskever が、AI システムにおける信頼性の重要性と、それが生み出す経済的価値にどのように影響するかについて説明します。彼はまた、現在の生成モデル パラダイムが AGI につながる可能性と、過去のさまざまなアイデアの統合が次のパラダイムを生み出す可能性についても語っています。 Sutskever は、次のトークンの予測が人間のパフォーマンスを超えることはできないという主張に異議を唱え、平均的な人よりもはるかに優れた精神的能力を持つ架空の人々についての洞察にどのようにつながるかを説明します。最後に、強化学習のデータのほとんどがすでに人間ではなく AI から得られていることを確認し、人間の教師が AI と協力して人間の入力なしで自分自身を改善する可能性について語っています。

  • 00:10:00 このセクションでは、OpenAI のチーフ サイエンティストである Ilya Sutskever が、高度な推論機能を備えたシステムを構築する際の人間と機械のコラボレーションの重要性と、機械学習モデルの多段階推論能力を向上させるための専用トレーニングの必要性について説明します。彼はまた、データの不足に関する懸念についても言及しており、マルチモーダルに移行することは、より多くのデータを取得するための価値ある方向性である可能性があると示唆しています。以前は、データが不足していたため、ロボット工学は OpenAI の実現可能な方向ではありませんでしたが、現在、この分野で進歩する可能性はさらにあるかもしれませんが、それにはタスクへの強いコミットメントと献身が必要です。最後に、Sutskever は、現在のハードウェアの制限ではうまく機能しない可能性がある将来のアイデアに期待を寄せています。

  • 00:15:00 このセクションでは、Ilya Sutskever が、AGI を構築するためのハードウェアの制限と、調整を達成するための彼の見解について説明します。彼は、アラインメントの数学的定義は 1 つではなく、さまざまな側面からアラインメントを考察する複数の定義があり、ミスアラインメントの可能性を減らすにはアプローチの組み合わせが必要になると考えています。 Sutskever はまた、大規模なニューラル ネットワークの動作を検証するためによく理解されている小さなニューラル ネットワークの可能性についても言及しています。 2024 年に 10 億ドルという OpenAI の収益予測について尋ねられたとき、Sutskever 氏は、新しい汎用テクノロジの予想外の利益を見積もるのは難しいが、この数字は OpenAI 製品の潜在的な成長によるものだと説明しています。

  • 00:20:00 ビデオのこのセクションでは、OpenAI のチーフ サイエンティストである Ilya Sutskever が、AGI の未来を決定する上でデータがいかに重要な役割を果たすかについて語っています。彼は、データなしで予測を行うと大きな誤差が生じることを強調しています。彼はまた、AGI 後の未来についての考えを共有し、AGI は人間がより啓発され、世界とより正しく対話するのに役立つ可能性があると述べています。しかし、Sutskever氏は、社会が変化する中で何が起こっているのか、社会にどのように貢献するのかを人々が正確に理解するのは難しいだろうと指摘しています。さらに、彼は、AGI が社会の運営方法を決定することはなく、AGI が基本的なセーフティ ネットのようなものを提供することで、人々は依然として自由に自分の過ちを犯し、その結果に苦しむことを望んでいます。

  • 00:25:00 このセクションでは、OpenAI のチーフ サイエンティストである Ilya Sutskever が AI のハードウェアについて説明し、Google のカスタム TPU が GPU よりも有利であるという信念を暴きます。彼は、TPU と GPU のアーキテクチャは基本的に非常に似ており、ハードウェアで重要なのはフロップあたりのコストとシステム全体のコストだけだと説明しています。 Sutskever はまた、新しいアイデアを思いつくだけでなく、システムと結果を理解することを含む、AI の開発に費やされる作業についての洞察を共有します。また、Microsoft との OpenAI のパートナーシップと、AI エコシステムが台湾の自然災害などの後退に対していかに脆弱であるかについても語っています。

  • 00:30:00 このセクションでは、Ilya Sutskever が、推論コストが AI モデルの進歩の障壁になる可能性について説明します。彼は、モデルの有用性によって、コストが法外に高いかどうかが決まると示唆しており、さまざまな顧客が、ユース ケースに応じてさまざまなサイズのさまざまなニューラル ネットワークを既に使用していることに注目しています。彼はまた、モデルについて学習しようとする外国政府に関する懸念、および緊急特性としての信頼性と制御可能性の重要性についても言及しています。特定の機能を予測することは簡単ではありませんが、モデルの改善が進み、モデルの信頼性が高まり、問題をより適切に解決できるようになると彼は信じています。

  • 00:35:00 このセクションでは、Ilya Sutskever が AI のスケーリングの法則と、次の単語の予測精度と推論能力の関連性について説明します。彼は、スケーリングの法則が重要であると考えていますが、努力の単位ごとにより多くの理由を与えることができると考えています。彼はまた、教育モデルにおける人間の入力の価値、およびデータ、GPU、およびトランスフォーマーの存在の間の関係を強調し、それらの開発が絡み合っていることを示唆しています。さらに、Sutskever は、先駆者が誰であるかに関係なく、深層学習革命は最終的には起こったであろうという彼の信念を表明し、彼らの意図を誤って伝える可能性のあるモデルを調整することの難しさを認めています.

  • 00:40:00 このセクションでは、Ilya Sutskever が、学術研究が AI 機能に関する重要な洞察をもたらす可能性について説明しますが、現在、企業がこれらの機能を実現する方が簡単であるように思われることを認めています。彼はまた、言語モデルの影響がビットの世界を超えてアトムの世界にまで及ぶ可能性があることも指摘しています。 Sutskever は、超人的な AI に必要なブレークスルーは、後から考えると必ずしもブレークスルーのようには感じられないかもしれないと考えており、人間と脳からインスピレーションを得ることは重要かもしれないが、研究を誤った方向に導く可能性のある本質的ではない性質に注意することも重要であると考えている.

  • 00:45:00 このセクションでは、Ilya Sutskever が、ディープラーニング革命の最初の研究者であることと、依然としてトップの研究者の 1 人であることに強い相関関係がある理由について、最後の質問に答えます。彼は、忍耐は成功の必要条件ではあるが、十分条件ではないと信じています。多くのことをまとめる必要があり、物事の正しい見方が必要です。答えるのが難しい質問ですが、彼は懸命に努力し続け、これまでのところ十分であることが判明しました。
Ilya Sutskever (OpenAI Chief Scientist) - Building AGI, Alignment, Spies, Microsoft, & Enlightenment
Ilya Sutskever (OpenAI Chief Scientist) - Building AGI, Alignment, Spies, Microsoft, & Enlightenment
  • 2023.03.27
  • www.youtube.com
Asked Ilya Sutskever (Chief Scientist of OpenAI) about - time to AGI- leaks and spies- what's after generative models- post AGI futures- working with MSFT an...
 

レッスン 1: コーダー 2022 のための実践的な深層学習



レッスン 1: コーダー 2022 のための実践的な深層学習

この YouTube ビデオ「Lesson 1: Practical Deep Learning for Coders 2022」では、インストラクターがコースを紹介し、ディープ ラーニングの急速な変化を強調し、Python を使用して「鳥か鳥でないか」システムを簡単に作成できることを示します。このコースは、線形代数や微積分の復習から始めるのではなく、最初にモデルを構築して展開する方法を人々に示すことを目的としており、音やマウスの動きを分類できる画像ベースのアルゴリズムを含む、さまざまな深層学習モデルをカバーします。インストラクターは、データ ブロックの作成、特徴検出器の理解、事前トレーニング済みモデルを使用してコーディング要件を軽減することの重要性を強調します。このコースでは、コードの削減と結果の改善に役立つベスト プラクティスを提供する fast.ai を使用して、セグメンテーションと表形式の分析も扱います。

このビデオでは、ディープ ラーニングとそのさまざまな分野への応用について紹介しています。プレゼンターは、モデル トレーニングのプロセスや、パフォーマンスを向上させるためにモデルの重みを更新するために損失を計算することの重要性など、機械学習の基本について説明します。このレッスンでは、表形式の学習と協調フィルタリングの 2 つのモデルについて説明します。また、プレゼンターは、コードの作成と共有における Jupyter ノートブックの有用性についても強調します。これには、新しいスタートアップ、科学論文、求人につながった過去の学生プロジェクトの例が含まれます。主なポイントは、意欲的な深層学習者は実験を行い、その成果をコミュニティと共有して貴重なフィードバックと経験を得る必要があるということです。

  • 00:00:00 このセクションでは、講師がコーダー向け実践的深層学習バージョン 5 の最初のレッスンを紹介し、コースが最後に更新されてからどのくらい変更されたかを強調します。彼は、2015 年末のユーモラスな XKCD コミックを、深層学習の分野での急速な進化の例として使用しています。その後、彼は Python を使用して「鳥か鳥でないか」システムの作成を実演します。これには、鳥と森の画像のダウンロードとサイズ変更、fast.ai を使用したデータ ブロックの作成、およびダウンロードした画像の一部の表示が含まれます。インストラクターは、このコースではより多くの詳細が提供されること、およびこのセクションの目標は概要を簡単に説明することであることを強調しています。

  • 00:05:00 このセクションでは、コンピューター ビジョン モデルを作成し、画像に鳥や森が含まれているかどうかをそれぞれわずか 200 枚の写真で識別することがいかに簡単かをプレゼンターがデモンストレーションします。以前はほとんど不可能だったことが、ディープ ラーニングによって簡単にアクセスできるようになりました。プレゼンターは、プレーン テキストから新しい画像を生成するアルゴリズムである DALLꞏEꞏ2 の例を共有しています。深層学習におけるこれらの最近の進歩は、この分野がいかに急速に進歩しているかを示しており、プレゼンターは、多くのコード、数学、またはラップトップ コンピューター以上のものを必要とせずにアクセスできると述べています。

  • 00:10:00 このセクションでは、講演者はディープ ラーニング モデルの機能と、かつてコンピューターには不可能と考えられていたタスクをどのように実行しているかについて説明します。彼らは、ジョークの答えを説明できる Google のパスウェイ言語モデルなど、アートや言語モデルで深層学習がどのように使用されているかについて言及しています。講演者はまた、深層学習における倫理的配慮の必要性を認め、ethics.fast.ai のデータ倫理コースをチェックすることを勧めています。次に、カラー カップ システムのオンライン バージョンを紹介して学生の様子を確認し、それを作成してくれた Radek に感謝します。Radek は、Nvidia AI で夢の仕事に就いたことを発表しました。

  • 00:15:00 ビデオのこのセクションでは、インストラクターは学習、特に深層学習の分野におけるコンテキストの重要性を強調しています。インストラクターは、線形代数と微積分の復習から始めるのではなく、適切なコンテキストを与えられた方がより効果的に学習できると信じています。彼は、スポーツを学ぶのと同じように、スポーツの試合全体を見せられ、徐々により多くの要素を組み合わせていきます。これが彼がこのコースで採用しているアプローチであり、最初にモデルを構築して展開する方法を学び、その後、最も洗練された技術的に詳細なクラスと同じくらい深く掘り下げます。また、インストラクターは、人気の本「Deep Learning for Coders」の執筆など、機械学習における彼の資格と背景についても説明します。

  • 00:20:00 このセクションでは、インストラクターが、ニューラル ネットワークが導入される前のコンピューター ビジョンの歴史的なアプローチについて説明します。彼は、以前の機械学習モデルが、アルゴリズムがオブジェクトを識別する方法を指示する機能を作成するために専門家にどのように依存していたかについて説明しています。インストラクターはこれを、これらの機能自体を学習するニューラル ネットワークと対比させて、モデルの開発とトレーニングを大幅に高速化します。インストラクターは、ニューラル ネットワークが独自の機能を学習し、新しいデータに適応する能力が、ディープ ラーニングが近年成功している理由の鍵であると述べています。

  • 00:25:00 このセクションでは、講師が深層学習における特徴検出器の概念について説明します。これは、人間の介入なしに画像から特定の特徴を識別して抽出できるニューラル ネットワークのレイヤーです。彼は、これらの特徴検出器を組み合わせて、より複雑で洗練された画像を認識する方法を説明しました。さらに、インストラクターは、画像ベースのアルゴリズムの多用途性と、それらを使用して音やマウスの動きを分類する方法を強調しています。最後に、彼は、ディープ ラーニングには大量のデータ、高価なコンピューター、および大規模な数学が必要であるという神話を暴き、転移学習により最小限のリソースを使用して最先端の作業が可能になると述べています。

  • 00:30:00 このセクションでは、講師が深層学習の世界での Pytorch と Tensorflow の人気について説明します。Pytorch は急速に成長し、研究リポジトリや研究者の間で Tensorflow を上回っています。ただし、Pytorch では比較的単純なタスクに多くのコードが必要になる可能性があるため、fast.ai ライブラリが役立つと彼は指摘しています。 fast.ai ライブラリは Pytorch の上に構築されており、必要なコードの量を減らして結果を改善するのに役立つベスト プラクティスを提供します。また、インストラクターは、産業界、学界、およびデータ サイエンスの教育で広く使用されている Web ベースのアプリケーションである Jupyter ノートブックを紹介し、Jupyter ノートブックの実行に使用できる Kaggle などのクラウド サーバーについても言及します。

  • 00:35:00 ビデオのこのセクションでは、講師が Jupyter ノートブックを使用してコードを作成し、実験し、例を調べてみる方法を紹介します。彼は、他の人のノートブックを編集またはコピーする方法、仮想コンピューターを起動してコードを実行する方法、キーボード ショートカットを使用する方法、散文やマークアップを作成する方法、ノートブックに画像を挿入する方法を説明しています。このコースでは、最新バージョンの fast.ai と少量の Python コードについても説明します。 Jupyter ノートブックを通じて、開発者は自分のコードを紹介し、オープンソース コミュニティの他の人々が自分の作品にアクセスできるようにすることができます。

  • 00:40:00 このセクションでは、スピーカーは外部ライブラリの使用について説明し、「fastdownload」や「resize_images」などの fast.ai ライブラリのいくつかを紹介します。また、データをモデルに取り込むために使用されるデータ ブロック コマンドの重要性についても説明しています。データ ブロックには、入力タイプ、出力タイプ、ラベル タイプ、トレーニングに必要な項目など、指定する 5 つの主要なパラメーターがあります。講演者は、ニューラル ネットワーク アーキテクチャの微調整が実際に行われることはめったにないため、データ ブロックを理解することがディープ ラーニングの実践者にとって重要であることを強調し、このコースは実践的なディープ ラーニングに焦点を当てています。

  • 00:45:00 このセクションでは、スピーカーは、ディープ ラーニング モデルの成功に不可欠なデータ ブロックの作成に含まれる手順について説明します。データ ブロックは、指定されたパス内のすべての画像ファイルを取得する関数を使用してトレーニングする画像を見つけ、テスト用にいくつかのデータを確保し、画像のサイズを標準サイズに変更する役割を果たします。データ ブロックを作成すると、データ ローダーが作成されます。データ ローダーは、モデルで処理できるデータ バッチのストリームを提供します。講演者は、モデルとデータを組み合わせた学習者の概念も紹介し、ディープ ラーニング モデルのトレーニングに不可欠です。

  • 00:50:00 このセクションでは、インストラクターが、pytorch 画像モデル (timm) ライブラリを使用して、コンピューター ビジョン タスクのために fast.ai で事前トレーニング済みのモデルを使用する方法について説明します。ほとんどのユースケースには resnet モデル ファミリーで十分ですが、他にも多くのモデルを使用できます。インストラクターは、特定のタスク (森の中の鳥の写真を認識するなど) に合わせてモデルを微調整する方法と、predict() メソッドを使用してモデルをデプロイする方法を示します。インストラクターはまた、セグメンテーションを含め、コンピューター ビジョン以外にも多くの種類のモデルが利用可能であると述べています。

  • 00:55:00 このセクションでは、話者はセグメンテーションについて説明します。セグメンテーションは、画像内のすべてのピクセルを、それが表すものに応じて色付けするために使用されます。スピーカーは、少量のデータと最小限のコードを使用して、わずか 20 秒で道路シーンの画像を車、フェンス、建物などのさまざまなカテゴリにセグメント化するようにモデルをトレーニングする方法を示しています。 2分。講演者は、特別なデータ ローダー クラスをデータ処理に使用できることを説明します。これにより、頻繁に発生するデータ セットのコードがさらに少なくて済みます。次にスピーカーは、表形式の分析と、スプレッドシートやデータ テーブルの列の予測など、業界でどのように広く使用されているかについて説明します。同様の情報をデータ ブロックに提供し、タイプ ディスパッチを使用することで、fast.ai を使用して、データの種類に関係なく、データに対して適切な処理を自動的に行うことができます。
     
  • 01:00:00 このセクションでは、表形式の学習と協調フィルタリングの 2 種類のモデルについて説明します。表形式モデルは、データのテーブルが大きく異なる、事前トレーニング済みモデルのないデータに使用されます。協調フィルタリングは、ほとんどのレコメンデーション システムの基礎であり、好きな製品に基づいて類似のユーザーを見つけることによって機能します。協調フィルタリング データセットには、ユーザー ID、製品 ID (映画など)、および評価が含まれます。このレッスンでは、協調フィルタリング データ ローダーの作成方法を示し、モデルの微調整とフィッティングの違いについて説明します。

  • 01:05:00 このセクションでは、スピーカーはコードを作成および共有するためのツールとしての Jupyter ノートブックの有用性について話します。これには、fast.ai ライブラリ全体がノートブックで記述されているという事実が含まれます。さらに、講演者はディープ ラーニングの現状と、NLP、コンピューター ビジョン、医学、レコメンデーション システム、ゲーム、ロボット工学など、さまざまな分野での応用についても触れています。講演者は、深層学習が多くの分野で最先端の結果を打ち破ることができたこと、そして人間が合理的に迅速に実行できるタスクを一般的に得意としていることに注目しています。

  • 01:10:00 このセクションでは、プレゼンターが機械学習の基本的な考え方を説明します。入力と結果が条件、ループ、変数でコード化された通常のプログラムから始めます。次に、プログラムは、ランダムな重みを含むモデルに置き換えられます。このモデルは、入力を受け取り、それらに重みを乗算する数学関数です。重みが慎重に選択されない限り、モデルは本質的に役に立たないため、結果の品質を測定する数値である損失を計算し、重みを更新して、以前のセットよりもわずかに優れた新しいセットを作成する必要があります。このプロセスは、モデルのパフォーマンスを向上させる上で重要です。

  • 01:15:00 このセクションでは、スピーカーは機械学習でモデルをトレーニングするプロセスを説明します。これには、ニューラル ネットワークを使用して出力を生成する一連の単純な手順を繰り返し、マイナスをゼロに置き換えます。理論的には、十分な時間、データ、および入力が与えられれば、モデルは計算可能な関数を解くことができ、トレーニングされたモデルは、入力を結果にマッピングする別のコードとして任意のプログラムに統合できます。 Python プログラマーはこのプロセスに簡単に取りかかる可能性がありますが、慣れていない人でも、Kaggle ノートブックを試して、鳥や森の演習を変更したり、3 つまたは 4 つのカテゴリを試したり、フォーラムで作業を共有したりするなど、さまざまなことを試すことができます。最も重要なことは、本の第 1 章を実験して読んで、次のレッスンの準備をすることです。

  • 01:20:00 ビデオのこのセクションでは、インストラクターが過去の学生が「コーダーのための実践的な深層学習」コースで取り組んできたプロジェクトの例をいくつか紹介しています。これらのプロジェクトは、新しいスタートアップ、科学論文、求人につながっています。これらのプロジェクトには、住んでいる場所に基づいてさまざまなタイプの人々を分類すること、ズッキーニとキュウリの分類器を作成すること、衛星画像を 110 の異なる都市に正確に分類すること、および災害回復活動のための建物の状態を認識することが含まれます。一部の学生は、音響分類器や腫瘍正常シーケンシングなど、それぞれの分野で最先端技術を打ち負かしています。インストラクターは、経験のレベルに関係なく、現在および将来の学生がプロジェクトの作成を開始し、フィードバックと励ましのためにフォーラムで共有することを奨励しています。
Lesson 1: Practical Deep Learning for Coders 2022
Lesson 1: Practical Deep Learning for Coders 2022
  • 2022.07.21
  • www.youtube.com
Go to https://course.fast.ai for code, notebooks, quizzes, etc. This course is designed for people with some coding experience who want to learn how to apply...
 

レッスン 2: コーダー 2022 のための実践的な深層学習



レッスン 2: コーダー 2022 のための実践的な深層学習

この YouTube ビデオ シリーズでは、コーダー向けのディープ ラーニングを紹介しています。データの準備、モデルの作成、機械学習モデルのデプロイなどのトピックをカバーしています。

このビデオでは、ハッカーの Jeremy Howard が、ディープ ラーニングを使用して独自の Web アプリを作成する方法を人々に教えています。彼は、Git でプロジェクトをセットアップする方法、ハグ フェイス スペースを使用してトレーニング対象のモデルをアップロードする方法、自然言語処理、およびテキストを認識する方法について説明しています。

  • 00:00:00 このレッスンでは、2022 年のコーダー向けの実践的な深層学習について説明します。学生が資料をよりよく記憶するのに役立つ、新しい最先端のテクニックが教えられています。コースは本に沿って進み、学生が自分の進歩をテストするのに役立つクイズが用意されています。

  • 00:05:00 このビデオでは、データの検索方法、データのクリーニング方法、モデルを本番環境に導入する方法など、コーディングのためのディープ ラーニングの基本について説明します。シリーズの次のビデオでは、これを行う方法を示します。

  • 00:10:00 このビデオでは、ウェスが ddg Web サイトを使用してディープ ラーニングでモデルをトレーニングする方法について説明しています。オブジェクトを検索する方法と、画像のサイズを変更する方法を示します。

  • 00:15:00 このビデオでは、深層学習の手法である RandomResizedCrop が紹介されています。これは、画像の認識精度を向上させるために使用されます。データ拡張についても説明されており、深層学習モデルを 5 エポックまたは 10 エポック以上トレーニングする場合は、RandomResizedCrop と「aug_transforms」を使用する必要があることが示されています。

  • 00:20:00 この YouTube ビデオでは、分類器の解釈オブジェクトを使用して、データ セット内のどこで損失が高いかを判断する方法を示しています。この情報は、モデルのトレーニングに使用する前にデータをクリーンアップするために使用できます。

  • 00:25:00 ビデオでは、2022 年のコーダー向けのデータ クリーニングと実用的なディープ ラーニングが紹介されています。GPU で高速化されたデータ クリーニングや HuggingFace Spaces などのツールを使用したデータ準備について説明し、その後、本番環境で機械学習モデルに Gradio を使用します。

  • 00:30:00 このビデオでは、Git を使用してコードを管理する方法と、ターミナルを使用してコードを操作する方法について説明します。このビデオでは、VS Code を使用してコードを編集する方法についても説明します。

  • 00:35:00 このチュートリアルでは、Kaggle の例や Colab の例など、いくつかの異なる方法を使用してディープ ラーニング モデルを作成する方法について説明します。モデルが作成されたら、ダウンロードして、コードと同じディレクトリにコピーできます。

  • 00:40:00 このレッスンでは、作成者は訓練を受けた学習者を使用して、画像が犬か猫かを予測する方法を示します。学習者は時間内に固定されており、簡単にロードおよびアンロードできます。

  • 00:45:00 このビデオでは、Gradio インターフェイスを作成して画像を分類に変換する方法と、これを行う Python スクリプトを作成する方法について説明しています。

  • 00:50:00 このレッスンでは、インストラクターがシンプルな PyTorch モデルを作成して Gradio にアップロードする方法を実演します。また、fastsetup を使用して PyTorch および Jupyter Notebook をコンピューターにインストールする方法についても説明しています。

  • 00:55:00 このビデオでは、Python と、Pytorch や Numpy などのディープ ラーニングに必要なライブラリの一部をインストールする手順を説明しています。著者は、システム python の代わりに、mambaforge などの conda ベースの python ディストリビューションを使用することを推奨しています。最後に、著者は nbdev をインストールして Jupyter Notebook を使用することを推奨しています。

  • 01:00:00 このレッスンでは、ディープ ラーニング モデルをトレーニングするための無料プラットフォームである Gradio を使用して、猫と犬の名前を予測する Web サイトを作成する方法を講師が実演します。 streamlit は Gradio よりも柔軟性がありますが、どちらのプラットフォームも無料で使いやすいです。

  • 01:05:00 このビデオでは、Javascript を使用して深層学習モデルを作成する方法を説明しています。チュートリアルには、同じモデルのマルチファイル バージョンと HTML バージョンが含まれています。

  • 01:10:00 このビデオでは、Javascript とブラウザーのみを使用して基本的な深層学習アプリを作成する方法を説明しています。アプリが作成されたら、FastPages を使用して、アプリに似た Web サイトを作成できます。

  • 01:15:00 このビデオでは、ハッカーのジェレミー ハワードが、ディープ ラーニングを使用して独自の Web アプリを作成する方法を人々に教えています。最初に、Git で簡単なプロジェクトをセットアップする方法について説明し、次にハグ フェイス スペースを使用してトレーニング対象のモデルをアップロードする方法を示します。次に、自然言語処理について説明し、モデルが内部でどのように機能するかを説明します。最後に、深層学習を使用してテキストを認識する方法を示します。
Lesson 2: Practical Deep Learning for Coders 2022
Lesson 2: Practical Deep Learning for Coders 2022
  • 2022.07.21
  • www.youtube.com
Q&A and all resources for this lesson available here: https://forums.fast.ai/t/lesson-2-official-topic/9603300:00 - Introduction00:55 - Reminder to use the f...