具体例に愛を込めて
TL;DR
- 具体例を挙げるのはありふれた行為だが、それが故にあまり考えずに出しがちで効果が薄いものも多い
- 頑張って意図を込めた良い具体例を考えよう
- 自分が最近書いた本の具体例には色々な意図を込めている
タイトルを詩的な感じにするのはあまりやらないのだが、たまにはいいだろうということで今回はこんなタイトルである。
具体例を挙げる、あまりにもありふれた行為である。
日常生活においては好きに使ってくれればいいと思うが、何かしらのプロフェッショナルな文脈において使う場合は、具体例の質によって与える印象や理解に無視できない影響があるので、意図を込めたいと常々考えている。
具体例を挙げるとき、多くの場合、より抽象的な概念があってそれをよりよく理解・説明することを目的としている。 抽象的な概念が具体例として顕現することで色々な操作をしてこねくり回したりすることができ、その過程で理解が深まっていく。 数学などは典型的で、定義を見ても何が言いたいのか分からないことも多いが、色々な具体例を構成してあれこれと遊んでみることで、その定義の「意味」に得心したりする。
それ以外にも、面白さ(interesting と funny の両方)も重要な要素となる。 面白い具体例があると、それによって思考が先へと発展したり印象に残って思い出されやすくなったりする。 相手にとって面白いかどうかは完全にはコントロールできないが、少なくとも自分にとっては面白い具体例を考えたいものだ。
説明したい概念の特徴を適切に掴みつつ面白い具体例を挙げる、これは時として難しいが、それにしても「この具体例は紹介するに値するものだとあなた自身が感じていますか?」と思ってしまうものも少なからず目にする。 これは多分に自戒を含んでいるので、具体例を挙げるときはよく考えて自分なりの意図を込めていきたい。
ここまでは抽象的な議論を展開してきたが、何が言いたいのかがより分かりやすくなるように、具体例の具体例を 2 つほど挙げよう。 最近本を執筆した https://gihyo.jp/book/2025/978-4-297-15078-5 ので、この本の中の具体例をいくつか取り上げて、込められた意図を解説してみる。
1 つ目は tokenize されるテキストの具体例である。
書籍の表 2.3 において、I love reproducibility というテキストと subword の tokenization 結果 I, ␣love, ␣reproduc, ibility を載せている。 自分は subword 分割の例を見たときに「これ本当にこういう風に分割されるのかな?」と思って適当な tokenizer で試すことがあるが、多くの場合そのように分割されずに残念に感じることがある。
もちろん tokenizer はアルゴリズムや各種ハイパーパラメータの設定で異なる結果を返すものだし、そもそもこの手の例は subword で分割されることが伝えられればいいので実際の分割とは異なっていても致命的な問題があるわけではない。 しかし、それでもなお、実際には分割されなさそうな具体例を見せられるのは、作者の意図を感じず寂しいものである。
その辺りを踏まえて、再現できるのがいいよねという意図を込めて自分の本で具体例のテキストを準備したが、なんとこれは私のミスであり私が手元で試している tokenizer では再現されない。 なんてこった!さっそく懺悔の時間だ。
正しくは “I Love Reproducibility” と I, ␣Love, ␣Reprodu, cibility であり、これは例えば https://eliben.github.io/go-sentencepiece/ でこのように分割されることが確認できる(20250921時点)。 これは正誤表 https://github.com/yoheikikuta/support-genAI-book/blob/7ddfdc5/errata.md にも載せている。
最初の例から愚かなところを見せてしまったが、私が愚かなのは根本的な解決が難しいので、気づいたら修正して進んでいくしかない。
2 つ目は encoder-decoder 型のモデルで扱うテキストの具体例である。
書籍の図 3.4 では以下の図を載せている。 ここで使われているテキストはフロム・ソフトウェアが開発したゲームソフト SEKIRO: SHADOWS DIE TWICE https://www.sekiro.jp/ から引用したものである。

この encoder-decoder 型のモデルでテキストの例を考えるとき、短いテキストでないと図に収まらない(別に収まらなくてもいいけど美しくはない)、後で attention mechanism も持ち出すので encoder 側と decoder 側で対応がつきやすいものの方が理解がしやすい、などの考慮ポイントがある。 考慮ポイントを踏まえて「今日は晴れです」とかでもよいが、これではあまりにも無味乾燥すぎて面白くない。
色々と頭を悩ませた結果、短くてインパクトがあり、encoder 側と decoder 側の対応もイメージしやすく、元ネタを知らない人でも理解に悪影響はないテキストとして、この「迷えば、破れる」とその英訳「Hesitation is Defeat」を使うことに決めた。 フロム・ソフトウェアのゲームが好きなのでどうしても書籍の中で引用したかったという気持ちも大いにあったが、個人的にとても気に入っている具体例である。
書籍の 1.2.2.2 具体例を構成する においてもフロム・ソフトウェアが開発したゲームソフト Bloodborne https://www.fromsoftware.jp/jp/detail.html?csm=094 のテキストである「宇宙は空にある」を使っており、お前は面白い例と言ったらフロム・ソフトウェアのゲームから引用するしか能がないのか、と言われるとぐうの音も出ない。
他にも色々な具体例を取り扱っており、それらには意図が込められているが、これくらいにしておく。 今回は書籍の話をしたが、他には例えばソフトウェア開発は何かを説明するときにどんな具体例を構成するかはかなり腕の見せ所な感じがする。
ということで、具体例、愛でていきましょう。