🌱

入社から今日までの、僕的「学びの流儀」

に公開

こんにちは。秋田県のIT企業、北日本コンピューターサービスのR&Dチーム「AUL(アウル)」に所属しています。トラフクロウです。

現在僕は入社4年目のエンジニアです。普段は自然言語処理系のAIに関するお仕事をしています。最近のAI界隈はスピード感がとにかくはやく、置いて行かれるわけにはいくまいと毎日ひーこらやっているわけですが、先日社内でこんなことを聞かれました。

「今までどうやってAIを勉強してきたんですか?」
「これからAIを勉強しようと思ったら、どんなことから始めればいいんですか?」

ふむ、いざ聞かれると答えに困ってしまいます。というのも、僕自身AIとの付き合いはここ3年くらいで、勉強の仕方もまだまだ手探りです。偉そうなことはもとより、役に立つことなんて何も言えないよ、そんな気持ちになりました。

ですが、「この3年でAIに関する知識が何も増えていないか?」と問われると、そんなことはありません。いつの間にやら身についた知識も確かにあるということに気がつきました。

そこで「はて?」と疑問に思うわけです。

「そもそもどうやって今の知識を身に着けたんだっけ?」

そんなわけで今回は、僕の過去の勉強を振り返って見つけた、「このやり方がよかったのかな?」や「これを意識しているのがいいのかも?」という部分をシェアしたいと思います。僕自身まだまだ修行中のひよっこなので、「共感できる部分はあるじゃろか?」くらいの軽い気持ちで眺めていただけると幸いでございます。

この記事では、僕(トラフクロウ)がAIを勉強する際に意識していることをシェアします。

社内では「AI」と一言で言われることが多いですが、AIにも色々あります。画像認識や、音声認識などがその代表格です。

ちなみに僕が日頃相手にしているのは「自然言語処理」とよばれる分野のAIです。人間の使う言葉(自然言語)を処理するAIのことですね。ChatGPTとか、Geminiなんかがそうです。

今回は、「AIの勉強ってどうやったの?」という人向けに、ほんの少しでも足しになればという思いで、「僕はこうやっています」をまとめたいと思います。

以下、今回のお品書きです。

  • まずは目的を明らかにする
  • わからないことの最前線を意識する
  • 考えながら手を動かして習得を加速させる
  • 理解とは「自分の願望を実現できる状態」である

🪇目的を明らかにするとモチベになります。

最近勉強をしながら強く感じることとして、「目的を認識できている状態」というのは非常に大事だなと思います。
ちなみに僕の中の 目的の定義は「⭐最終的に実現したい状態や状況」 を指します(似た言葉である目標は、目的を達成するために乗り越えるべき壁のイメージでいます)。

この定義でいうと、「AIについて勉強しよう」と漠然と考えるのは目的ではなく目標にあたります。これだけでは最終的にどこへ向かえばいいのか具体的にイメージできません。そのため、モチベーションも維持しづらいです(ゴールのないマラソンはつらいよね)。

そのため、僕は勉強の前に具体的な目的(実現したいこと)を明らかにするようにしています。

たとえば、僕が初めてAIを勉強したときの目的は、

BERTモデルが文章をベクトルに変換する仕組みを理解すること

でした(BERTとは文章をベクトルに変換してくれるAIのことです)。

目的が見えていたおかげで、

「じゃあ、ひとまずBERTの論文を読んでみよう。」

という目標を作ることができます。そして、その目標をクリアしようとする中で、「この単語ってどういう意味?」とか「こっちの論文も読んだ方がいいかも」というような新しい方向性が見えてきて勉強が発展していきます。

とは言ったものの、

「その目的が立てれれば苦労しないんだよ!!」

と思う人もいるかもしれません。そんなときのために次の方法を提案します。

⭐身の回りにある What(ナニコレ?) から入り、Why(なんで?)、How(どうやって?)を探す。

AIについて学びたいけど、どこから始めればいいかわからない(むしろなんでもいいとさえ思える)という場合は、「これって最近よく聞くけど結局何?」というものを探すといいかもしれません。たとえば、

  • 📗画像認識って結局何ができるの?
  • 📗プロンプトってなに?
  • 📗LLMってなに?
  • 📗AIエージェントはChatGPTと何が違うの?

こんな感じで、少しでも「あれ?」と思った内容を調べてみてください。このときに、ただ調べるのではなく、「なんで?(Why)」、「どうやって?(How)」を問いかけながら調べるとより具体的な疑問が出てきます。

たとえば、「プロンプトってなんのこと?」というのを調べて

ということがわかったら、

  • 📙なんでプロンプトによって出力のよい悪いが変わるの?
  • 📙よいプロンプトってどうやって書くの?

という新しい問いを立てるイメージです。個人的には、Why や How の方が What よりも深い知識やスキルを学びやすく、勉強向きの目的を作りやすいと思います。

しかし、この方法には罠もあるとも思っています。それは、素朴な疑問を生み出すうちに、わからないことが爆発的に増えて手に負えなくなることです。そのような沼にハマった際に、僕は次のことを意識しています。

🔍わからないことの最前線を明らかにする。

わからないことを調べたり、リストアップしていくうちに「”わからない”が増えすぎて、どこから手を付けたらいいか決めきれない」もしくは「そもそも何が”わからない”のか、わからない」という状況になってしまうことがあります。このとき僕が試すのが、

⭐今わかっていることを、「何も知識がない人に説明する」つもりでアウトプットする

です。

このアウトプットは、実際に人に話すでも、独り言でつぶやくでも、ノートに書き出すでもOKです。ただ「何も知識がない人に説明する」という部分は強く意識するようにしています。

誰かに説明しようとするときに、「なんか曖昧な表現でボヤかしているな」、「勢いで押し切ろうとしているな」と自分の中でひっかかる部分が出てきます。このとき、一番最初に出てくるひっかかりを探してください。

事前知識のない誰かに何か説明しているときに最初にひっかかる部分は、大事な前提か、説明の根幹である場合が多いです。そして、その部分の理解が危ういために後ろのひっかかりが生じている可能性があります。

最初のひっかかりを探すことで、⭐「自分はここまではわかっている」だけど「ここからはわからない」 を切り分けることができます。このわからないを順番に潰していけば最終的に全体がわかるようになるという理屈です(絡まった糸をほどくが如く)。ちなみに僕は、この最初に出てくる「わからない」を「わからないことの最前線」とよんでいます。

🚀実際に知識や技術を使うことで習得スピードは上がります。

なにかを暗記するにしろ、プログラミングの習得にしろ、最も上達が早いのは実際にそれを使ってみることだと思います。

プログラミングは言わずもがなでしょう。「こういう処理を作るにはどうする?」、「どうやったら、このエラーを解消できる?」などと考えながら試行錯誤するうちに、だんだんとできることが増えていきます。

また、これは最近学んだことですが、「意識して使う」は暗記でも役立ちます。具体的には資格試験の勉強とかですね。

「資格試験の勉強中に意識して使うってどういうこと?」

となるかもしれませんが、これは⭐覚えた(または覚えたい)ことを積極的に思い出すということです。たとえば、

  • ✒️テキストを読み終わった後に、何も見ないで覚えている内容を書き出してみる
  • ✒️何も見ないで自力で問題集を解く

みたいなことです。つまり、覚えた知識を自分の意志で使ったり、再構成するわけですね。上で紹介した「誰かに説明する」もこれにあたるかと思います。

ただ素振りを繰り返すだけではホームランは打てない。

「アウトプットをしてみましょう」というのはシンプルで簡単そうですが、「これを気を付けないと効果がないのでは?」と感じていることがあります。それは

⭐機械的にやってはいけない。自分の頭でよく考えながら実践する。

ということです。

これは僕の失敗談ですが、プログラミングを覚えたくて、サンプルコードをひたすら写経し、実行している時期がありました(書けば覚えるって言われたからね)。

ですがこれは目に映ったものを機械的にアウトプットしているだけなので記憶や印象にほとんど残りません。特に僕の場合は、手を動かすことそのものが目的になっていました(やればいいんでしょ、やれば。みたいな)。

たまに、黒板の内容をキレイにノートに写しているのにテストの点数が伸びないという人や、教科書にいっぱい線を引いているのに覚えられないという人の話を聞きますが、恐らくはこれも同じ理由なのだと思います。

逆に、「これはどういう意味だろう?」、「このときはこうすればよかったよね」と考えながら行うプログラミングは記憶に残りやすいです。僕は独学よりも業務内でコードを書いた方が覚えやすいなと感じますが、たぶんこれが原因だと思います(独学のときは写経チックになっちゃうので・・・)。

そう考えると

  • 🪄留学に行っただけで英語が話せるようになった
  • 🪄カンニングペーパーを作るつもりが、作ってるうちに内容を覚えてしまった
  • 🪄勉強は苦手だけどゲームはメッチャうまい

なんかも、意識的に知識を思い出し、使おうとした結果なのでは? って感じがします。

💯理解とは「自分の願望を実現できる状態」のこと。

勉強をするうえで僕が理想としているのは「理解している状態」です。

何をもって「理解している」とするかは、人によって色々だと思いますが、僕の場合は

⭐自分が「これやりたい!」と思った時に、知識を自由自在に使いながらそれを実現できる状態

を「その知識を理解している」と定義しています。

数学の公式(もしくは定理)を例にするとわかりやすいかもしれません。数学の公式を勉強するときの到達段階には、大きく次の3つがあります。

  • ✒️必要な時にその公式を使って問題が解ける
  • ✒️その公式が成り立つ背景/理由(証明)を説明できる
  • ✒️公式内の要点を抽出し、新しい公式を自作できる(理論を理解している)

最初の「公式を使って問題が解ける」は一番シンプルな習得です。ですが、少しひねった問題設定の場合や、経験がない状況下では公式を使うことができません(学校の試験であるあるだよね)。

2つ目の「証明を説明できる段階」になると、公式の本質や役割が見えかけている状態になります。パッとみ初見の問題にぶつかったとしても、今の状況と理論の道筋を交互に見比べることで、公式を適用できるようになります。

3つ目の状態は、公式本体とその成り立ちについてほぼ完璧に習得してる状態です。ここまでくると全く関係ない問題に対して、公式を構成する理論の一部分を適用させたり、独自の解釈を加えた新しい公式を作れるようになります。いわば、子供が粘土で遊ぶように、自分がやりたい、こうしたいと思ったことに合わせて自由に公式を使えている状態です。

僕の中で、数学の公式や概念を理解したと言えるのはこの3つ目の段階に到達したときです。

数学でたとえると仰々しく見えますが、何事においても、⭐理解とは、勉強した内容を他の人に説明し、実際の業務の中で使える段階 であり、それがこの3つ目の状態にあたるのではないかと思っています。

階段は一段ずつ上ったほうが苦しくない。

これも僕自身が気を付けていることになりますが、⭐最初から「すべてを理解する」ことを目的にしないほうがよいかと思います。理由はどもまでも完璧を追求できてしまいキリがないからです。

ですので、普段何かを学ぼうと思ったら、とりあえず満足するところで区切りをつけて次に進むようにしています(数学に関しては、よくこのタイミングを見失って沼にハマります)。

最初から知識を使いこなせる状態を目指すのではなく、「気づいたらできるようになっていた」くらいがモチベ的にもちょうどよいなと思っています。

まとめ

  • ✅勉強の前に目的を決める(What → Why, How で探すといいかも)
  • ✅行き詰まったら、わからないことの最前線を探す
  • ✅実践の方が習得は早い(ただし考えながらやろう)
  • ✅「理解できている知識」とは人に説明し、自在に使える知識のこと

最後まで読んでいただき、ありがとうございました!

最後まで読み進めていただき、ありがとうございました。

もともとAIの勉強方法を書こうと思っていたのですが、それだと「論文読んで、数式読んで、プログラムいっぱい書きました」になってしまいそうだったので、「なんでそれをやることで知識がついたんだろう?」ということを考えてみました。「きっとこれが効いたんだろう」ということを書いていたら思いのほか抽象的な内容になってしまいまして、「これAIじゃなくてもよくない?」と読み返しながら思っております。

まぁそれでも、「AIを勉強するときに使える方法には違いないだろう」ということで許してください。

僕自身「AIやプログラミングってどうやって勉強すればいいの?」と思っている1人でもあるので、「こういう方法もいいよー」というのがあれば教えてください。今回の内容がほんの少しでもみなさんのお役に立てば幸いです(なにとぞ)。

北日本コンピューターサービス

Discussion