
このコースについての概要を解説します。
必要なものは、Google アカウント以外、特にありません。
アンドロイドスマホやG-mail を使っている方であれば、Google アカウントをお持ちですので、教材を実行することができます。
教材を使用するために、Google Colaboratory をGoogle Drive 環境にインストールします。
自然言語処理の目的は、人間の自然言語(テキストや音声)を計算機が理解・生成できるようにすることです。他の言語処理との違いやGPTの方法を見ていきましょう。
トークンと形態素解析について学びます。トークンとは、文章を最小単位の意味を持つ形態素(単語や助詞など)に分割したものです。また、形態素解析とは、トークンを、品詞や活用形などを付与する自然言語処理の基本技術です。
一時非公開レクチャー
このセクションの概要です。
word2vecは、単語の意味的な関係性を高次元ベクトルで表現する手法です。大規模なデータから効率的に単語ベクトルを学習でき、自然言語処理の様々な場面で活用されています。
プログラムを正常に動作させるために、初期設定で必要な最低限の条件や値を設定します。
インスタンス化とは、クラスという設計図からオブジェクト(インスタンス)を生成する操作のことです。
文章から規則性や傾向を見つけ出し、モデルのパラメータを自動的に学習させてみます。少ないコーパスで学習させてみます。
学習済みのword2vecが未知のデータに対してどの程度よく一般化できるかを測ってみます。少ないデータでの学習ですが、変化があるかどうか、自分の目で確かめてみましょう。
このセクションの概要です
コサイン類似度は、2つのベクトル間の類似度を測る指標の一つです。
2つのベクトルのなす角度の余弦値を取ることで、方向の類似度を-1から1の範囲の値で表します。
教材を使って、コサイン類似度の関数を作ってみます。
作成したコサイン類似度の関数を使って、類似度が0.6を超える単語を集めてみましょう。
ベクトル空間を四則演算で捜査して、王ー男+女=女王?を確かめてみましょう。また「夏ー暑い+寒い」も確かめてみましょう。
各単語は高次元の密ベクトル(分散表現ベクトル)で表現されます。各単語のベクトルから共通する特徴を取り出して利用してみます。
抽出した特徴ベクトルを使って、ベクトル空間の操作の精度を上げてみましょう。「夏ー暑さの特徴ベクトル+寒さの特徴ベクトル」がうまくいくでしょうか
コサイン類似度の計算結果を元に、類似する項目を検索する関数を作成します。
「夏ー暑さの特徴ベクトル+寒さの特徴ベクトル」から、「冬」という項目を選択できるか確認してみます。
地名での演算も試してみましょう。首都Aー国名A+国名B=首都Bになることを教材で確認します。
このセクションの概要です。
このセクションは、Stable Diffusion のコースと同じ解説をしていますが、Positional Encodingのコーディングを追加しております。既にご覧になった方も、もう一度ご覧になってください。
Transformerの全体像を学んでいきます。全て、具体的にイラストで解説していきます。一度挫折した方も、ここでもう一度チャレンジしてみてください。
引き続きTransformerの全体像を学んでいきます。
引き続きTransformerの全体像を学んでいきます。
引き続きTransformerの全体像を学んでいきます。
引き続きTransformerの全体像を学んでいきます。
Transsformerで有名になったPositional Encodingについて学びます。単語の位置情報の必要性について理解しておきましょう。
引き続きPositional Encodingについて学びます。数式ではわかりにくいですが、グラフを使って、何が起こっているのかみていきます。
PositionalEncodingのアルゴリズムをコードにしてみます。短いステップですので、書いてみましょう。
三角関数を使って計算ループを作成します。数式をそのままコードに起こしていきます。
順伝播の処理を書きます。また、PositionalEncodingのパラメータを更新対象から外しておきます。
ハイパーパラメータを設定して、Positionalencodingクラスをインスタンス化して計算を実行してみます。
埋め込みベクトルを作成してPositionalEncodingと一緒に計算してみます。
PositionalEncodingの別の処理方法を教材としてアップロードしています。どちらを使っても大丈夫です。
Multi-Head Attention の概要を学びます。
Hulti-Head Attentionの計算を行う前に、埋め込みベクトルをQuery, Key, Value に分割します。
また線形変換という空間を写像する処理を行います。
GPTで作成していきますのでイラストで見ておきましょう。
Multi-Head Attention の内部は、一つの関数になっています。GPTで作成していく Scaled Dot-Product Attention をイラストで見ていきましょう。
このセクションの概要です
まずは、GPT本体のコードがどのようなものか、その全体像をみてみましょう。意外と少ないことがわかります。
教材は、推論の疎通を確認するものです。
サンプル値を投入してプログラムの疎通を確認してみましょう。
特定の小説しか生成できませんが芥川龍之介モデルで文章が生成されていく様子を確認してみましょう。
GPTの構成を確認していきます。
これからGPTをTransformerモデルで構築していきます。今後、このGPTモデルを利用していくことになります。
GPTモデルで最初に行う埋め込みベクトルについて学びます。word2vecを思い出しながら確認していきましょう。
Transformer では位置情報にPositional Encodingを使いました。.
一方GPTでは、位置の埋め込みを行います。
位置の埋め込みをコードを書いて確認していきましょう。
GPTでは、位置の埋め込みベクトルを学習しません。すでに学習済みのベクトルを利用しています。
ここでは、TransformerのPositional Encoding を使って省エネ化していきましょう。
Transformerで使われるマスク機能について学びます。なぜ必要なのか考えてみましょう。
マスク関数を作成して、実際の使い方を学びます。
このセクションの概要です
Attention メカニズムの最も小さい単位をここで確認しておきましょう。
教材にコードを書いて、Scaled-Dot Product を理解していきます。
forward(順伝播)の処理を書いていきます。
練習問題を作って、Attention を計算させてみましょう。
Scaled-Dot Product の`Scaled` の処理を直に計算させてみます。
マスク関数を充ててみて、その結果を確認します。マスク=0ではありません。
ソフトマックス関数を利用して、確率変換してみましょう。
マルチヘッドアテンションについて、わかりやすくイラストで解説します。
マルチヘッドアテンションについての補足です。論文の数式をみていきます。
教材でマルチヘッドアテンションの処理を作っていきます。
教材でマルチヘッドアテンションの処理を作っていきます。
教材でマルチヘッドアテンションの処理を作っていきます。
Feed Forward の処理を確認しておきましょう。これは、普通のマルチレイヤー・パーセプトロンによるニューラルネットワークです。
教材を使ってFeedForwardの処理を作っていきます。
教材を使ってFeedForwardの処理を作っていきます。
TransformerBlockのクラスについて処理内容を確認します。
教材を使ってTransformerBlockを作っていきます。
教材を使ってTransformerBlockを作っていきます。
教材を使ってTransformerBlockを作っていきます。
教材を使ってTransformerBlock の動作確認をしてみます。
このセクションの概要です。
まずは、初期化の処理を書いていきましょう。
引き続き、初期化の処理を書いていきましょう。
学習パラメータをザヴィエルという特定の方法で初期化します。
GPTクラスの順伝播の処理を作っていきます。
ハイパーパラメータとは、機械学習モデルの学習アルゴリズムにおいて、事前に人間が設定する値のことです。レイヤーの数や、学習係数などを事前に設定します。
作成したGPTをインスタンス化して、疎通確認をしてみましょう。
このセクションの概要です。
事前学習がどのような役割を果たすのか、イラストで学びます。大量の文章を読み込ませることで、自律的に言語の統計パターンを学習していきます。
これから教材を使って事前学習させるコードを動かしていきます。
まずは、関連モジュールをインストールして準備をしていきます。
機械学習において大切であると思われる部分は動画を見ながら、手入力してみましょう。
日本語コーパスとして簡単に入手できるのが青空文庫です。glovbis-university から提供されている青空文庫のデータセットを読み込んでおきます。rambda関数も登場しますので、所見の方は、ここで学んでおきましょう。
ハイパー・パラメーターを設定します。余裕のある方は、値を変更してみて、いといろと学習の変化を見てみましょう。
Dataset モジュールを利用して、コーパスを学習用のデータに変換させておきます。
PyTorchフレームワークでの一般的な利用方法です。
GPTクラスなどを実際に使える「モノ」の状態に変換しておきます。
GPTを学習させるループ処理を書いていきます。
引き続き、GPTを学習させるループ処理を書いていきます。
ログの表示や保存する処理について教材をみながら確認していきます。
学習ループを実行して、学習の推移を確認してみましょう。
テスト用のモジュールを利用して、青空文庫の文章が再現できているか確認してみます。
動画解説は小規模なコーパスでの学習ですので、過剰適合 (over fitting) しています。時間のある方は、コーパスを増やしてゼロショットを確認してみましょう。
実際の大季語言語モデルでの事前学習の意味は何なのでしょうか。
「ChatGPTで自分の会社の情報が出てこない」と不満に思っていらっしゃる方は、ここで確認しておくことにしましょう。
ここでは、GPTの目的関数について学んでいきます。数式が出てきますが、機械学習全般に関わる要素を含んでいますので、ここで一緒に学んでおきましょう。
引き続き、数式を理解していきましょう。
引き続き、数式を理解していきます。混乱しそうな部分は色分けで、解説していきます。
最も基本的て一般的な対数尤度について学んできます。機械学習経験者の方も、おさらいしておきましょう。
CrossEntropy を機械学習ラーブラリーの観点から見ていきます。結果としては、実に単純な仕組みです。
初期のGPTを1から作ってみます。ChatGPTのような役立つ生成モデルを再現することはできませんが、学問的な視点から、基本的なGPTを作ってみることで、どうして自然言語が使えるAIが実現するようになったのか、手を動かしながら学びます。イラスト解説と平行して、前半は自然言語処理の成り立ちを学び、後半では、Attentionメカニズムを搭載したTransformerの部品を作っていきます。臨機応変に機械学習に関係することも紹介しています。とにかく、掴める内容にしようと思って愚直に青臭くコースを作成しました。生の生成AIに触れてみたい方にお勧めです。