AIの手習い事始め その1, Edited by Yoshio Okamoto / Written by Claude (Anthropic) September 28, 2026

その2はこちら.


1,はじめに


 LLM(大規模言語モデル)の進展に驚き,これを教育系の仕事に活かせないかと,おそるおそる勉強を初めている.

方向としては,機械学習(Machine Learning)⇒深層学習(Deep Learning)⇒LLM(大規模言語モデル)となるはずだけど,思いつくままにつまみ食いを始めている.
 なお参考文献は数多くあるが,私のおすすめは以下のシリーズ.
 

ヨビノリ氏の深層学習YouTube解説動画シリーズ

特に前者のChapter5,
Chapter6,Chapter7
がおすすめ.


2.microgptをpython環境で実行する

次章に記載するやや本格的なGPT-2と比較して,こちらのmicrogpt は,Andrej Karpathy が 2026 年 2 月に公開した,GPT の学習と生成を行う約 200 行
の Python プログラムです。使っているのは標準ライブラリの os・math・random だけで,NumPy もPyTorch も使いません。データの読み込み,トークナイザ,自動微分,Transformer 本体,最適化,文章の生成までが 1 つのファイルに入っています。(以下のClaudeが作ってくれた資料
microgptを読む.pdfより,下記リンクをクリックすると資料のPDFが読めます) 

microgptを読む.pdf

この資料にはこう書かれている.

1. microgpt は,データ・トークナイザ・自動微分・Transformer・Adam・生成を,標準ライブラリだけの約 200 行で書いた GPT である。
2. 自動微分は,すべての計算を局所微分の分かった基本演算に分解して記録し,出力側から連鎖律で勾配を足し込んでいく。04 の誤差逆伝播法を,スカラー単位で機械的に行うものである。
3. モデルは 1 トークンずつ処理し,キーとバリューをリストに追加していく。これにより因果マスクが不要になり,同時に KV キャッシュの形にもなっている。
4. 名前 1 つごとに交差エントロピー損失を求め,Adam でパラメータを更新する。1000 ステップで損失は ln 27 ≈ 3.30 から約 2.3 まで下がり,でたらめな文字列が名前らしい文字列に変わる。
5. 実際の LLM との違いは主に規模と計算のしかたで,モデルの骨組みと学習の原理は同じである。

Python環境などの整備は次章を参照のこと.

・実行ファイルやデータファイルの入手先

プログラム本体:https://gist.github.com/karpathy/8627fe009c40f57531cb18360106ce95

例にあげたデータ:
https://raw.githubusercontent.com/karpathy/makemore/988aa59/names.txt  これは上記プログラムの中に書かれている

作者による解説:
https://karpathy.github.io/2026/02/12/microgpt/

参考文献:
microgptを勉強する:1


0.このプログラムは何をやっているのか?

入力である英語の名前のテキスト(input.txt) 32033個について,そのアルファベット1文字ずつがどのような他の文字とつながるかを学習する.
つまり名前に採用された文字のつながり具合を何度も学習してその特徴を行列の重み(数字のデータ)として記憶するこれが学習にあたる.そして,自分で学習した成果を合成して,世の中にありそうな名前を出力する.それだけのプログラム.
(実際のLLMではこの大量の学習でモデル(たとえばGPT-3では1750億のパラメータを調整)とよばれるものが作られ,それも用いてchatという 形式でこちらの入力に答えるシステムを採用している)そのモデル作成の過程を示し,学習した記憶を用いて名前を生成する.

入力のinput,txt は 以下のようなもの.

emma
olivia
ava
isabella
sophia
charlotte
mia
amelia
harper
evelyn
abigail
emily
elizabeth
mila
ella
avery
sofia
camila

(中略)

zyheem
zykeem
zylas
zyran
zyrie
zyron
zzyzx


最後の方は本当にこんな名前あるのかと思ってしまいます.

<実行と結果>

これを下記のようにターミナルから実行する(筆者のLinuxMintでのターミナルの例).Windowsの場合はcmdを検索して,これを実行するとWindows用の黒い窓のコマンドターミナルが出現する.
python microgpt.py と書いてエンターキーで実行される.

以下の写真は筆者のLinux Mintの環境でのターミナルの様子であるが,Windowsでもコマンドプロンプトを実行するターミナルで同じ処理が行われる.
ただし,LinuxもWindowsも実行するディレクトリ(フォルダ)を作って,そこにプログラム本体(
microgpt.py)とデータのinput.txtをおいておく必要がある.
そのディレクトリへの移動は,cd(change directory)コマンドで行う(プログラムとデータを入れたフォルダをカレントディレクトリにする)
これらのpythonプログラムの実行環境については,指南サイトが多いのでそれを参考にしてほしい.
 



数分間,input.txtを読み込んで重み行列の計算をしたあと,その成果として上に上げるような,20個の生成した名前を出力する.つまり名前になるような単語を生み出したという結果.
データの種類を変えると,また同様の計算ができるはず.

<内部計算処理が見れるバージョン>

それで,これで気をよくして,せっかくなので内部の計算を逐一出力するバージョンをClaudeに作ってもらった(どちらかのリンクをクリック,両方同じもの).

microgpt_trace.py
https://seagull.stars.ne.jp/2026_LLM/microgpt/microgpt_trace.py

これを下記のようにターミナルから実行する.Windowsの場合はcmdを検索して,これを実行するとWindows用の黒い窓のコマンドターミナルが出現する.

そのターミナルに
エンターキーを押すごとに,逐次処理が行われて,行列の変数が書き出される.これでAI内部でどのような計算の処理が行われているかの推定が可能となる.
各行列の初期値としては,Claudeによると

重み行列の要素はすべて、平均0・標準偏差0.08の正規分布の乱数(random.gauss(0, 0.08))で1つずつ置かれます。値のほとんど(約95%)は −0.16〜+0.16 の範囲に入ります。

これが計算の出発点のようです.かなりエンターキーを押さないと変化が見れないと思えるので,それを今後改良したい.



実はまだ続きがあって,



これでようやくすべての変数が計算されてStep1が終了,次の計算ループに入るという処理.

すべてのコンソール出力は以下にまとめた.

https://seagull.stars.ne.jp/2026_LLM/microgpt/1step.txt

後日さらに詳しい解説バージョンを検討したい.


なお各パラメータの計算における役割は

2種類の「重み」


行列 WQ,WK,WV,WO、MLP の W1,W2 などattention の重み aij
正体モデルのパラメータ入力から計算される係数
いつ決まるかモデル作成時(学習時)に決まり、以後固定Chat の文脈ごとに毎回計算
入力で変わるか変わらない変わる

つまり、




3.GPT-2をPCで触る.まずPython環境の整備(これが最初の試み,あとでこちらはこちらで別ページにまとめる予定)

 一通り入門編などの動画を観たあとでも,なかなか内容はムズい!とくにTransformer及びAttentionは何度観ても首をかしげている.そ もそも日毎使う動画の仕組みや,中身がわからない状態で使うのは科学教育に関係するものとしてとても歯がゆい.そこでとりあえず自分でもこれらのLLMの 簡単なモデルをPCに入れて,その計算の一端を自分で確かめてみる作業を開始した.

 もちろん,単独で行うのはとても大変なので,いつものたのもしいClaude(Anthropic社)と議論しながら進めてきた.その一端を少し紹介する.


Python環境の整備.(それぞれのOSに即して,数多くあるPython環境整備の指南サイトを参照してほしい)

筆者はLinuxMintですでにPython環境を整えているが,Windowsでも幾つもある指南サイトの指示でインストールできると思う.(こちらは2.とは異なり専用ライブラリが必要なので,それを次のコマンドでインストールが必要)

すでに基本がインストールされている場合は,Pythonコードを動かすための追加ライブラリは

pip install torch transformers numpy

でできる.Linuxではターミナル,Windowsではcmdコマンド,すなわち黒いコマンドラインの窓を開けて,上記コマンドをコピー&ペーストして実行.

これでGPT-2のPythonスクリプトが動くようになる.次に個別の動かす,Pythonスクリプトに移る

(以下工事中)




Copyright(c) by Y.Okamoto 2026, All rights reserved