# 学生・若手研究者のための BERT ワークショップ

中山 功太 ${ }^{\dagger, \dagger \dagger}$ ・渋木 英潔 ${ }^{\dagger \dagger}$ ・関根 聡 $\dagger$

## 1 はじめに

近年，深層学習を用いた自然言語処理に多くの注目が集まっており，その成果が多く報告されている。それに伴い，社会でも様々なシステムに深層学習を取り入れたいといった欲求が年々強くなっているように感じる. しかし, 深層学習のバックグラウンドには, プログラミングの知識のみでなく, 線形代数や確率, 微分積分といった数学的知識が潜んでおり, これが初学者から敬遠されてしまう要因となっている。一方で，深層学習を取り巻く環境も年々変化しており， Pytorch $^{1}$ や TensorFlow ${ }^{2}$ といった深層学習の技術を容易に扱える Python ライブラリが整備されつつあるため，バックグラウンドを深く理解せずとも深層学習の実装を行うことが可能となつてきている，当然バックグラウンドをしっかりと理解することに越したことはないが，実際に一度タスクを解いてみることはその理解のために非常に重要であり，初学者の心的要因をいくらか軽減できると我々は考えている。 そのため, 我々は初学者へ向けたワークショップを行う機会を設けることとし， 2022 年度には文章分類タスクと固有表現抽出タスクを対象としたワー クショップ行った。ワークショップはタスクごとに前編後編に分け計 4 回行っており, 分類夕スクでは 381 人と 200 人, 固有表現抽出タスクでは 201 人と 99 人の参加登録があった. また,質疑応答に用いたチャットッールの参加人数は 349 人と非常に大盛況であった，我々はワークショップで使用した資料と当日の録画をホームページにて公開している3．本記事では実施したワークショップの解説と報告を行う.

## 2 ワークショップについて

## 2.1 目的

本ワークショップには 2 つの目的がある，前者は，深層学習の更なる普及のため，初学者の助け舟になるような機会を設けること。これは序章で述べた通りである。後者は，我々が主催
^{1}$ https://pytorch.org

2 https://www.tensorflow.org

3 http://shinra-project.info/bert_workshop_portal/
}

している森羅プロジェクト (Sekine et al. 2019) を広めることである. 本プロジェクトは「協働による知識構築」を旗印に 2018 年に発足され, 参加者の力を借りて協働で Wikipedia の構造化を行うといった評価型ワークショップを主催している。これまで Wikipediaの分類, 属性値抽出, 属性值リンキングといった 8 個のタスクが実施され, 国内外の多くの組織や企業が参加している。我々としてはこの機会が森羅プロジェクトやWikipediaの構造化に興味を持つきっかけとなればと考えている。

## 2.2 対象

本ワークショップの対象は, 深層学習を用いた自然言語処理に取り組みたい学生や研究者,社内システムに当技術を取り入れたい社会人である。空口を広げるため，自然言語処理に対する事前知識を持たない参加者も想定した。より深く内容を理解するためには，プログラミングに関する基礎知識を保持していること，内積と微分をある程度理解していることが好ましいが，配布するスクリプトの要所要所にコメントを記し, 深層学習モデルの解説においてもなるべく数式より図的説明に重点を置くことで，上記の条件を達成せずとも理解できるように務めた.

## 2.3 タスク

本ワークショップにおいて参加者が取り組むタスクを選定する上で以下の 4 点を考慮した.

・ 初学者でも取り組めるような簡単かつシンプルなタスクであること.

・ 計算コストが小さく深層学習モデルの学習が短時間で終わること.

・ 社会的に需要の高いタスクであること。

・森羅プロジェクトへの関心に繋がるタスクであること。

社会的に需要の高いタスクとして QA タスクや対話タスクも挙げられるが, 初学者にはハードルが高いうえ，学習に時間を要する場合もあるため，今回はカテゴリー分類タスクと固有表現抽出タスクを扱うことした，配布スクリプトを書き換えることで，前者タスクは感情分類などのその他の分類タスクに，後者タスクは固有表現抽出だけでなく情報抽出といったタスク等に応用が可能であるため, 非常に需要が高いと考えている.

カテゴリー分類タスク本タスクでは，森羅プロジェクトでも扱っているWikipediaののテゴリー分類に取り組む．参加者は入力としてWikipedia の記事が与えられ，“人名”や “地名”といった拡張固有表現階層 (Sekine et al. 2002) で定義された約 200 件のカテゴリーへの分類を行う．本タスクは 1 つの記事に対して 2 つ以上のカテゴリーが付与される場合があるためやや複雑であるが, 複数力テゴリーが付与される記事が全体の $1 \%$ 未満であることを加味し, これら記事を学習データから除外することで簡易化を図った 4 . 本タスクでは膨大な学習データが存在す


るが, 簡易化のため 5000 件の学習データと, 2000 件の評価データを配布した。評価関数には,森羅プロジェクトと同じマイクロ平均 $\mathrm{F} 1$ 値を採用している.

固有表現抽出タスク本タスクでは, Wikipedia 記事に対する固有表現抽出に取り組む。デー タセットとして, “Wikipediaを用いた日本語の固有表現抽出データセット”(近江 2021) $)^{5}$ 用いる.日本語の固有表現抽出は, 前処理で分割された各単語に対して元の固有表現のスパンを割り当てる必要があり実装がやや煩雑になってしまう，そのため, 配布するスクリプトに細かくコメントを付与することで，前処理部分が参加者の障害にならないよう務めた．本タスクとしては解き方が複数あるが, 最も用いられており且つ実装が容易であるIOB2 夕グの分類形式で解くこととした. 元のデータセットは学習データと評価データが分けられていないため, 我々の手元で分割し参加者に配布した．評価関数には，一般的に用いられている固有表現スパンの完全一致 F1 值を使用した.

## 2.4 深層学習モデル

対象を初学者としているため, 深層学習モデルの選択は非常に重要である。考慮した条件は以下の通りである。

・社会的に関心の高いモデルであること.

・構造がシンプルであり実装時に扱いやすいモデルであること.

・高い性能を持つモデルであること.

文章生成や系列ラベリングなどに使用される LSTM や Transformer といった生成型のモデルもその性能が評価されているものの, 構造と実装がやや煩雑であるため今回は扱わず，今回のワークショップでは構造の殆どが内積でシンプルに構成されており, 且つ扱いやすいモデルである BERT (Devlin et al. 2019) を対象とした. BERT は, 近年必須となっている事前学習という手法を取り入れており, その性能が評価されている。事前学習とは, Wikipedia やウェブテキストなどの大規模コーパスを用いて深層学習モデルを学習し, 言語共通の大域的特徴を獲得した後, 文書分類や固有表現抽出などの後続のタスクで再学習することで性能の向上を図る手法である。一般的に事前学習には膨大な計算コストや時間を要する場合が多いが, 近年は事前学習済みモデルのパラメータ公開が主流となっており, 日本語を含む様々な言語で利用可能となっている。アメリカに本社を置く Hugging Face社は, これらの公開された事前学習済みモデルパラメータを収集し, 画一的に扱うことができる Transformers ${ }^{6}$ というライブラリを公開しており，自然言語処理タスクへの転用がより容易になっている．本ライブラリの使い方を覚えることは参加者にとって有益であると考えたため, 今ワークショップでも使用することとした.


## 2.5 実行環境

一般的に深層学習モデルの学習には高価なグラフィックボードを必要とする上, 環境構築に専門性が求められるため, 初学者に実行環境の事前準備を要することは現実的ではない. そのため, 本ワークショップでは Google 社が提供している Colab7 というクラウドプラットフォームを利用した， Colabでは，ブラウザ上から Google 社が提供する計算環境にアクセスでき，かつ無料8でグラフィックボードを使用して計算を行うことが可能である。また, Colab は, Python のノートブック形式をサポートしており，マークダウンでコード中に説明を記載できるため実行しながら学ぶといった本ワークショップに最適である。実際にワークショップで使用したスクリプトの一部を図 1 に示す.

## 2.6 リーダーボード

参加者が各タスクに対して機械学習を適用しその性能を競い合うといった評価型コンペティションは近年多くの人が取り組んでいる。我々もコンペティション形式を踏襲することで楽しみながら学習できると考え, 深層学習モデルの予測結果の投稿を行うことでその評価値がランキング形式で掲載されるといったリーダーボードを用意し，参加者に投稿を促した．実際のリー

## 学習の流れ

1. データローダーから取り出されたバッチをモデルに入カし、モデル内部で誤差計算した上で誤差を返す。

2. 誤差逆伝播を行い各パラメーターの勾配を計算する。

3. オプティマイザーが勾配をもとにモデルのパラメーターを更新する。

4. スケジューラーによりオプティマイザーの学習率を下げる。

以上をデータローダーからバッチを一回り取り出すまで行う。

つまりデータセット内の全てのデータが1回ずつ学習に使用された状態である。

これを 1 エポックと呼ぶ。

1エポック終わった段階で、開発データを用いて評価を行う。

過去の評価値を上回っていた場合、その時のパラメーターを保存します。

学習は $E P O C H$ に指定した回数繰り返されます。

— import tqdm \# 進捗バーを出すためのパッヶージ

if DO_TRAIN: \# 学習を行う場合

best_score $=$ None

for epoch in tqdm. notebook.tqdm(range(EPOCH), desc="Epoch"): \# EPOCH回繰り返す model.train() \# モデルを学習モードにする

for batch in tqdm.notebook.tqdm(train_dataloader, desc="Training")：\# 学習用データローダーからバッチを取り出す

outputs, loss $=$ modell

input_ids=batch["input_ids"].to(DEVICE)，\# to(DEVICE)で入力をGPUに送信する

token_type_ids=batch ["token_type_ids"]. to(DEVICE),

attention_mask=batch ["attention_mask"]. to(DEVICE),

labels=batch ["labels"]. to(DEVICE),

) \# モデルの予測結果と、モデル内部で計算された誤差を得る

図 1 実際にワークショップで使用したスクリプトの一部


 \\

図 2 分類タスクリーダーボードの一部

ダーボードを図 2 に示す 9 .より多くの投稿を促すため, 配布しているスクリプトでは, リー ダーボードへの投稿形式の変換を行いファイルに出力するところまで実装している.

## 2.7 その他

ワークショップを行うにあたり，その他工夫したことを以下に示す.

動画公開実施後にワークショップの録画を公開することで，ワークショップの内容を再度振り返りながら学習できるようにした.

トライアル期間ワークショップを前編と後編に分け，その間に 1 週間から 1 ヶ月程度のトライアル期間を設けた，前編では一通りの解説を行っている．トライアル期間中, 参加者は動画等で内容を振り返り, 後編で再度質問することができるため, 自分のペースで内容を理解することができる．また，期間中にモデルを改良し結果をリーダーボードに投稿することで他の参加者と競い合うことができるため, 参加者の学習意欲向上に繋がる. 加えて後編に改良内容を報告する機会を設けることで，発表者のモチベーションを高め，その他参加者に対しては更なる学習の機会を増やすことができる.

チャットツールによる補助ワークショップ中やトライアル期間中はチャットツール 10 において常時質問を受け付けており，前編と後編の間で参加者がドロップアウトすることがないようにサポートを行った。

## 3 実施後報告

## 3.1 参加状況

前章で述べた通り, 本ワークショップは各タスクごとに前編後編の 2 回, 計 4 回実施したが,分類タスクでは 381 人と 200 人, 固有表現抽出タスクでは 201 人と 99 人の参加登録があった.


ワークショップ中の実際の参加人数は正確に記録していないが，登録者のうち 8,9 割近くが参加していたようである。これはワークショップの間口を広げた成果であり，また，初学者向けワークショップの需要を示すものである．特に後編のモデル改良報告では社会人の方の発表が多く, 社会における深層学習への関心の高さが窺えた。

## 3.2 リーダーボード

リーダーボードに対しては，分類タスクでは 50 人以上，固有表現抽出タスクでは 11 人の投稿があった. 固有表現抽出タスクの投稿人数が少ないが，本タスクは分類タスクの後に実施されたため，多くの参加者が分類タスクへの投稿で満足した結果であると思われる。それぞれのタスクで 6,7 割以上の参加者が，配布した実装の評価値を超えており，リーダーボードにより参加者の自発的な学習を促すことができていたと考えられる.

## 3.3 参加者アンケート

参加者に任意でアンケートをお願いしたところ，ワークショップ全体で 93 件の回答が得られた. ワークショップの説明の分かりやすさを 5 段階で評価する項目では, 1 及び 2 が全体の $0 \%, 3$ が $11 \%, 4$ が $46 \%, 5$ が $43 \%$ であった．全体の $89 \%$ が 4 以上を付けており，殆どの方に内容を理解いたたくことができた。自由記述欄も設けており，「無料なのがおかしいぐらい質の高いワークショップだったと思います。」「BERT のコンポーネントの説明やコードの説明が詳しく説明されていて、とても分かりやすかったです。」等の好評を多く頂いた．また，「スライドは見やすかったのですが、難しすぎる上にコーディングでは線形変換など説明されている殆どがライブラリ化されていて動きが見えないのが残念でした。」といったご指摘を頂いた．今回のワークショップは，深層学習のバックグラウンドを完全に理解せずとも一度動かしてみることで参加者の学習意欲を育むことを目的としていたため，やや煩雑である Transformer ライブラリの中身については言及していなかった。更に一歩踏み込んだ内容に対して興味を持っていただくことが出来たと考え，要望があればライブラリの中身を展開しながらコードから BERT を読み解くワークショップを別途設けようと考えている。森羅プロジェクトに対しての興味を問う項目では， 2 割程度が興味を示す回答をしており，実際に 5 人の方が今回を機に新たに森羅プロジェクトに参加した。これは我々側の目的が達成されたことを示している。

## 4 おわりに

今回のワークショップは，参加者側は最先端の技術を身につけることを目的とし，主催者側は特定の研究テーマに対して社会の注目を集めることを目的にしたものであった. 実施後に行われたアンケート結果等により双方の需要が達成されたことが示された。深層学習の発展によ

り様々な技術が考案されているが, これら技術の社会実装を進めるための新たな橋渡しとして今回の様なワークショップは非常に有用であると言える。我々は今後とも森羅プロジェクトの普及を掲げ，様々なワークショップを主催していきたいと考えている．また，今回の様なワー クショップが分野を超えて広く普及していくことを願う.

## 謝 辞

“Wikipediaを用いた日本語の固有表現抽出データセット”のワークショップでの利用について快諾いたたいたストックマーク株式会社の近江崇宏様に深く感謝します.

## 参考文献

Devlin, J., Chang, M.-W., Lee, K., and Toutanova, K. (2019). "BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding." In Proceedings of the 2019 Conference of the North American Chapter of the Association for Computational Linguistics: Human Language Technologies, Volume 1 (Long and Short Papers), pp. 4171-4186, Minneapolis, Minnesota. Association for Computational Linguistics.

近江崇宏 (2021). Wikipedia を用いた日本語の固有表現抽出のデータセットの構築. 言語処理学会第 27 回年次大会発表論文集, pp. 350-352. [T. Omi et al. (2021). Wikipedia wo Mochiita Nihongo no Koyuhyogen Chushutsu no Deta Setto no Kochiku. The 27th Annual Meeting of the Association for Natural Language Processing, pp. 350-352.].

Sekine, S., Kobayashi, A., and Nakayama, K. (2019). "SHINRA: Structuring Wikipedia by Collaborative Contribution." In Automated Knowledge Base Construction (AKBC).

Sekine, S., Sudo, K., and Nobata, C. (2002). "Extended Named Entity Hierarchy." In Proceedings of the 3rd International Conference on Language Resources and Evaluation (LREC'02), Las Palmas, Canary Islands - Spain. European Language Resources Association (ELRA).

## 略歴

中山功太：理化学研究所革新知能統合研究センター・言語情報アクセスチー

ムリサーチアソシエイト, 筑波大学システム情報工学研究群博士課程に在学中. 2020 年豊橋技術科学大学情報・知能工学系修士号. 専門は深層学習, 自然言語処理. 特にアンサンブル学習, 固有表現抽出, 情報抽出の研究に従事.

渋木英潔：2002 年北海道大学大学院工学研究科電子情報工学専攻博士後期課程了. 博士 (工学). 2006 年北海学園大学大学院経営学研究科経営学専攻博士
後期課程了. 博士 (経営学). 横浜国立大学環境情報研究院産学連携研究員,国立情報学研究所特任研究員などを経て, 現在,（株）BESNA 研究所研究部主任研究員. 自然言語処理に関する研究に従事. 言語処理学会, 情報処理学会各会員.

関根聡：理化学研究所革新知能統合研究センター・言語情報アクセスチームチームリーダー, 1992 年英国マンチェスター大学計算言語学部修士号. 1998 年ニューヨーク大学コンピューターサイエンス学部博士号. その後, ニュー ヨーク大学研究准教授に就任. 松下電業産業株式会社（現パナソニック）, 楽天技術研究所ニューヨークなどでの研究職を歴任. 専門は自然言語処理. 特に情報抽出, 固有表現抽出, 知識構築の研究に従事.