# 汎用事前学習モデルを用いたアルゴリズムの手続き自動生成

大西朔永 ${ }^{1}$ 椎名広光 ${ }^{2}$
1 岡山理科大学大学院総合情報研究科 2 岡山理科大学総合情報学部
i20im01os@ous.jp shiina@mis.ous.ac.jp

## 概要

プログラム作成においては，プログラムの目的を 必要な処理に分解する論理的思考力が重要となる. しかし，プログラム作成は論理的思考力に加えて， プログラム言語の知識等も同時に必要となる. これ まで，アルゴリズムを考える力である論理的思考力 を養う手続き学習システムを開発してきた. 手続き 学習システムの問題作成等では, 問題文と必要な処理に分解した手続きを大量に作成する必要がある.論理的思考力には汎用知識が必要である場合も多い が，アルゴリズム手続き生成の大規模な学習データ の開発は容易ではない. 本研究では, 汎用事前学習 モデルを用いた問題文からプログラム手続きを生成 する手法を提案する。

## 1 はじめに

小学校では 2020 年からプログラミング教育 [1] が 導入されており，その目的は主に論理的思考力の育成である. 論理的思考力は, 様々な問題を解決する ために必要な処理内容や処理順序を考える能力で ある. 論理的思考力を育成する研究では, 手作業に よるアルゴリズム学習の研究 [2] がある. 我々は論理的思考力を養う手続き学習システム [3] を開発し てきたが，プログラムの概要を表す問題文と手続き が大量に必要となる. 人手によるプログラム手続き の作成は，コストが高く，容易ではない. そこで，我々はこれまでにプログラムのソースコードからプ ログラム手続きを生成する手法 [4]，ソースコード を用いないプログラムの問題文からプログラム手続 きを生成する手法 [5] を提案している.

近年，大規模なデータを用いた大規模な事前学習 モデルの研究が盛んに行われている。そして，その 学習済みモデルを個々のタスクに fine-tuning する手法が提案され, 様々な自然言語処理分野で成果を出 している。一方, 本研究では学習に利用できるデー タは小規模であり, 大規模な事前学習モデルの構築
は困難である．そこで，ソースコードを用いない問題文からのプログラム手続きの自動生成において,汎用事前学習モデルを用いた Seq2Seq[6, 7, 8] を小規模なデータに fine-tuning する手法を提案する.プロ グラム手続きの自動生成には，問題文を必要な手続 きに分解する論理的思考力が必要である. 入力され る問題文から特徴を捉えた分散表現が作成されない と，論理的思考力を発揮できない. 汎用事前学習モ デルは大規模なコーパスから言語理解の能力に加え $\tau$ ，汎用知識も獲得していると考えられる。プログ ラムの問題文からプログラム手続きを生成する手法 に対して, 汎用事前学習モデルを適用することで,生成する手続きの改善を図っている.

また, 本研究では学習に小規模なデータを用い るため，手続き生成タスクの学習による汎用事前学習モデルの fine-tuning が十分でないと考えられ る.そこで，fine-tuning した汎用事前学習モデルを 用いたプログラム手続きの生成手法を提案する．汎用事前学習モデルである BERT[9] 単体の fine-tuning を pre-training と同様の方法で行い，プログラムの問題文というドメインへの適応を先に図る. そして, fine-tuning した BERTを用いてプログラム手続きの 生成タスクを学習することで，タスクへの適応を行 う二段階の手法である.

## 2 関連研究

プログラミング教育の分野において，エラーを可視化する学習支援ツールの研究 [10] や操作ログを用 いた初心者向け教育の研究 $[11,12]$, カードの操作 を基本とした学習システムの研究 [13] が行われてい る. プログラミング力と論理的思考力との相関に関 する分析 [14] では, 論理的思考力と言語能力を必要 とする論理的文章作成力とプログラミング力の関係 を分析し，プログラミング力は論理的思考力を主に 必要とすることが示されている.

汎用事前学習モデルである BERT は，双方向の Transformer[15]を用いたモデルである.トークンの

並び替え前

図 1 手続き学習システム

分散表現を出力する点は Word2Vec[16] と同様であ るが，BERT はコンテキストを考慮した分散表現が 得られる. 日本語に対応した BERT の事前学習モデ ルは幾つか公開されており, 本研究では東北大学の 乾研究室が公開している BERT[17]を利用している.

事前学習済みの BERTをニューラル機械翻訳に利用した研究 [18] では，Transformer ベースの機械翻訳 モデルの Encoder 部分を BERT に置き換えるモデル が提案されている.

## 3 手続き学習システム

プログラムには，プログラムの目的を達成するた めに必要な手続きを正しい順序で記述する必要があ る. 我々は，手続きをプログラムが動作する順序に 並び替える問題を解くことで，論理的思考力を養う システムを開発してきた. 手続き学習システムを図 1 に示す. 手続き学習システムでは，最初にプログ ラムの問題文と必要な手続きを左の画面のように表示する. 例の為替のプログラムでは，問題文と 6 個 の手続きが表示されている。次にユーザは手続きを プログラムが動作する順序に並び替える．右の画面 はユーザが並び替えた後の画面である．最後に手続 きの順序の正解，不正解を表示する。

## 4 プログラム手続きの生成

## 4.1 GRU による Seq2Seq を用いたプログ ラム手続きの生成 (ベースライン)

ベースラインとして，GRU[19]による Seq2Seqを 用いた問題文からプログラム手続きを生成する手法について述べる. プログラムの問題文とプログ ラム手続きを対訳データとして，Seq2Seqを学習す る. GRUによる Seq2Seqを用いた問題文からプロ

図 2 GRU による Seq2Seq を用いた問題文からプログラ ム手続きを生成するモデルの構造

図 3 BERT を用いた問題文からプログラム手続きを生成 するモデルの構造

グラム手続きを生成するモデルの構造を図 2 に示 す.また，モデルの定式化を式 (1) に示す. Encoder では問題文のトークン $T o k_{1}^{E}, \ldots, T o k_{N}^{E}$ を順に入力 し, 問題文全体の特徵を捉えたべクトル $h_{N}$ を作成 する. そして，Decoder がそのベクトル $h_{0}^{\prime}=h_{N}$ を 用いて，問題文に対応するプログラム手続きのトー クン $T o k_{2}^{D}, \ldots, T o k_{M}^{D}$ を生成する. $h_{t-1}^{\prime}$ は GRU の前 の隠れ状態である. ただし，隠れ状態の初期値 $h_{0}^{\prime}$ は Encoder 側の GRU の最後の隠れ状態 $h_{N}$ である.

$
\begin{aligned}
& p\left(\operatorname{Tok}_{2}^{D}, \ldots, \operatorname{Tok}_{M}^{D} \mid \operatorname{Tok}_{1}^{E}, \ldots, \operatorname{Tok}_{N}^{E}\right) \\
= & \prod_{t=2}^{M} p\left(T_{0} k_{t}^{D} \mid h_{t-1}^{\prime}, T_{0} k_{1}^{D}, \ldots, T o k_{t-1}^{D}\right)
\end{aligned}
$

英語と日本語の翻訳等とは異なり，短文 (問題文) から長文 (プログラム手続き)を生成するため，抽象的な情報を具体的な情報に分解する必要がある.事前学習をしていないため，大規模なコーパスから 得られる汎用知識は期待できず，分散表現に含まれ る情報は対訳データに含まれる情報のみとなる。つ まり，生成する際に必要な汎用知識等の情報が不足 し，モデルは問題文をプログラム手続きに分解する 論理的思考力を発揮できないと考えられる.

## 4.2 汎用事前学習モデルを用いたプログラ 厶手続きの自動生成

本研究では，汎用事前学習モデルの BERTを用い た問題文からプログラム手続きを生成する手法を 提案する．BERTを用いた問題文からプログラム手続きを生成するモデルの構造を図 3 に示す. モデル

図 4 BERT の pre-training と同様の方法による BERT 単体 の fine-tuning

図 5 fine-tuning した BERT を用いた問題文からプログラ ム手続きを生成するモデルの構造

の入出力はベースラインの手法と変わらず，プログ ラムの問題文とプログラム手続きを対訳データと して，モデルを学習する. ベースラインの Seq2Seq では GRUを用いた Encoder を使用しているのに対 し，このモデルでは Encoder を BERT に置き換えて いる. 汎用事前学習モデルである BERT はコンテキ ストを考慮した分散表現を作成でき，汎用知識も獲得していると考えられる. BERTを用いることで， Decoder が利用できる分散表現の情報が増え，生成 するプログラム手続きが改善されると考えている.

## 4.3 fine-tuning した汎用事前学習モデル を用いたプログラム手続きの自動生成

汎用事前学習モデルの BERT を用いたプログラム 手続きの生成手法では，プログラム手続きの生成と いうタスクを学習する過程で BERT も fine-tuning し ている。つまり，プログラム手続きの生成という夕 スクへの適応に加えて，プログラムの問題文という 特定ドメインへの適応も同時に行っていると捉える ことができる. 本研究では学習に小規模なデータを 用いるため，プログラムの問題文というドメインへ の適応を先に行うことで更なる改善を図れると考 えている. 本手法では，BERT 単体の fine-tuning を BERT の pre-training と同様の方法で行い，特定ドメ インへの適応を図る. そして, fine-tuning した BERT表 1 生成されたプログラム手続きの BLEU による平均評価

を用いてプログラム手続きの生成というタスクを学習することで，タスクへの適応を行う。

BERT の pre-training と同様の方法による BERT 単体の fine-tuning の概要を図 4 に示す. プログラムの 問題文をコーパスとして, fine-tuning 用のデータを 作成している. fine-tuning の手法は pre-training の手法と同様に, Next Sentence Prediction(NSP) と Masked LMを用いている. また， fine-tuning した BERTを 用いた問題文からプログラム手続きを生成するモ デルの構造を図 5 に示す. ベースラインの Seq2Seq の Encoderをプログラムの問題文というドメインに fine-tuning した BERT に置き換えている.

## 5 各モデルの評価

## 5.1 実験環境

評価するモデルは，ベースラインである GRUを 用いた Seq2Seq，BERTを用いた Seq2Seq, fine-tuning した BERTを用いた Seq2Seq の 3 種類である. デー タセットは，大学の情報科学科の講義で使用された $\mathrm{C}$ 言語のプログラムの問題文とプログラム手続きの ペア 46 個を用いた. 評価方法には，小規模データ である点を考慮し，5-Fold Cross Validationを用いた。各テストの平均を評価値としている。評価指標には 自動機械翻訳評価指標である BLEU[20]を用い，生成したプログラム手続きを評価した。

## 5.2 評価指標 BLEU を用いた評価

生成されたプログラム手続きの BLEU による平均評価を表 1 に示す. Encoder に BERTを用いたモ デルは，GRU の Encoder を用いたモデルと比較し て, BLEU が約 0.06 向上している. 汎用事前学習 モデルである BERT の有効性が確認できた. また， fine-tuning した BERTを用いたモデルでは，BERTを 用いたモデルと比べて，BLEUが約 0.03 向上してい る. あらかじめプログラムの問題文というドメイン に fine-tuning し，タスクの学習と分ける手法が有効 であることが分かる. GRU の Encoder を用いたモデ
表 2 各モデルのプログラム手続きの生成例と評価

 &  & 0.0862 &  & 0.3683 &  & 0.4164 \\

ルと比較すると, BLEUが約 0.09 向上し, 汎用事前学習モデルの効果は大きい.

## 5.3 プログラム手続きの生成例による評価

各モデルのプログラム手続きの生成例と評価を表 2 に示す. GRU の Encoder を用いたモデルは，「整数型変数の宣言」を 6 回繰り返して生成している. 整数値を 2 つ読み込むため, 正しくは fine-tuning した BERT を用いたモデルのように 2 回である. BERT をプログラムの問題文のドメインに fine-tuning した ことで，問題文の特徴を捉える能力が向上したと 考えている。また，GRUの Encoder を用いたモデル は，改行のトークンを繰り返し生成しているため,低いBLEU になっている. 2 つ整数値を比較して 条件分岐をし, 表示する部分の手続きは, GRU の Encoderを用いたモデルでは全く生成できていない. BERTを用いた 2 種類のモデルでは，条件分岐の手続きは生成できていないが，文章の表示は生成でき ている. 全体的には fine-tuning した BERTを用いた モデルが良い生成をしているが，過不足ない手続き の生成には改善が必要である.

## 6 おわりに

本研究では汎用事前学習モデルの BERTを用いた 問題文からプログラム手続きを生成する手法を提案した．BERTを Encoderとして用いることで，汎用知識も含めて問題文の特徴をより捉えた分散表現が得られ, 生成されたプログラム手続きが改善さ れた. さらに, fine-tuning した BERTを用いたプロ
グラム手続きの生成手法を提案した. 本研究では 小規模なデータを用いたため，ドメインとタスク の fine-tuning を分割して行い，ベースラインの GRU を用いた手法と比べ，BLEU で約 0.9 の向上を確認 した. 生成例においては過不足のない手続きの生成には至っていないため, Encoder 側だけでなく, Decoder 側の改善が今後の課題であると考えている.

## 参考文献

[1] Ministry of Education, Culture, Sports, Science and Technology. Elementary school programming education guide (2nd edition). https://www.mext.go.jp/ a_menu/shotou/zyouhou/detail/1403162.htm, 2018. Accessed May. 5, 2020 (in Japanse).

[2] Junko Shinkai, Yoshikazu Hayase, and Isao Miyaji. A trial of algorithm education emphasizing manual procedures. In Gregory Chamblee and Lee Langub, editors, Proceedings of Society for Information Technology \& Teacher Education International Conference 2016, pp. 113-118, Savannah, GA, United States, March 2016. Association for the Advancement of Computing in Education (AACE).

[3] Kohei Sakane, Nobuyuki Kobayashi, Hiromitsu Shiina, and Fumio Kitagawa. Kanji learning and programming support system which conjoined with a lecture. In IEICE Technical Report, Vol. 114 of ET2014-86, pp. 7-12, 2015.

[4] Sakuei Onishi, Akiyoshi Takahashi, Hiromitsu Shiina, and Nobuyuki Kobayashi. Automatic comment generation for source code using external information by neural networks for computational thinking. International Journal of Smart Computing and Artificial Intelligence(IJSCAI), Vol. 4, No. 2, pp. 39-61, 122020.

[5] Sakuei Onishi and Hiromitsu Shiina. Two-stage program procedure generation from problem statements us-
ing the seq2seq combination. In 2021 10th International Congress on Advanced Applied Informatics (IIAI-AAI), pp. 406-412, 2021.

[6] Ilya Sutskever, Oriol Vinyals, and Quoc V Le. Sequence to sequence learning with neural networks. In Advances in Neural Information Processing Systems 27 (NIPS 2014), pp. 3104-3112, 2014

[7] Thang Luong, Hieu Pham, and Christopher D. Manning. Effective approaches to attention-based neural machine translation. In Proceedings of the $\mathbf{2 0 1 5}$ Conference on Empirical Methods in Natural Language Processing, pp. 1412-1421, Lisbon, Portugal, September 2015. Association for Computational Linguistics.

[8] Alexander M. Rush, Sumit Chopra, and Jason Weston. A neural attention model for abstractive sentence summarization. In Proceedings of the 2015 Conference on Empirical Methods in Natural Language Processing, pp. 379-389, Lisbon, Portugal, September 2015. Association for Computational Linguistics.

[9] Jacob Devlin, Ming-Wei Chang, Kenton Lee, and Kristina Toutanova. Bert: Pre-training of deep bidirectional transformers for language understanding. arXiv preprint arXiv:1810.04805, 2018

[10] Haruki Kanamori, Takahito Tomoto, and Takako Akakura. Development of a computer programming learning support system based on reading computer program. In Sakae Yamamoto, editor, Human Interface and the Management of Information. Information and Interaction for Learning, Culture, Collaboration and Business, pp. 63-69, Berlin, Heidelberg, 2013. Springer Berlin Heidelberg.

[11] Koki Okimoto, Shimpei Matsumoto, Shuichi Yamagishi, and Tomoko Kashima. Developing a source code reading tutorial system and analyzing its learning $\log$ data with multiple classification analysis. Artificial Life and Robotics, Vol. 22, No. 2, pp. 227-237, apr 2017.

[12] Shimpei Matsumoto, Koki Okimoto, Tomoko Kashima, and Shuichi Yamagishi. Automatic generation of c source code for novice programming education. In Masaaki Kurosu, editor, Human-Computer Interaction. Theory, Design, Development and Practice, pp. 65-76, Cham, 2016. Springer International Publishing.

[13] Shimpei Matsumoto, Yusuke Hayashi, and Tsukasa Hirashima. Development of a card operation-based programming learning system focusing on thinking between the relations of parts. IEEJ Transactions on Electronics, Information and Systems, Vol. 138, pp. 999-1010, 08 2018.

[14] Michiko Oba, Kei Ito, and Akio Shimogoori. Analysis of correlation between programming skills and technical writing skills. In IPSJ SIG Technical Report, Vol. 2015IFAT-118, pp. 1-4, 2015.

[15] Ashish Vaswani, Noam Shazeer, Niki Parmar, Jakob Uszkoreit, Llion Jones, Aidan N Gomez, Lukasz Kaiser, and Illia Polosukhin. Attention is all you need. In Advances in neural information processing systems, pp. 5998-6008, 2017

[16] Tomás Mikolov, Kai Chen, Greg Corrado, and Jeffrey Dean. Efficient estimation of word representations in vec- tor space. In Yoshua Bengio and Yann LeCun, editors, 1st International Conference on Learning Representations, ICLR 2013, Scottsdale, Arizona, USA, May 2-4, 2013, Workshop Track Proceedings, 2013.

[17] 東北大学乾研究 室. cl-tohoku/bertbase-japanese-whole-word-masking . hugging face. https://huggingface.co/cl-tohoku/ bert-base-japanese-whole-word-masking, 2020.

[18] Kenji Imamura and Eiichiro Sumita. Recycling a pretrained BERT encoder for neural machine translation. In Proceedings of the 3rd Workshop on Neural Generation and Translation, pp. 23-31, Hong Kong, November 2019. Association for Computational Linguistics.

[19] Kyunghyun Cho, Bart van Merriënboer, Caglar Gulcehre, Dzmitry Bahdanau, Fethi Bougares, Holger Schwenk, and Yoshua Bengio. Learning phrase representations using RNN encoder-decoder for statistical machine translation. In Proceedings of the 2014 Conference on Empirical Methods in Natural Language Processing (EMNLP), pp. 1724-1734, Doha, Qatar, October 2014. Association for Computational Linguistics.

[20] Kishore Papineni, Salim Roukos, Todd Ward, and WeiJing Zhu. Bleu: a method for automatic evaluation of machine translation. In Proceedings of the 40th Annual Meeting of the Association for Computational Linguistics, pp. 311-318, Philadelphia, Pennsylvania, USA, July 2002. Association for Computational Linguistics.
 大西朔永 ${ }^{1}$ 椎名広光 ${ }^{2}$ 1 岡山理科大学大学院総合情報研究科 2 岡山理科大学総合情報学部 i20im01os@ous.jp shiina@mis.ous.ac.jp  