目次
みなさん、こんにちは。今日は LLM の「単語分割」の問題について説明します。
#ネチズンはオンラインでアドバイスを提供しています## #ネチズンは、素晴らしい、実際、私はビデオを見るよりもこれらの投稿を読む方が好きです、自分のペースを保つのが簡単だと言いました。
ホームページ テクノロジー周辺機器 AI お役立ち情報が満載!マスター カルパシーの 2 時間 AI コースの最初のテキスト バージョン、新しいワークフローがビデオを記事に自動的に変換します

お役立ち情報が満載!マスター カルパシーの 2 時間 AI コースの最初のテキスト バージョン、新しいワークフローがビデオを記事に自動的に変換します

Feb 26, 2024 am 11:00 AM
ai gpt

少し前に、AI マスター Karpathy が立ち上げた AI コースは、すでにネットワーク全体で 150,000 回の視聴を獲得しました。

当時、一部のネチズンは、この 2 時間のコースの価値は大学 4 年間に相当すると言いました。

お役立ち情報が満載!マスター カルパシーの 2 時間 AI コースの最初のテキスト バージョン、新しいワークフローがビデオを記事に自動的に変換します

ここ数日、カルパシーは新しいアイデアを思いつきました:

will 2 The 13 -時間「Building a GPT Tokenizer from Scratch」ビデオ コンテンツは、「単語セグメンテーション」のトピックに焦点を当てた書籍の章またはブログ投稿に変換されます。

具体的な手順は次のとおりです。

- ビデオに字幕またはナレーション テキストを追加します。

#- ビデオを、一致する画像とテキストを含む段落に切り分けます。

#- 大規模な言語モデルのプロンプト エンジニアリング テクノロジを使用して、段落ごとに翻訳します。

- 元のビデオの一部へのリンクを含む Web ページとして結果を出力します。

より広範には、このようなワークフローはあらゆるビデオ入力に適用でき、読みやすく、閲覧し、検索しやすい形式でさまざまなチュートリアルの「コンパニオン ガイド」を自動的に生成します。

これは実現可能に思えますが、非常に困難でもあります。

お役立ち情報が満載!マスター カルパシーの 2 時間 AI コースの最初のテキスト バージョン、新しいワークフローがビデオを記事に自動的に変換します

彼は、想像力を説明するために、GitHub プロジェクト minbpe の下に例を書きました。

お役立ち情報が満載!マスター カルパシーの 2 時間 AI コースの最初のテキスト バージョン、新しいワークフローがビデオを記事に自動的に変換します#アドレス: https://github.com/karpathy/minbpe/blob/master/lecture.md

Karpathy 氏は、これはビデオを見てマークダウン形式の記事に翻訳するという手動で完了したタスクであると述べました。

「ビデオを約 4 分しか見ていません (つまり、3% 完了)、これを書くのにすでに約 30 分かかっています。このようなことができれば素晴らしいでしょう」自動的に行われます。非常に良いです。」

お役立ち情報が満載!マスター カルパシーの 2 時間 AI コースの最初のテキスト バージョン、新しいワークフローがビデオを記事に自動的に変換します次は授業の時間です!

「LLM 単語分割」コースのテキスト版

みなさん、こんにちは。今日は LLM の「単語分割」の問題について説明します。

残念ながら、「単語の分割」は最も高度な大規模モデルの比較的複雑で扱いにくいコンポーネントですが、それを詳細に理解する必要があります。

なぜなら、LLM の欠陥の多くはニューラル ネットワークやその他の一見不可解な要因に起因する可能性がありますが、これらの欠陥は実際には「単語の分割」にまで遡ることができるからです。

文字レベルの単語分割

それでは、単語分割とは何でしょうか?

実は、前のビデオ「ゼロから GPT を構築してみよう」ですでにトークン化を紹介しましたが、それは非常に単純な文字レベルのバージョンにすぎませんでした。

Google colab にアクセスしてビデオを確認すると、トレーニング データ (シェイクスピア) から始まることがわかります。これは Python の単なる大きな文字列です。

First Citizen: Before we proceed any further, hear me speak.All: Speak, speak.First Citizen: You are all resolved rather to die than to famish?All: Resolved. resolved.First Citizen: First, you know Caius Marcius is chief enemy to the people.All: We know't, we know't.
ログイン後にコピー

#しかし、LLM に文字列を入力するにはどうすればよいでしょうか?

最初に、トレーニング セット全体で考えられるすべての文字の語彙を構築する必要があることがわかります:

# here are all the unique characters that occur in this textchars = sorted(list(set(text)))vocab_size = len(chars)print(''.join(chars))print(vocab_size)# !$&',-.3:;?ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz# 65
ログイン後にコピー
次に、上記の語彙に基づいて、単一の文字と整数の間で変換するためのルックアップ テーブルを作成します。このルックアップ テーブルは単なる Python 辞書です:

stoi = { ch:i for i,ch in enumerate(chars) }itos = { i:ch for i,ch in enumerate(chars) }# encoder: take a string, output a list of integersencode = lambda s: [stoi[c] for c in s]# decoder: take a list of integers, output a stringdecode = lambda l: ''.join([itos[i] for i in l])print(encode("hii there"))print(decode(encode("hii there")))# [46, 47, 47, 1, 58, 46, 43, 56, 43]# hii there
ログイン後にコピー
文字列を一連の整数に変換すると、各整数がインデックスとして使用されることがわかります。トレーニング可能なパラメータの 2D 埋め込み。

語彙サイズは vocab_size=65 であるため、この埋め込みテーブルにも 65 行が含まれます:

class BigramLanguageModel(nn.Module):def __init__(self, vocab_size):super().__init__()self.token_embedding_table = nn.Embedding(vocab_size, n_embd)def forward(self, idx, targets=None):tok_emb = self.token_embedding_table(idx) # (B,T,C)
ログイン後にコピー

ここで、整数は埋め込みテーブルから行を「抽出」し、この行は単語のセグメンテーションを表すベクトルです。このベクトルは、対応するタイム ステップの入力として Transformer に供給されます。

「文字ブロック」の単語分割に BPE アルゴリズムを使用する

「文字レベル」の単純な設定言語モデル 言っておきますが、大丈夫です。

しかし実際には、最先端の言語モデルでは、より複雑なスキームを使用してこれらの表現語彙を構築しています。

具体的には、これらの解決策は文字レベルでは機能せず、「文字ブロック」レベルで機能します。これらのチャンク語彙を構築する方法は、バイト ペア エンコーディング (BPE) などのアルゴリズムを使用します。これについては、以下で詳しく説明します。

この手法の歴史的発展を簡単に振り返ってみましょう。言語モデルの単語分割にバイトレベルの BPE アルゴリズムを使用する論文は、OpenAI によって発行された GPT-2 論文「Language Models are Unsupervised」です。 2019 年。マルチタスク学習者。

お役立ち情報が満載!マスター カルパシーの 2 時間 AI コースの最初のテキスト バージョン、新しいワークフローがビデオを記事に自動的に変換します

#論文アドレス: https://d4mucfpksywv.cloudfront.net/better- language-models/ language_models_are_unsupervised_multitask_learners.pdf

セクション 2.2「入力表現」まで下にスクロールすると、このアルゴリズムの説明と動機が記載されています。このセクションの最後には、次のようなメッセージが表示されます:

語彙が 50,257 語に拡張されました。また、コンテキスト サイズを 512 トークンから 1024 トークンに増やし、より大きなバッチサイズ 512 を使用しました。

Transformer のアテンション層では、各トークンがシーケンス内の以前のトークンの限られたリストに関連付けられていることを思い出してください。

この記事では、GPT-2 モデルのコンテキスト長が GPT-1 の 512 トークンから 1024 トークンに増加したことを指摘しています。

言い換えれば、トークンは LLM 入力の基本的な「アトム」です。

お役立ち情報が満載!マスター カルパシーの 2 時間 AI コースの最初のテキスト バージョン、新しいワークフローがビデオを記事に自動的に変換します

「トークン化」とは、Python の元の文字列をトークン リストに変換する、またはその逆の変換を行うプロセスです。

この抽象化の普遍性を証明する別のよく知られた例があります。Llama 2 の論文で「トークン」を検索すると、63 件の一致結果が得られます。

たとえば、論文では、2 兆のトークンなどを使用してトレーニングしたと主張しています。

お役立ち情報が満載!マスター カルパシーの 2 時間 AI コースの最初のテキスト バージョン、新しいワークフローがビデオを記事に自動的に変換します

#論文アドレス: https://arxiv.org/pdf/2307.09288.pdf

##単語の分割の複雑さに関する簡単な説明

実装の詳細を掘り下げる前に、「単語の分割」について詳しく理解する必要性について簡単に説明しましょう。 " プロセス。

単語のセグメンテーションは、LLM における非常に多くの奇妙な問題の中心であるため、無視しないことをお勧めします。

ニューラル ネットワーク アーキテクチャに関する一見問題の多くは、実際には単語の分割に関連しています。以下にいくつかの例を示します:

- LLM が単語を綴らないのはなぜですか? ——単語セグメンテーション

- LLM は、文字列の反転などの非常に単純な文字列処理タスクを実行できないのはなぜですか? ——単語セグメンテーション

#- 英語以外の言語 (日本語など) のタスクでは LLM が劣るのはなぜですか? ——分詞

#- なぜ LLM は単純な算術が苦手なのでしょうか? ——単語の分割

#- Python でコーディングするときに GPT-2 でさらに多くの問題が発生するのはなぜですか? ——単語の分割

- 文字列 を見つけると LLM が突然停止するのはなぜですか? ——分詞

- 「末尾の空白」について受け取ったこの奇妙な警告は何ですか? --分詞

#--LLM に「SolidGoldMagikarp」について尋ねると、なぜクラッシュしてしまうのでしょうか? ——単語の分割

#- JSON ではなく YAML と LLM を使用する必要があるのはなぜですか? ——単語のセグメンテーション

#- LLM が真のエンドツーエンドの言語モデリングではないのはなぜですか? ——分詞

お役立ち情報が満載!マスター カルパシーの 2 時間 AI コースの最初のテキスト バージョン、新しいワークフローがビデオを記事に自動的に変換します

ビデオの最後でこれらの質問に戻ります。

単語分割の視覚的プレビュー

次に、この単語分割 WebApp をロードしましょう。

お役立ち情報が満載!マスター カルパシーの 2 時間 AI コースの最初のテキスト バージョン、新しいワークフローがビデオを記事に自動的に変換します

アドレス: https://tiktokenizer.vercel.app/

この Web アプリケーションの利点は、単語の分割が Web ブラウザーでリアルタイムに実行されるため、入力側でいくつかのテキスト文字列を簡単に入力し、右側で単語の分割結果を確認できることです。

上部では、現在 gpt2 トークナイザーを使用していることがわかり、この例で貼り付けられた文字列が現在 300 個のトークンにトークン化されていることがわかります。

ここでは、色付きで明確に示されています:

お役立ち情報が満載!マスター カルパシーの 2 時間 AI コースの最初のテキスト バージョン、新しいワークフローがビデオを記事に自動的に変換します

たとえば、文字列「Tokenization」 token30642 にエンコードされ、その後にトークン 1634 が続きます。

トークン "is" (これは、前のスペースを含む 3 文字であることに注意してください。これは非常に重要です!) は 318 です。

スペースは文字列内に必ず存在し、他のすべての文字と一緒に記述する必要があるため、スペースの使用に注意してください。ただし、通常は、わかりやすくするために視覚化の際には省略されます。

アプリの下部で視覚化機能のオンとオフを切り替えることができます。同様に、トークン「at」は 379、「the」は 262 などとなります。

次に、簡単な算術例を示します。

ここでは、トークナイザーによる数値の分解に一貫性がない可能性があることがわかります。たとえば、数値 127 は 3 文字のトークンですが、数値 677 は、6 (ここでも前のスペースに注意してください) と 77 の 2 つのトークンがあるためです。

この恣意性を説明するために、私たちは LLM に依存しています。

パラメータ内とトレーニング中の両方で、これら 2 つのトークン (実際には 6 と 77 が結合して数字 677 になります) について学習する必要があります。

同様に、LLM がこの合計の結果が数値 804 であると予測したい場合、2 つのタイム ステップ以内に出力する必要があることがわかります。

最初にトークン「8」を発行し、次にトークン「04」を発行する必要があります。

これらの分割はすべて完全に恣意的に見えることに注意してください。以下の例では、 1275 は「12」、次に「75」、6773 は実際には 3 つのトークン「6」、「77」、「3」、そして 8041 は「8」と「041」であることがわかります。

(続きます...)

(TODO: テキスト バージョンのコンテンツを継続したい場合は、ビデオから取得方法を確認してください(自動生成)

お役立ち情報が満載!マスター カルパシーの 2 時間 AI コースの最初のテキスト バージョン、新しいワークフローがビデオを記事に自動的に変換します

#ネチズンはオンラインでアドバイスを提供しています## #ネチズンは、素晴らしい、実際、私はビデオを見るよりもこれらの投稿を読む方が好きです、自分のペースを保つのが簡単だと言いました。

お役立ち情報が満載!マスター カルパシーの 2 時間 AI コースの最初のテキスト バージョン、新しいワークフローがビデオを記事に自動的に変換します 一部のネチズンもカルパシーにアドバイスを与えました:

「難しいように感じますが、LangChain を使用すると可能かもしれません。ささやき文字起こしを使用して、明確な章を持つ高レベルのアウトラインを生成し、コンテキスト内でそれらの章のチャンクを並行して処理できるかどうか疑問に思っていました。全体的な概要の中で、それぞれの章ブロックの特定の内容に焦点を当てます (並列処理される各章の図も生成します)。その後、生成されたすべての参照マークが LLM を通じて記事の最後にまとめられます。

お役立ち情報が満載!マスター カルパシーの 2 時間 AI コースの最初のテキスト バージョン、新しいワークフローがビデオを記事に自動的に変換します

誰かがこのためのパイプラインを作成しており、間もなくオープンソースになる予定です。


以上がお役立ち情報が満載!マスター カルパシーの 2 時間 AI コースの最初のテキスト バージョン、新しいワークフローがビデオを記事に自動的に変換しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

GoおよびViperライブラリを使用するときにポインターを渡す必要があるのはなぜですか? GoおよびViperライブラリを使用するときにポインターを渡す必要があるのはなぜですか? Apr 02, 2025 pm 04:00 PM

ポインター構文とviperライブラリの使用における問題への取り組みGO言語でプログラミングするとき、特にポインターの構文と使用を理解することが重要です...

GO言語の範囲を使用してマップを通過してマップを保存するのに、なぜすべての値が最後の要素になるのですか? GO言語の範囲を使用してマップを通過してマップを保存するのに、なぜすべての値が最後の要素になるのですか? Apr 02, 2025 pm 04:09 PM

GOのマップイテレーションにより、すべての値が最後の要素になるのはなぜですか? Go言語では、いくつかのインタビューの質問に直面したとき、あなたはしばしば地図に遭遇します...

携帯電話用の無料のXMLからPDFツールはありますか? 携帯電話用の無料のXMLからPDFツールはありますか? Apr 02, 2025 pm 09:12 PM

モバイルには、単純で直接無料のXMLからPDFツールはありません。必要なデータ視覚化プロセスには、複雑なデータの理解とレンダリングが含まれ、市場のいわゆる「無料」ツールのほとんどは経験がありません。コンピューター側のツールを使用したり、クラウドサービスを使用したり、アプリを開発してより信頼性の高い変換効果を取得することをお勧めします。

GOモジュールの下でカスタムパッケージを正しくインポートする方法は? GOモジュールの下でカスタムパッケージを正しくインポートする方法は? Apr 02, 2025 pm 03:42 PM

GO言語開発では、カスタムパッケージを適切に導入することが重要なステップです。この記事では、「ゴラン...

XML形式を美化する方法 XML形式を美化する方法 Apr 02, 2025 pm 09:57 PM

XMLの美化は、合理的なインデンテーション、ラインブレーク、タグ組織など、本質的に読みやすさを向上させています。原則は、XMLツリーを通過し、レベルに応じてインデントを追加し、テキストを含む空のタグとタグを処理することです。 PythonのXML.ETREE.ELEMENTTREEライブラリは、上記の美化プロセスを実装できる便利なchile_xml()関数を提供します。

GOでロックを使用するコードが時々パニックにつながるのはなぜですか? GOでロックを使用するコードが時々パニックにつながるのはなぜですか? Apr 02, 2025 pm 04:36 PM

ロックを使用すると、なぜパニックを引き起こすのですか?興味深い質問を見てみましょう。コードにロックが追加されたとしても、時々...

XML形式を確認する方法 XML形式を確認する方法 Apr 02, 2025 pm 10:00 PM

XML形式の検証には、その構造とDTDまたはスキーマへのコンプライアンスを確認することが含まれます。 ElementTree(基本的な構文チェック)やLXML(より強力な検証、XSDサポート)など、XMLパーサーが必要です。検証プロセスでは、XMLファイルを解析し、XSDスキーマをロードし、AssertValidメソッドを実行してエラーが検出されたときに例外をスローすることが含まれます。 XML形式の確認には、さまざまな例外を処理し、XSDスキーマ言語に関する洞察を得る必要があります。

C言語でchar配列の使用方法 C言語でchar配列の使用方法 Apr 03, 2025 pm 03:24 PM

Char Arrayは文字シーケンスをC言語で保存し、char array_name [size]として宣言されます。アクセス要素はサブスクリプト演算子に渡され、要素は文字列のエンドポイントを表すnullターミネーター「\ 0」で終了します。 C言語は、strlen()、strcpy()、strcat()、strcmp()など、さまざまな文字列操作関数を提供します。

See all articles