diff --git a/chapters/ja/_toctree.yml b/chapters/ja/_toctree.yml index c1d0fcd7f..3d2e0342f 100644 --- a/chapters/ja/_toctree.yml +++ b/chapters/ja/_toctree.yml @@ -7,6 +7,14 @@ sections: - local: chapter1/1 title: イントロダクション + - local: chapter1/7 + title: Sequence-to-sequence モデル + - local: chapter1/8 + title: バイアスと限界 + - local: chapter1/9 + title: まとめ + - local: chapter1/10 + title: 章末クイズ - title: 4. モデルとトークナイザーの共有 sections: diff --git a/chapters/ja/chapter1/10.mdx b/chapters/ja/chapter1/10.mdx new file mode 100644 index 000000000..11b70518a --- /dev/null +++ b/chapters/ja/chapter1/10.mdx @@ -0,0 +1,262 @@ + + +# 章末クイズ + + + +この章では多くの物事を学びました!詳細を把握できなくても安心してください。次の章はどのようにこれらのツールが動いているか理解する上で役に立ちます。 + +まずは、この章で学んだことを確かめましょう! + + +### 1.Hubを探索して`roberta-large-mnli`チェックポイントを見つけましょう。 このモデルはどのタスクに適していますか? + +ページを見てみましょう。" + }, + { + text: "文章分類", + explain: "より正確には2つの文が論理的にどのような関係を持つか、3つのラベル(矛盾、中立、含意)について分類します。このタスクは自然言語推論とも呼ばれます。", + correct: true + }, + { + text: "文章生成", + explain: "もう一度roberta-large-mnliのページを見てみましょう。" + } + ]} +/> + +### 2.次のコードは何を返しますか? + +```py +from transformers import pipeline + +ner = pipeline("ner", grouped_entities=True) +ner("My name is Sylvain and I work at Hugging Face in Brooklyn.") +``` + +sentiment-analysis パイプラインを用いたときの動作です。" + }, + { + text: "この文章を完結させるための生成された文を返します。", + explain: "間違いです。それは text-generation パイプラインを用いたときの動作です。" + }, + { + text: "この文中の人物、団体、場所を表す単語を返します。", + explain: "さらに、grouped_entities=Trueを用いると、同じエンティティに属する単語をグループ化します。", + correct: true + } + ]} +/> + +### 3. このサンプルコードでは...をどのように置き換えればよいでしょうか? + +```py +from transformers import pipeline + +filler = pipeline("fill-mask", model="bert-base-cased") +result = filler("...") +``` + + has been waiting for you.", + explain: "間違いです。bert-base-casedのモデルカードをチェックして、あなたの間違いを見つけましょう。" + }, + { + text: "This [MASK] has been waiting for you.", + explain: "正解!このモデルのマスクトークンは[MASK]です。", + correct: true + }, + { + text: "This man has been waiting for you.", + explain: "間違いです。このパイプラインはマスクされた単語を埋めるので、どこかにマスクトークンが必要です。" + } + ]} +/> + +### 4. なぜこのコードは動かないのでしょうか? + +```py +from transformers import pipeline + +classifier = pipeline("zero-shot-classification") +result = classifier("This is a course about the Transformers library") +``` + +candidate_labels=[...]を含める必要があります。", + correct: true + }, + { + text: "このパイプラインには、一つの文だけでなく複数の文が必要です。", + explain: "これは間違いです。しかし、適切に使用すれば、このパイプラインは処理する文のリストを受け取ることができます(他のパイプラインも同様です)。" + }, + { + text: "いつもどおり、この🤗Transformersライブラリは壊れています。", + explain: "ノーコメント!" + }, + { + text: "このパイプラインはもっと長い入力が必要です。この入力は短すぎます。", + explain: "これは間違いです。ただし、とても長い文をこのパイプラインで処理すると、切り捨てられることに注意してください。" + } + ]} +/> + +### 5. 転移学習とはどのような意味ですか? + + + + +### 6. マルバツクイズ、言語モデルの事前学習にラベルは通常は必要ない? + + +自己教師あり学習で行われます。つまり、ラベルは入力から自動的に作成されます(例えば、次の単語を予測したり、マスクされた単語を埋めたりといったように)。", + correct: true + }, + { + text: "バツ", + explain: "これは正しい回答ではありません。" + } + ]} +/> + +### 7.「モデル」、「アーキテクチャ」、「重み」という用語を最も適切に説明している文を選んでください。 + + + + +### 8. 生成された文でプロンプトを完成させるために使うモデルはどれでしょうか? + + + + +### 9. 文章要約タスクに使うモデルはどれでしょうか? + + + +### 10. 入力された文を特定のラベルに分類したいときに使うモデルはどれでしょうか? + + + + +### 11. モデルが持つバイアスはどのような要因で生じますか? + + + diff --git a/chapters/ja/chapter1/7.mdx b/chapters/ja/chapter1/7.mdx new file mode 100644 index 000000000..e4bf8ea27 --- /dev/null +++ b/chapters/ja/chapter1/7.mdx @@ -0,0 +1,23 @@ +# Sequence-to-sequence モデル + + + + + +Encoder-decoderモデル(*sequence-to-sequence models*とも呼ばれる)はTransformerアーキテクチャのエンコーダーとデコーダーの両方を使用します。 +それぞれのステージにおいて、エンコーダーのアテンション層は入力文のすべての単語にアクセスできるのに対して、デコーダーのアテンション層は入力中のある単語の前に位置する単語にのみアクセスできます。 + +これらのモデルの事前学習は、エンコーダー、またはデコーダーの学習と同じように行われますが、通常はより複雑な方法を含みます。 +例えば、[T5](https://huggingface.co/t5-base) は、特殊な単語で文中のスパン(複数の単語を含むことができる)をランダムにマスクしたときに、そのマスクされた文を予測する事を目的として事前学習されています。 + +Sequence-to-sequenceモデルは、要約、翻訳、質問応答生成などのように、与えられた入力文に対して新しい文を生成するタスクにとても適しています。 + +これらの系統のモデルの代表は次のとおりです: + +- [BART](https://huggingface.co/transformers/model_doc/bart.html) +- [mBART](https://huggingface.co/transformers/model_doc/mbart.html) +- [Marian](https://huggingface.co/transformers/model_doc/marian.html) +- [T5](https://huggingface.co/transformers/model_doc/t5.html) diff --git a/chapters/ja/chapter1/8.mdx b/chapters/ja/chapter1/8.mdx new file mode 100644 index 000000000..e81b75dc4 --- /dev/null +++ b/chapters/ja/chapter1/8.mdx @@ -0,0 +1,35 @@ +# バイアスと限界 + + + +事前学習済みモデルやファインチューニング済みのモデルを使う場合、これらのモデルは強力なツールですが、一方で限界もあることに注意しなければなりません。 +その代表例は、大量のデータによる事前学習を行うために、研究者はインターネット上にある利用可能なデータを良いものから悪いものまで手当たりしだいに集めてしまうことです。 + +簡単に説明するために、BERTによる`fill-mask`パイプラインの例に戻りましょう: + + +```python +from transformers import pipeline + +unmasker = pipeline("fill-mask", model="bert-base-uncased") +result = unmasker("This man works as a [MASK].") +print([r["token_str"] for r in result]) + +result = unmasker("This woman works as a [MASK].") +print([r["token_str"] for r in result]) +``` + +```python out +['lawyer', 'carpenter', 'doctor', 'waiter', 'mechanic'] +['nurse', 'waitress', 'teacher', 'maid', 'prostitute'] +``` + +これらの2つの文の欠落した単語を埋めさせたときに、モデルはジェンダーフリーの回答を一つだけしか与えません(waiter/waitress)。他はたいていの場合、特定の性別と関連付けられる職業です。そして、モデルは「女性」と「仕事」から連想される可能性のある職業としてトップ5に「売春婦(prostitute)」を上げています。 +BERTはインターネット上のあらゆるところからデータをかき集めて構築されたのではなく、中立的なデータ([English Wikipedia](https://huggingface.co/datasets/wikipedia)と[BookCorpus](https://huggingface.co/datasets/bookcorpus)を用いて学習されています) を用いて構築されためずらしいTransformerモデルであるにも関わらず、このような現象が発生してしまいます。 + +したがって、これらのツールを使用する際は、オリジナルのモデルがとても簡単に性的、差別的、あるいは同性愛嫌悪のコンテンツを生成してしまうことを念頭に置く必要があります。この本質的なバイアスは、あるデータでファインチューニングしても消えることはありません。 \ No newline at end of file diff --git a/chapters/ja/chapter1/9.mdx b/chapters/ja/chapter1/9.mdx new file mode 100644 index 000000000..4299784d1 --- /dev/null +++ b/chapters/ja/chapter1/9.mdx @@ -0,0 +1,16 @@ +# まとめ + + + +この章では、🤗 Transformersが提供する高レベルな`pipeline()` 関数を用いて、異なるNLPタスクにアプローチする方法を学びました。また、同様にHubを用いてモデルを探す方法や、推論APIを使ってブラウザ上でモデルを直接テストする方法も学びました。 + +さらに、Transformerモデルがどのように動作するかを高いレベルで議論し、さらに転移学習やファインチューニングの重要性について話しました。一つの重要な観点は、解きたいタスクに応じてアーキテクチャ全体を用いることや、エンコーダーやデコーダーの一方だけを用いることができるという点です。以下の表はそのまとめです。 + +| モデル | 例 | タスク | +|-----------------|--------------------------------------------|----------------------------------------------------------------------------------| +| Encoder | ALBERT, BERT, DistilBERT, ELECTRA, RoBERTa |文章分類, 固有表現抽出, 抽出型質問応答 | +| Decoder | CTRL, GPT, GPT-2, Transformer XL | 文章生成 | +| Encoder-decoder | BART, T5, Marian, mBART | 文章要約, 翻訳, 生成型質問応答  |