DEIM Forum 2023 4b-3-5

キーストロークデータを用いたプログラミング経験判定 AI モデルの構築
滝澤菜々子†

佐藤 美唯†

高野 志歩††
倉光小原百々雅††

田村 みゆ††君郎†† 日本女子大学理学部数物情報科学科 〒 112–8681 東京都文京区目白台 2-8-1†† 日本女子大学大学院理学研究科数理・物性構造科学専攻 〒 112–8681 東京都文京区目白台 2-8-1
E-mail: †{m1916047tn}@ug.jwu.ac.jp, ††kuramitsuk@fc.jwu.ac.jp
あらましキーストロークデータとは，パソコンキーボードの打鍵速度や打ち方，リズムを表す情報のことである．

キーボードの打ち方の癖は人によって全く異なり，近年，機械学習の発展により，セキュリティや生体認証の分野でキーストローク解析が利用されている．本研究では，プログラミング経験が豊富な人はプログラミング言語特有の関数名や特殊文字を打ち慣れているという仮定に基づき，キーストロークデータの解析をすることでその人がどの程度のプログラミング経験があるかを判定する機械学習モデルを実現する．プログラミング初学者からエンジニアまでのキーストロークデータを収集し，Random Forest と Transformer を用いてそれぞれ分類モデルを構築した．本発表では，構築した判定 AI モデルの精度を報告し，判定システムの試作を紹介する．
キーワード キーストローク解析，機械学習，プログラミング経験

1 はじめに

405 p 148 r 88 i 120 n 120 t …

…

キーストロークデータとは，パソコンのキーボードで文字を400 p 135 r 149 i 84 n 22 t …

入力するときの打鍵速度，打ったキーの種類，リズムの情報の収集したキーストロークデータことである．パソコンキーボードの打ち方は人によって全く異
この性質は生体認証や感情分析，教育分野などのさまざまな分野で活用されている．また，キーストロークデータの収集には特別なハードウェアを用意せずに行えることから，キーストロークの個人特性を利用することは現代の情報社会において大学習

図1

なり [1]，キーストロークデータには個人の特徴がよく表れる．

プログラミング経験
判定AIモデル

機械学習モデル

397 p 148 r 96 i 73 n 90 t …

構築

提案手法

学習モデルついて述べる．4 節では，実験方法と評価結果，および判定システムについて紹介する．5 節では，関連研究を述べる．６節で本論文をまとめる．

きな役割を担っていくと考えられる．
本研究では，プログラミングコードをタイピングした時のキーストロークデータからその人がどの程度のプログラミング

2 提案手法

経験のユーザであるかを判定することを目的とする．プログラ

本節では，キーストロークからその人のプログラミング経験

ミング言語は，普段タイピングする自然言語には含まれないよを判定するための手法として，機械学習モデルを用いることをうな関数名や特殊文字を多く含む．そのため，プログラミング提案する．提案手法を図 1 に示す．プログラミング初心者から経験が豊富な人はプログラミング言語特有の文字を打ち慣れてエンジニアまでの様々なプログラミング経験の人から収集したいるなどの特徴がキーストローク特徴として表れるのではない

キーストロークデータを機械学習モデルに学習させることで，かと考えた．キーストロークデータにユーザのプログラミング

プログラミング経験判定 AI モデルを構築する．

経験が影響することが確認できれば，コーディングテストなどを実施することなくタイピングをするだけでユーザのプログ2. 1 キーストロークデータ

ラミング経験や技量を図ることができる．キーストロークデー

本研究で利用するキーストロークデータについて詳細を説明

タからプログラミング経験の判定を実現するために，我々は，する．本研究では，キーストロークの癖を表すデータとして，様々なプログラミング経験の人から実際にキーストロークデー

打ったキーの種類と p-p 時間（あるキーを押してから次のキータを収集し，そのデータを用いてプログラミング経験判定 AIを押すまでの時間）の組の並びをキーストロークデータとすモデルを構築した．本論文では，実際に構築した判定 AI モデる．具体的には，図１に示すような，数字と文字の並びからなルの精度を報告し，試作した判定システムを紹介する．

るデータである．時間の単位は，ms（ミリ秒）である．

本論文の構成は以下の通りである．２節では，提案手法について述べる．3 節では，本研究において使用した２種類の機械Inputs

3 機械学習モデルによる分類予測

Embedding

機械学習とは，大量の学習データからパターンやルールをコTransformer-block

ンピュータに発見させ，ある課題において分類や予測を行う技

PositionalEncoding

Self-Attention術のことである．本研究では，学習データに正解を与えた状態×2
Feed Forwardで学習させることで，未知のデータを入力しても分類の推論ができる「教師あり学習」を行う．我々は，プログラミング経験

Classification

判定 AI モデルの構築のために，機械学習モデルのひとつであOutput

る RandomForest [2] と Transformer [3] を用いた．

図 2 Transformer ベースモデルのアーキテクチャ

3. 1 RandomForest
RandomForest は，2001 年に Breiman によって提案された機械学習アルゴリズムである．学習データをランダムにサンプリングして複数の決定木を作成し，それぞれの出力結果の多数決により最終的な出力結果が得られる．さまざまなタスクにおいて汎用性が高く，精度が高いことが特徴である．
本研究では，連続する２つのキーにおける p-p 時間の平均を特徴量として RandomForest に学習させる．すなわち，打ったキー 2 個分のみの依存関係に着目している．

4. 1 キーストロークデータの収集
我々は，被験者に指定した python コードを実際にタイピングしてもらい，その際のキーストロークデータをログとして記録した．我々が指定した python コードを図 3 に示す．プログ
ラミング経験による打ち慣れおよび不慣れがより表れるように，「print()」や「*」などのプログラミング言語特有の関数名や特殊文字を含んだ文を指定した．

3. 2 Transformer
Transformer は 2017 年に Vaswani によって発表された，自print(math.sin(math.pi/2))
print([”oranges”,”tables”])
print(weight / (height * height))
print(x if x >= y else y)
print(s[0].upper() for s in ”abcdefg”)

然言語処理向けの深層学習モデルである．それまで自然言語処理でよく用いられていた再帰や畳み込みを一切使わず，単語間のより広範囲な依存関係を捉えられる Attention 機構のみで構成されていることが特徴である．

Transformer は，自然言語処理のさまざまなタスクにおいてこれまで多くの SoTA を達成してきた．近年，自然言語処理以

図3

指定した python コード外の分野（コンピュータビジョン，音声認識など）のタスクにも Transformer が適用されている．例えば，画像分類タスクに

また，キーストロークデータにはその人のプログラミング経

おいては，画像を N 個のパッチに分割し，各パッチをトークン験もセットにして記録した．本実験において，我々は被験者のと呼ばれる単語のようなものとして捉えることで Transformer

プログラミング経験を３グループに分けている．そのグループベースモデルへ入力し，分類を行っている．本研究では，キーの名称と，実際の経験および所属についての説明を表 1 に示す．

ストロークデータの打ったキーと p-p 時間をそれぞれトークン

また，収集できたデータ件数も表 1 に加えて示す．

として扱い Transformer ベースモデルに入力することで，プログラミング経験の判定を行う．

RandomForest は，打ったキーの順番などは考慮せず，2 つ分のキーの依存関係のみを捉えることに対して，Transformer

表1

説明

件数

未経験

プログラミング経験のない中高生

28 件は打ったキーの順番なども考慮し，キーストロークデータ中のより広範囲な依存関係を捉えられるのではないかと考えている．
我々が構築した，Transformer ベースのモデルアーキテクチャ

プログラミング経験とその説明

名称

初学者
経験者

日本女子大学 2 年生（履修授業にてpython プログラミングを半年ほど扱っている）

プログラミングを 3 年以上または業務で扱っている社会人 45 件を図 2 に示す．
以上，合計 132 件のキーストロークデータを収集することが4 実験報告本節では，３節で紹介した RandomForest と Transformerに実際に収集したキーストロークデータを学習させ，プログラミング経験判定 AI モデルを構築し，それぞれどの程度正しく判定できたか比較した結果を報告する．

59 件できた．

4. 2 学習用データの前処理
本節では，収集したキーストロークデータを機械学習モデルに学習させるために行った前処理について説明する．まず，全てのキーストロークデータにおいて，先頭の「p-p 時間+打ったキー」のペアを削除した．これは，データ収集ページを起動•F 値：再現率と適合率の調和平均．

してから 1 文字目を打つまでの時間はかなりばらつきがあり，キーストロークの癖には関係のない情報であると考えられるた

再現率は，実際に真であるが偽と予測したというケースをエめである．

ラーとして重視したい場合に向いている．例えば，実際は初学

また，本研究では Transformer に学習させるキーストローク者であるのに，上級者と判定されてしまった場合などが多い時，データに対して２つのデータ前処理を行うことでデータの拡張再現率は低くなる．再現率は適合率とトレードオフの関係であを行なった．深層学習モデルの訓練に必要なデータの量は，機る．F 値は，例えば再現率と適合率のどちらかがかなり低い時

械学習モデルに比べて大量の学習データを必要とする．本実験に，値が低くなる．

で収集できたデータの量は小規模であり，モデル本来の性能を発揮できないため，データの拡張を行なった．

構築した３つのモデルによる判定 AI モデルの評価尺度をまとめた表を，表 2，表 3，表 4 にまとめる．また，正解率は，Ran-１つ目のデータ前処理方法はスライディングウィンドウ処理

domForest は 0.80，Data Augmentation による Transformerである．スライディングウィンドウ処理とは，主に時系列デーは 0.70，スライディングウィンドウ処理による Transformer はタに用いられる前処理のことであり，1 本の時系列から部分時0.92 であった．

系列を多数生成し，機械学習により特徴を抽出する方法である [4]．部分時系列の生成は，1 本のデータに対してウィンドウ．

サイズと呼ばれる固定幅で区切り，区切る位置を少しずつスラ

表 2 RandomForest モデルの評価結果イドさせることで多数生成する．本研究では，ウィンドウサイ未経験

初学者経験者ズ n とした時，n 文字打った分のキーストロークデータが多数

適合率

1.00

0.760.81生成される．スライディングウィンドウ処理のイメージを図 4

再現率0.380.890.93に示す．

F値0.550.930.87

本研究では，Transformer に学習させるキーストロークデー
キーストロークデータ

ラベル405 p 148 r 88 i 120 n … 138 m 140 a 156 t …

上級者

405 p 148 r 88 i 120 n … 138 m

上級者

148 r 88 i 120 n … 138 m 140 a
88 i 120 n … 138 m 140 a 156 t

図4．
表 3 Transformer モデルの評価結果（Data Augmentation）

上級者
上級者

未経験

初学者

経験者

適合率

0.00

0.64

0.88

再現率

0.00

0.78

1.00

F値

0.00

0.70

0.93

スライディングウィンドウ処理．

タを一本の時系列データとみなし，スライディングウィンドウ

表 4 Transformer モデルの評価結果（スライディングウィンドウ処理）
未経験

初学者

経験者

適合率

1.00

0.88

0.91

再現率

0.71

1.00

1.00

F値

0.83

0.93

0.95処理を適用した．
２つ目のデータ前処理方法は，Data Augmentation である．

Data Augmentation とは，既存のデータに対して何らかの変更を加えることにより，訓練データの量を水増しする手法である．本研究では，既存のキーストロークデータの p-p 時間に対して，標準偏差と平均値を用いて１箇所ずつ変更を加えることでデータを拡張した．4.3 節にて２つのデータ拡張方法によるモデルの精度の比較結果を述べる．

Random Forest の評価尺度は全体的に高い結果だったが，未経験者の再現率が 0.38 であるように，未経験者のキーストローク特徴をうまく捉えられていなかった．Data Augmenta-tion による Transformer は，未経験者のキーストローク特徴
4. 3 評 価 結 果を全く捉えられていない結果となった．３つのモデルを比較す

本節では，Random Forest，Transformer（スライディングると，スライディングウィンドウ処理をした Transformer によウィンドウ処理），Transformer（Data Augmentation）の３る判定 AI モデルが，どのラベルにおいても最も予測精度が高つのモデルの予測精度を比較する．評価に用いた評価尺度は以かった．

下に示す４つである．

•

正解率：予測結果と真の値の一致率．

•適合率：真と予測したもののうち、実際に真である割合．

•再現率：実際に真であるもののうち，正しく真と予測できた割合．

室で開発しているプログラミング学習支援 AI「KOGI」が挙げ

4. 4 判定システム
本節では，4.3 節にて構築した判定 AI モデルを用いて試作しられる．KOGI とは，コーディング中にエラーが発生するとエた，プログラミング経験をリアルタイムに判定できる判定シス

ラーの原因や解決策を提示するチャットボット形式の AI であテムを紹介する．判定 AI モデルは，Random Forest によるもるが，本研究で作成した判定システムと統合することで，コーのを用いて試作した．システムの作成には，Streamlit というディングテストなどを用いることなくユーザのプログラミングPython 言語によって簡易的に Web アプリケーションが作成での技量を推定することができ，それに応じた学習支援内容を提きる Python フレームワークを用いた．判定システムの UI を供するなどの応用が期待できる．

図 5 に示す．

今後は，試作した判定システムを実際に使うことで挙動を確認し，さらなるデータの収集およびデータのラベル付けの再検討などをすることで判定システムの有用性を高めていきたい．

文

図5

試作した判定システムの UI

左枠内に示されている Python コードをお手本に右枠内にタイピングすると，システム内部で JavaScript のキーイベントが動作し打ったキーの種類と p-p 時間が記録される．タイピングし終え完了ボタンを押すと，キーストロークデータが判定 AIモデルに入力され，プログラミング経験の判定結果が画面に出力される．

5 関連研究キーストロークは，ユーザがそれぞれ異なる挙動を示す点が認証技術の特性として望ましく，行動生体認証 [5], [6], [7] などのセキュリティ分野で幅広く研究されてきた．近年は，機械学習技術 [8], [9] の目覚ましい発展により，キーストロークを用いた行動生動認証の実用度も大幅に高まっている．
キーストロークの活用は，セキュリティ分野だけでなく，感情分析など応用も広がっている．教育分野 [10], [11] では，学生の学習成果などを把握するために応用される．

6 むすびに
本論文では，キーストロークデータからユーザのプログラミグ経験を判定するために，機械学習モデルを用いてプログラミング経験判定 AI モデルを構築することを提案した．実際には，RandomForest と Transformer を用いて判定 AI モデルを構築し，それぞれの精度の比較結果を報告した．スライディン
グウィンドウ処理をしたデータによる Transformer が一番精度が高く，正解率は 0.92 であった．また，構築した判定 AI モデルを用いて試作した判定システムの紹介をした．判定システム
は，指定された Python コードをタイピングしたのち判定結果が出力される機能のみの試作段階であるが，別のシステムと統合することで有用性が増すと考えている．例えば，我々の研究

献[1] Anil K Jain, Arun Ross, and Salil Prabhakar. An introduction to biometric recognition. IEEE Transactions oncircuits and systems for video technology, 14(1):4–20, 2004.
[2] Leo Breiman. Random forests. Machine learning, 45(1):5–32, 2001.
[3] Ashish Vaswani, Noam Shazeer, Niki Parmar, Jakob Uszkoreit, Llion Jones, Aidan N Gomez, Lukasz Kaiser, and Illia
Polosukhin. Attention is all you need. Advances in neural
information processing systems, 30, 2017.
[4] 井手剛. 部分時系列クラスタリングの理論的基礎. In 人工知能学会全国大会論文集 第 20 回 (2006), pages 94–94. 一般社団法人 人工知能学会, 2006.
[5] Francesco Bergadano, Daniele Gunetti, and Claudia Picardi. User authentication through keystroke dynamics.
ACM Trans. Inf. Syst. Secur., 5(4):367–397, nov 2002.
[6] Alaa Darabseh and Akbar Siami Namin. Keystroke activeauthentications based on most frequently used words. page
49–54, 2015.
[7] Sohail Habib, Hassan Khan, Andrew Hamilton-Wright, andUrs Hengartner. Revisiting the security of biometric authentication systems against statistical attacks. ACM Trans.
Priv. Secur., nov 2022. Just Accepted.
[8] Sowndarya Krishnamoorthy, Luis Rueda, Sherif Saad, andHaytham Elmiligi. Identification of user behavioral biometrics for authentication using keystroke dynamics and machine learning. In Proceedings of the 2018 2nd International Conference on Biometric Engineering and Applications, ICBEA ’18, page 50–57, New York, NY, USA, 2018.
Association for Computing Machinery.
[9] Tanapat Anusas-amornkul. Strengthening password authentication using keystroke dynamics and smartphone sensors. In Proceedings of the 9th International Conferenceon Information Communication and Management, ICICM
2019, page 70–74, New York, NY, USA, 2019. Associationfor Computing Machinery.
[10] John Edwards, Juho Leinonen, and Arto Hellas. A studyof keystroke data in two contexts: Written language andprogramming language influence predictability of learningoutcomes. In Proceedings of the 51st ACM Technical Symposium on Computer Science Education, SIGCSE ’20, page413–419, New York, NY, USA, 2020. Association for Computing Machinery.
[11] Aythami Morales and Julian Fierrez. Keystroke biometrics
for student authentication: A case study. In Proceedingsof the 2015 ACM Conference on Innovation and Technology in Computer Science Education, ITiCSE ’15, page 337,New York, NY, USA, 2015. Association for Computing Machinery.