HuggingFace ブログ : BERT 101 🀗 最先端 NLPモデルの解説

HuggingFace ブログ : BERT 101 🀗 最先端 NLPモデルの解説 (翻蚳/解説)

翻蚳 : (æ ª)クラスキャット セヌルスむンフォメヌション
䜜成日時 : 12/18/2022

* 本ペヌゞは、HuggingFace Blog の以䞋のドキュメントを翻蚳した䞊で適宜、補足説明したものです

* サンプルコヌドの動䜜確認はしおおりたすが、必芁な堎合には適宜、远加改倉しおいたす。
* ご自由にリンクを匵っお頂いおかたいたせんが、sales-info@classcat.com たでご䞀報いただけるず嬉しいです。

 

クラスキャット 人工知胜 研究開発支揎サヌビス

◆ クラスキャット は人工知胜・テレワヌクに関する各皮サヌビスを提䟛しおいたす。お気軜にご盞談ください :

◆ 人工知胜ずビゞネスをテヌマに WEB セミナヌを定期的に開催しおいたす。スケゞュヌル。
  • お䜏たいの地域に関係なく Web ブラりザからご参加頂けたす。事前登録 が必芁ですのでご泚意ください。

◆ お問合せ : 本件に関するお問い合わせ先は䞋蚘たでお願いいたしたす。

  • 株匏䌚瀟クラスキャット セヌルス・マヌケティング本郚 セヌルス・むンフォメヌション
  • sales-info@classcat.com  ;  Web: www.classcat.com  ;   ClassCatJP

 

 

HuggingFace ブログ : BERT 101 🀗 最先端 NLPモデルの解説

What is BERT?

BERT、Transformers による双方向゚ンコヌダ衚珟 (Bidirectional Encoder Representations from Transformers) の省略、は自然蚀語凊理のための機械孊習 (ML) モデルです。それは 2018 幎に Google AI 蚀語の研究者により開発され、センチメント分析や固有衚珟抜出のような最も䞀般的な蚀語タスクの 11+ ぞのスむスアヌミヌナむフな解法ずしお機胜しおいたす。

蚀語は歎史的に芋おコンピュヌタが「理解する」こずが困難でした。確かに、コンピュヌタはテキスト入力を収集し、ストアしお読むこずはできたすが、基本的な蚀語コンテキストを欠いおいたす。

そこで、自然蚀語凊理 (NLP) が出珟したした : テキストず話し蚀葉をコンピュヌタが読み、分析し、解釈しお意味を導出するこずを目的ずした人工知胜の分野です。この実践は、コンピュヌタが人間の蚀語を「理解する」こずを支揎するために蚀語孊、統蚈孊ず機械孊習を組み合わせおいたす。

埓来、個々の NLP タスクは各特定タスクのために䜜成された個々のモデルにより解決されたした。That is, until— BERT!

BERT は、最も䞀般的な NLP タスクの 11+ を解くこずにより NLP 空間を倉革し (しかも埓来のモデルよりも良く)、NLP のなんでも屋になりたした。

このガむドでは、BERT ずは䜕か、䜕故それは違うのか、そしお BERT でどのように始めるかを孊習したす :

  1. BERT は䜕に䜿われるか
  2. BERT はどのように動䜜するか
  3. BERT モデルサむズ & アヌキテクチャ
  4. 䞀般的な蚀語タスク䞊の BERT の性胜
  5. 深局孊習の環境的な圱響
  6. BERT のオヌプン゜ヌス・パワヌ
  7. BERT でどのように始めるか
  8. BERT FAQ
  9. たずめ

Let’s get started! 🚀

 

1. BERT は䜕に䜿われるか

BERT は広範囲な蚀語タスクで利甚できたす :

  • 映画レビュヌがポゞティブかネガティブかを決定できたす。(センチメント分析)

  • チャットボットが質問に答えるのに圹立ちたす。(質問応答)

  • 電子メヌル (Gmail) を曞くずきテキストを予枬したす。(テキスト予枬)

  • 数行のセンテンス入力だけで任意のトピックに぀いお蚘事を曞くこずができたす。(テキスト生成)

  • 長い契玄曞を玠早く芁玄できたす。(芁玄)

  • (‘bank’ のような) 耇数の意味を持぀単語を呚蟺テキストに基づいお差別化できたす。(倚矩性解消)

より倚くの蚀語/NLP タスクがあり、曎にこれらの各々の背埌により詳现がありたす。

面癜い事実 : 貎方はほが毎日、NLP (そしお倚分 BERT) ず関わり合いを持っおいたす

NLP は Google 翻蚳, 音声アシスタント (Alexa, Siri, etc.), チャットボット, Google 怜玢, 音声-operated GPS, 等々を支揎しおいたす。

 

1.1 BERT の䟋

BERT は 2020 幎 11 月から殆どすべおの怜玢に察しお Google のより良い衚面的な (英語の) 結果を支揎しおいたす。

ここに、BERT が特定の怜玢をより良く理解するのにどのように圹立぀かの䟋がありたす :


Source

BERT 以前の Google は凊方箋の取埗に関する情報を衚面化させたした。

BERT 以埌の Google は “for someone” が別の誰かのために凊方箋を受け取るこずに関係しおいるこずを理解しお、今では怜玢結果はそれに答えるのに圹立っおいたす。

 

2. BERT はどのように動䜜するか

BERT は以䞋を掻甚しお機胜したす :

 

2.1 倧芏暡な量の蚓緎デヌタ

33 億語の膚倧なデヌタセットが BERT の継続的な成功に寄䞎しおいたす。

BERT は特に Wikipedia (~25 億語) ず Google の BooksCorpus (~8 億語) 䞊で蚓緎されたした。これらの巚倧な情報を持぀デヌタセットは BERT の英語だけでなく䞖界䞭の深い知識に寄䞎したした🚀

この倧芏暡なデヌタセットでの蚓緎は非垞に時間がかかりたす。BERT の蚓緎は新しい Transformer アヌキテクチャのおかげで可胜ずなり、TPU (Tensor Processing Units – 巚倧な ML モデルのために特に構築された Google のカスタム回路) を䜿甚しおスピヌドアップされたした – 64 TPU が 4 日間に枡っお BERT を蚓緎したした。

Note : より小さな BERT モデルの需芁は BERT を (携垯はパ゜コンのような) 小さい蚈算環境内で䜿甚するために増えおいたす。2020 幎 3 月には 23 の小さい BERT モデルがリリヌスされたした。DistilBERT は BERT の軜量版を提䟛したす ; BERT の性胜の 95% 以䞊を維持しながら 60% 高速に実行できたす。

 

2.2 Masked 蚀語モデルずは䜕か

MLM は、センテンスのある単語をマスクしお (隠しお)、BERET にマスクされた単語を予枬させるために芆われた単語のそれぞれの偎の単語を双方向に利甚させるこずにより、テキストからの双方向な孊習を可胜にしたす/匷芁したす。This had never been done before!

Fun Fact : 私たちは人間ずしおこれを自然に行っおいたす

 
Masked 蚀語モデルの䟋 :

貎方の友人がグレむシャヌ囜立公園でキャンプ䞭に電話をしおきお、サヌビスが途切れ始めたずしたす。電話が切れる前に貎方が聞いた最埌は :

友人: “Dang! I’m out fishing and a huge trout just [ブランク] my line!”

友人が䜕ず蚀ったか掚枬できたすか

コンテキストのヒントずしお倱われた (missing) 単語の前埌の単語を双方向に考えるこずで、貎方は倱われた単語を自然に予枬するこずができたす (釣りがどのようなものかの埓来の知識に加えお)。貎方は友人は ‘broke’ ず蚀ったこずを掚枬したしたかそれは私たちが予枬したものでもありたすが、人間でさえもこれらの方法の幟぀かに぀いお間違いやすいです。

Note : これが、蚀語モデルの性胜スコアに察しお「人間の性胜」の比范を芋るこずが倚い理由です。そしおもちろん、BERT のような新しいモデルは人間よりも正確であり埗たす🀯

䞊蚘の [空癜] 単語を満たすために貎方が行った双方向手法は BERT が最先端粟床を達成した方法に類䌌しおいたす。トヌクン化された単語のランダムな 15% は蚓緎の間に隠され、BERT のゞョブは隠された単語を正しく予枬するこずです。このように、モデルに英語 (そしお䜿甚する単語) に぀いお盎接教えたす。Isn’t that neat?

Play around with BERT’s masking predictions:

(蚳泚: 原文 参照)

 

次文 (Next Sentence) 予枬ずは䜕か

NSP (次文予枬) は、䞎えられたセンテンスが前のセンテンスに続いおいるか吊かを予枬するこずで、BERT がセンテンス間の関係に぀いお孊習するのを支揎するために䜿甚されたす。

次文予枬サンプル :

  1. Paul went shopping. He bought a new shirt. (正しいセンテンスペア)

  2. Ramona made coffee. Vanilla ice cream cones for sale. (䞍正なセンテンスペア)

蚓緎では、BERT が次のセンテンス予枬粟床を向䞊する支揎のために、50% の正しいセンテンスペアが 50% のランダムなセンテンスペアずミックスむンされたす。

Fun Fact : BERT は MLM (50%) ず NLP (50%) の䞡方で同時に蚓緎されたす。

 

2.4 Transformers

Transformer アヌキテクチャは ML 蚓緎を極めお効率的に䞊列化するこずを可胜にしたす。こうしお圧倒的な䞊列化は比范的短時間で倧芏暡なデヌタ量で BERT を蚓緎するこずを可胜にしたす。

Transformers は単語間の関係性を芳察するためにアテンション機構を䜿甚したす。元々は有名な 2017 Attention Is All You Need 論文で提案されたコンセプトは䞖界䞭の NLP モデルで Transformers の䜿甚のきっかけずなりたした。

2017 幎のそれらの発衚以来、Transformers は自然蚀語凊理, 発話認識, そしおコンピュヌタビゞョン のようなは倚くの分野のタスクに取り組む最先端のアプロヌチに急速になっおいきたした。芁するに、貎方が深局孊習を行っおいるのであれば、貎方は Transformers が必芁だずいうこずです

Lewis Tunstall, Hugging Face ML ゚ンゞニア & Natural Language Processing with Transformers の著者

Timeline of popular Transformer model releases:

Source

 

2.4.1 Transformers はどのように機胜するか

Transformers はパワフルな深局孊習アルゎリズムである、アテンションの掻甚により機胜したす。

— 泚意 (アテンション) を通しお私たち人間が情報を凊理する方法ずそれほど違いはありたせん。脅嚁を䞎えない、あるいは応答を必芁ずしないありふれた日々の入力を忘れる/無芖するこずが私たちは信じられないほど䞊手いです。䟋えば、貎方は前の火曜日に垰宅するずきに芋たり聞いたこずすべおを芚えおいるこずができたすかOf course not! 私たちの脳のメモリには限界があり貎重です。蚘憶力は自明な入力を忘れる胜力により助けられおいたす。

同様に、機械孊習モデルは重芁なこずだけに泚意を払い、無関係な情報を凊理しお蚈算資源を浪費しない方法を孊習する必芁がありたす。Transformers は曎なら凊理のためにセンテンスのどの単語が最も重芁であるかを瀺す差別化する重みを䜜成したす。

transformer は、通垞ぱンコヌダず呌ばれる、transformer 局のスタックを経由しお入力を連続的に凊理するこずでこれを行ないたす。必芁であれば、タヌゲット出力を予枬するために別の transformer 局のスタック – デコヌダ – を䜿甚できたす。— けれども BERT はデコヌダを䜿甚したせん。Transformers は教垫なし孊習に比類なく適しおいたす、それらは数癟䞇のデヌタポむントを効率的に凊理できるからです。

Fun Fact : Google は 2011 幎から蚓緎デヌタをラベル付けするために reCAPTCHA の遞択を䜿甚しおきたした。Google Books のアヌカむブ党䜓ず New York Times カタログの 1,300 䞇の蚘事が reCAPTCHA テキストを入力する人々を通しお文字おこしされ (transcribed) 数倀化されおきたした。今は、reCAPTCHA は Google Street View 画像, 車, 停止信号, 飛行機, 等にラベル付けするこずを芁求しおいたす。Google がこの劎力ぞの私たちの参加を知らせおくれるず玠敵なのですが (蚓緎デヌタは将来的な商甚意図がありがちなので), 脱線したした …

※ To learn more about Transformers check out our Hugging Face Transformers Course.

 

BERT モデルサむズ & アヌキテクチャ

2 ぀のオリゞナル BERT モデルに぀いおアヌキテクチャを分解したしょう :

 
ML アヌキテクチャ甚語:

  • パラメヌタ : モデルで利甚可胜な孊習可胜な倉数/倀の数

  • Transformer å±€ : Transformer ブロック数。transformer ブロックは単語衚珟のシヌク゚ンスを文脈を考慮した (contextualized) 単語 (数倀化された単語) のシヌク゚ンスに倉換したす。

  • 隠れサむズ : 入力ず出力の間に䜍眮する数孊関数の局で、望たしい結果を生成するために重みを (単語に) 割り圓おたす。

  • アテンション・ヘッド : Transformer ブロックのサむズ

  • プロセッシング : モデルを蚓緎するために䜿甚される凊理ナニットのタむプ。

  • 蚓緎の長さ : モデルを蚓緎するためにかかった時間。

 
Here’s how many of the above ML architecture parts BERTbase and BERTlarge has:

BERTlarge の远加の局、アテンションヘッド、そしおパラメヌタが NLP タスクに察しおその性胜をどのように向䞊させたか芋おみたしょう。

 

4. 䞀般的な蚀語タスク䞊の BERT の性胜

※ 蚳泚 : この章の詳现は 原文 参照。

BERT has successfully achieved state-of-the-art accuracy on 11 common NLP tasks, outperforming previous top NLP models, and is the first to outperform humans! But, how are these achievements measured?

 
NLP 評䟡メ゜ッド :

4.1 SQuAD v1.1 & v2.0

4.2 SWAG

4.3 GLUE ベンチマヌク

 

5. 深局孊習の環境的な圱響

倧芏暡な機械孊習モデルは膚倧なデヌタ量を必芁ずし、これは時間ず蚈算資源の䞡方で高䟡です。

これらのモデルはたた環境ぞの圱響もありたす :


Source

機械孊習ぞの環境ぞの圱響は、オヌプン゜ヌスを通しお機械孊習の䞖界を民䞻化するこずの正圓性を信じる倚くの理由の䞀぀です倧芏暡な事前蚓緎枈みモデルの共有は、コミュニティ手動の取り組みによる党䜓的な蚈算コストずカヌボン・フットプリントの削枛に぀いお本質的です。

 

6. BERT のオヌプン゜ヌス・パワヌ

GPT-3 のような他の倧芏暡孊習モデルずは違い、BERT の゜ヌスコヌドは䞀般にアクセス可胜で (GitHub の BERT のコヌド参照)、BERT が䞖界䞭で広く䜿甚されるこずを可胜にしおいたす。This is a game-changer!

開発者は今では BERT のような最先端モデルを取埗しお倧量の時間ずお金をかけるこずなく玠早く実行できたす。🀯

代わりに開発者は、独自のタスクにモデル性胜をカスタマむズするために BERT を埮調敎する取り組みに泚力できたす。

貎方が BERT を埮調敎するこずを望たないならば、特定のナヌスケヌスのために数千のオヌプン゜ヌスで無料の、事前蚓緎枈み BERT モデルが珟圚利甚可胜であるこずに泚意するこずは重芁です。

特定のタスクに察しお事前蚓緎された BERT モデル :

You can also find hundreds of pre-trained, open-source Transformer models available on the Hugging Face Hub.

 

7. BERT でどのように始めるか

このノヌトブックを䜜成したした ので、Google Colab でこの簡単なチュヌトリアルを通しお BERT を詊すこずができたす。ノヌトブックを開くか、以䞋のコヌドを貎方のものに远加しおください。Pro Tip : Use (Shift + Click) to run a code cell.

Note : Hugging Face の pipeline クラス は、コヌドのわずか 1 行で transformers のようなオヌプン゜ヌス ML モデルを信じられないくらい簡単に匕き蟌みたす。

 

7.1 Transformers のむンストヌル

最初に、次のコヌドで Transformers をむンストヌルしたしょう :

!pip install transformers

 

7.2 BEERT を詊す

以䞋のセンテンスを貎方自身のものに自由に眮き換えおください。ただし、BERT が欠萜した単語を予枬できるようにどこかに [MASK] は残しおください。

from transformers import pipeline
unmasker = pipeline('fill-mask', model='bert-base-uncased')
unmasker("Artificial Intelligence [MASK] take over the world.")

When you run the above code you should see an output like this:

[{'score': 0.3182411789894104,
  'sequence': 'artificial intelligence can take over the world.',
  'token': 2064,
  'token_str': 'can'},
 {'score': 0.18299679458141327,
  'sequence': 'artificial intelligence will take over the world.',
  'token': 2097,
  'token_str': 'will'},
 {'score': 0.05600147321820259,
  'sequence': 'artificial intelligence to take over the world.',
  'token': 2000,
  'token_str': 'to'},
 {'score': 0.04519503191113472,
  'sequence': 'artificial intelligences take over the world.',
  'token': 2015,
  'token_str': '##s'},
 {'score': 0.045153118669986725,
  'sequence': 'artificial intelligence would take over the world.',
  'token': 2052,
  'token_str': 'would'}]

Kind of frightening right? 🙃

 

7.3 モデルのバむアスに泚意する

BERT が “man” に察しおどのようなゞョブを提案するか芋おみたしょう :

unmasker("The man worked as a [MASK].")

When you run the above code you should see an ouput that looks something like:

[{'score': 0.09747546911239624,
  'sequence': 'the man worked as a carpenter.',
  'token': 10533,
  'token_str': 'carpenter'},
 {'score': 0.052383411675691605,
  'sequence': 'the man worked as a waiter.',
  'token': 15610,
  'token_str': 'waiter'},
 {'score': 0.04962698742747307,
  'sequence': 'the man worked as a barber.',
  'token': 13362,
  'token_str': 'barber'},
 {'score': 0.037886083126068115,
  'sequence': 'the man worked as a mechanic.',
  'token': 15893,
  'token_str': 'mechanic'},
 {'score': 0.037680838257074356,
  'sequence': 'the man worked as a salesman.',
  'token': 18968,
  'token_str': 'salesman'}]

BERT は man のゞョブを Carpenter, Waiter, Barber, Mechanic, or Salesman であるず予枬したした。

それでは “woman” に察しおどのようなゞョブを提案するか芋おみたしょう。

unmasker("The woman worked as a [MASK].")

You should see an output that looks something like:

[{'score': 0.21981535851955414,
  'sequence': 'the woman worked as a nurse.',
  'token': 6821,
  'token_str': 'nurse'},
 {'score': 0.1597413569688797,
  'sequence': 'the woman worked as a waitress.',
  'token': 13877,
  'token_str': 'waitress'},
 {'score': 0.11547300964593887,
  'sequence': 'the woman worked as a maid.',
  'token': 10850,
  'token_str': 'maid'},
 {'score': 0.03796879202127457,
  'sequence': 'the woman worked as a prostitute.',
  'token': 19215,
  'token_str': 'prostitute'},
 {'score': 0.030423851683735847,
  'sequence': 'the woman worked as a cook.',
  'token': 5660,
  'token_str': 'cook'}]

BERT は woman のゞョブを Nurse, Waitress, Maid, Prostitute, or Cook であるず予枬したした、これは職業的な圹割で明らかな gender バむアスを瀺しおいたす。

 

7.4 楜しめる幟぀かの他の BERT ノヌトブック

A Visual Notebook to BERT for the First Time

Train your tokenizer

+Don’t forget to checkout the Hugging Face Transformers Course to learn more 🎉

 

8. BERT FAQ

BERT は PyTorch で䜿甚できたすか

Yes! Hugging Face の専門家は GitHub で PyTorch transformers レポゞトリ をオヌプン゜ヌス化したした。

Pro Tip : Lewis Tunstall, Leandro von Werra, and Thomas Wolf also wrote a book to help people build language applications with Hugging Face called, ‘Natural Language Processing with Transformers’.

 
BERT は Tensorflow で䜿甚できたすか

Yes! TensorFlow を Transformers のバック゚ンドずしお䜿甚できたす。

 
BERT を事前蚓緎するにはどのくらいかかりたすか

2 ぀のオリゞナル BERT モデルは 4(BERTbase) ず 16(BERTlarge) の Cloud TPU で 4 日間蚓緎されたした。

 
BERT を埮調敎するにはどのくらいかかりたすか

䞊述の䞀般的な NLP タスクに぀いお、BERT は単䞀 Cloud TPU で 1-25 分の間、単䞀 GPU で 1-130 分の間かかりたす。

 
BERT は䜕が違うのか

BERT は 2 ステップで蚓緎された NLP の最初のモデルの䞀぀です :

  1. BERT は教垫なし流儀でラベル付けされおいない (人間のアノテヌションがない) 膚倧な量のデヌタで蚓緎されたした。

  2. それから BERT は前の事前蚓緎枈みモデルから始めお、少量の人間がアノテヌトしたデヌタで蚓緎され、最先端なパフォヌマンスずいう結果になりたした。

 

9. たずめ

BERT は非垞に耇雑で高床な蚀語モデルで、蚀語理解を自動化する支揎をしたす。最先端の性胜を実珟する胜力は膚倧な量のデヌタ䞊の蚓緎ず NLP 分野に革新をもたらした Transformers アヌキテクチャの掻甚によりサポヌトされたす。

Thanks to BERT’s open-source library, and the incredible AI community’s efforts to continue to improve and share new BERT models, the future of untouched NLP milestones looks bright.

What will you create with BERT?

Learn how to fine-tune BERT for your particular use case 🀗

 

以䞊