はじめに
プログラミングを学ぼう、更にE資格を取ってみようと思って学習に励んでいる時、多くの初学者が恐らく何度も壁にぶつかると思う。
慣れない数式、記号、用語……それらを調べても、前提として専門的な用語を知っている・きっちり理解やイメージができている前提で解説が進み、謎が深まっていくことがある。
私は文系に徹しすぎた経歴なので、余計に困っているのかもしれない。
注意
ここから先、何でこんな事も解らないんだとイラっとしたらすみません……
でも謎を謎のままにしておくわけにはいかないし、すぐに訊ける相手もいない。そんな時によく私が頼るのが、ChatGPTだ。
ハルシネーションといった問題は、誰かに頼れるタイミングで答え合わせをしたり、学習を進める中で本当にChatGPTの解説が合っているのかを考えたりしている。
私がよく行うChatGPTとのやり取りが小さなアウトプットとしても機能し、理解を深めているかもしれないと思ったので、一例を紹介したい。
ChatGPTとのやりとり
例えばある用語がわからなかったとする。様々な解説を読んでもわからない時、まずはChatGPTにシンプルに訊ねてみる。
私「潜在空間とは」
ChatGPT「潜在空間は、機械学習やディープラーニングにおいて重要な概念です。潜在空間とは、データの本質的な特徴を捉え、表現するための抽象的な空間のことです。(中略)データ解析や特徴抽出など、様々なタスクにおいて、データを効果的に表現するために潜在空間の理解が重要となります。」
(中略)部分に詳細な解説があったが、わかりそうでわからなかったので、次に、理解できた範囲で質問し直してみる。(質問を深堀する際、“つまり”といった言葉を挟まないと、全く別の質問として扱われることがある。)
私「“似たデータは潜在空間においても似た埋め込みベクトルになる”これってつまり、RGBのカラー画像でもモノクロ画像でも似たベクトルになるって解釈で良い?」
ChatGPT「潜在空間におけるこの文は、一般的には似た特徴を持つデータが、潜在空間上でも近い埋め込みベクトルを持つということを表しています。つまり、(中略)ただし、(中略)したがって、(中略)一般論としては、似たデータは潜在空間上でも近い埋め込みベクトルを持つ傾向があるという解釈で構いませんが、実際のデータや学習アルゴリズムによって違いが出ることに留意する必要があります。」
条件次第で厳密な解釈が異なることはなんとなく理解できたが、今回に関してはもっとざっくりで良いので、学習を進める上での簡単なイメージを掴みかったので、こんな質問にしてみた。
私「潜在空間って例えばどんなものがイメージしやすい?」
ChatGPT「潜在空間をイメージしやすくするために、例を挙げて説明しますね。
潜在空間は、データの特徴を表現するための抽象的な空間であり、(中略)例えば、笑顔や怒りの表情など特定の特徴が近い領域にマッピングされることで、(中略)つまり、潜在空間ではデータをより抽象化された形で捉え、その特徴を反映した表現を獲得することができるというわけです。このように、潜在空間はデータを効果的に表現し、新しいデータの生成や変換、特徴の抽出などに活用される概念です。(後略)」
なんかあと一歩って感じがしてきたが、潜在空間という字面を見た瞬間にパッと思い浮かべられる容易なイメージが欲しい。
私「もっとかみ砕いて教えて」
この文言はChatGPTに対して私が良く投げかける言葉だ。なるべく専門用語を使わず、理解を深めたり確認したい時、あるいは「ごめん全然わからないや」といった時等、結構しっかり噛み砕いてくれるので助かっている。
ChatGPT「潜在空間をもっと簡単に説明すると、潜在空間はデータの"良いところ"を抜き出して表現する空間のことです。例えば、顔画像の潜在空間では、笑顔や怒りの表情などの特徴を上手に捉えた空間としてイメージすれば良いです。これにより、似た特徴を持つデータは近い位置に配置され、新しいデータの生成や変換を行いやすくなります。(後略)」
おや、なんかわかった気がするぞ?確認してみよう。
私「例えば、“笑顔の写真では口角が上がってる”という特徴を、にこちゃんマークとして表現するみたいな感覚?」
ChatGPT「その例えはとてもわかりやすいですね!潜在空間は、データの特徴を捉えて表現する空間であり、(中略)具体的な特徴を捉えることで、データの本質をより効果的に表現し、新しいデータの生成や変換を行う際に役立ちます。」
褒めることを忘れないChatGPT、ありがとう。
このような形で質問をし、質問をしっぱなしにしないで自分なりの表現をしてみると、結構理解が深まり、その言葉(今回で言うと潜在空間)をパッとイメージすることができるようになった。そうすると、全く知らない土地の言葉でも読んでいる気分だった文章が、急に日本語に見えてきて、学習が進む。
そして、自分なりの言葉に変換して表現するという、一種のアウトプットを行ったことで、言葉の意味理解が定着しやすくなる。
あと褒めてくれたから、モチベーションもちょっと上がった。
最後に
Qiitaの更新や開発といったアウトプットのハードルは、初学者にはやや高く感じてしまう。時間的な制約なんかもあるかもしれない。かといって、インプットばかりしていると、実際に取り扱う・考える時に上手く表現できないことも起こると思う。
けれど、ChatGPTを利用したこういった小さなアウトプットであれば、あまり気負わず、日常的に行えるだろう。勿論、厳密な定義からは外れることや、嘘の情報である可能性は常に念頭に置いておくべきではあるので、他の手段がある時は併せて利用していきたい。