このコースは、許容できる速度と許容できる精度で行列計算を行うにはどうすればよいかという質問に焦点を当てています。
このコースは、サンフランシスコ大学の分析科学修士プログラム (2017 年夏) で教えられました (データ サイエンティストを目指す大学院生向け)。このコースは Jupyter Notebook を使用した Python で教えられ、ほとんどのレッスンでは Scikit-Learn や Numpy などのライブラリに加え、Numba (パフォーマンスを向上させるために Python を C にコンパイルするライブラリ) や PyTorch (GPU 用の Numpy の代替) も使用されます。数回のレッスンで。
ノートブックには講義ビデオのプレイリストが付属しており、YouTube で視聴できます。講義に混乱したり、講義が早すぎたりする場合は、次のビデオの冒頭を確認してください。そこでは、前の講義の概念を復習し、多くの場合、新しい視点や異なるイラストを使って説明し、質問に答えます。
fast.ai ディスカッション フォーラムの計算線形代数カテゴリを使用して、質問したり、考えやリソースを共有したりできます。
次のリストは、nbviewer サービスを通じてレンダリングされた、このリポジトリ内のノートブックへのリンクです。取り上げられるトピック:
まず、数値線形代数のいくつかの基本概念の概要を説明します。
ニュースグループ データセットを使用して、さまざまな投稿のトピックを特定してみます。文書内の語彙の頻度を表す用語-文書マトリックスを使用します。 NMF を使用して因数分解し、次に SVD を使用します。
SVD のもう 1 つの用途は、人物を識別し、監視ビデオの背景を除去することです。ランダム化 SVD を使用する堅牢な PCA について説明します。そして、ランダム化 SVD は LU 分解を使用します。
圧縮センシングは、より少ない放射線量で CT スキャンを可能にするために重要です。つまり、より少ないデータで画像を再構成できます。ここではそのテクニックを学び、それを CT 画像に応用してみましょう。
SVD をトピックモデリング、背景除去、線形回帰に適用しました。 SVD は固有分解と密接に関係しているため、ここでは大きな行列の固有値を計算する方法を学習します。 Wikipedia リンクの大規模なデータセットである DBpedia データを使用します。これは、主固有ベクトルがさまざまな Wikipedia ページの相対的な重要性を与えるためです (これが Google の PageRank アルゴリズムの基本的な考え方です)。より複雑になる (そして有用性も高まる) 固有ベクトルを計算するための 3 つの異なる方法を見ていきます。
このコースはトップダウンの教授法で構成されており、ほとんどの数学コースの運営方法とは異なります。通常、ボトムアップアプローチでは、まず使用するすべての個別のコンポーネントを学習し、次にそれらを徐々に構築してより複雑な構造を構築します。これの問題は、学生がモチベーションを失い、「全体像」を把握できず、何が必要になるのかが分からないことが多いということです。
ハーバード大学のデービッド・パーキンス教授は、『Making Learning Whole』という本の中で、野球を例えに使っています。私たちは、子供たちにゲームをプレイさせる前に、野球のルールをすべて暗記し、技術的な詳細をすべて理解することを要求しません。むしろ、彼らはただ一般的な感覚で遊び始め、時間が経つにつれて徐々により多くのルール/詳細を学びます。
fast.ai ディープ ラーニング コースを受講した場合は、それが使用されました。私の教育哲学について詳しくは、このブログ投稿またはサンフランシスコ機械学習ミートアップでの講演をご覧ください。
つまり、最初はすべてを理解できなくても心配する必要はありません。そうすべきではありません。まだ説明されていないいくつかの「ブラック ボックス」または行列分解の使用を開始し、後で下位レベルの詳細を掘り下げます。
まず、物事が何であるかではなく、何をするかに焦点を当てます。