「AIをやってみる」とは何をすればいいのか考える。
背景
- 僕はインフラエンジニアでAIは遠い存在なので積極的に学びたいと思わない。
- とはいえビジネスの場ではとりあえずAIって単語を使いたい人がいる。
- そんな訳でなぜだかAIを触らないといけない雰囲気。
- いざ学ぼうにも世間はChatGPT使ってみたレベルでエンジニア感の薄い情報が多い。
- AIをやってみようにもエンジニア的には何をやればいいのよ? <- いまここ
ということで、AIを超適当に調べた内容をまとめました。
僕自身が畑違いでゼロ知識なので、ITエンジニアでなくてもわかるようまとめたつもり。
細かい内容やニュアンスは間違えてるかもだけどご容赦ください。
今流行ってるAIとは何なのか
ChatGPTなど今流行ってるAIと呼ばれているものは正確には「LLM」というらしい。LLMとは"Large Language Models"の略で日本語で言うと「大規模言語モデル」だそう。結局のところ何のことだか全くわからない。とりあえずLLMはディープラーニングによって生まれているらしい。
そもそもディープラーニングって何だっけ
少し前にディープラーニングという言葉も世間を賑わせた。ディープラーニング技術によって開発された囲碁や将棋のソフトウェアがプロ棋士を次々と倒していると話題になった。あの藤井聡太さんもディープラーニングで学習するAIの戦術を参考にしているとか何とか。まずは将棋におけるディープラーニングとは一体何なんだったのかおさらいしてみることにする。
将棋におけるディープラーニング
将棋は盤面上の決められた方向にだけ動かせる駒を交互に動かすボードゲーム。全然やったことない人でも何となく知っていると思うけれど「定石」と呼ばれるものがあって特定の駒を特定の順に動かすと有利というセオリーがある。これは将棋が生まれた瞬間からあったわけではなくて人々がプレイしていくうちに勝てる確率の高い順序があるという発見から生まれたもの。将棋のディープラーニングでは大量の棋譜(試合の中で駒を動かした順序の記録)を読み込ませて統計的に勝ちやすい手順を分析することを指す。今までのなんとなくの経験論を数学的な統計データにしたものと思うとわかりやすい。
次はそれを言語学に当てはめる
では言語学の場合はどうだろう。僕たちが話している言語というものは、主語、述語、etcというように複数の単語を順に組み合わせることで初めて文章になる。意外とも感じるかもしれないが文章も将棋の駒を進めていくのと同じように、この単語の次にはこの単語がくれば自然な文章というセオリーが存在する。つまり大量の文章をディープラーニングすれば、どういう順序で単語を繋げたら会話が成り立つのかという統計データが作れる。これによってできあがったものがLLMということになる。
AIをやってみる=ディープラーニング?
先の話からすると「AIをやってみる」というのはディープラーニングをやってみることと感じるがこれはどうやら違うらしい。確かにLLMを作るためにはディープラーニングが必要なのだけれど、そのためには分析の元となる「大量の文章データ」とそれを分析するための「超高性能コンピュータ」が必要になる。個人でこの2つを用意するというのは現実的ではないため、LLMの開発というのはMetaやMicrosoft、Googleなどのいわゆるビッグテックでなければ難しい様子。
じゃあ「AIをやってみる」って何すればいいの?
最初の将棋の例に戻ると定石に気がつくのはやはり一流の棋士でないと難しい。一方で僕のような初心者でもその人たちが教えてくれた定石通りに駒を置いて実際の試合で活用してみることはできる。なのでビッグテックが作ってくれたLLMという定石集をうまく使いこなすことが今のAIにおける「やってみる」になる模様。ありがたいことにビッグテックはディープラーニングで開発したLLMを一般に公開してくれている。
じゃあ結局「使いこなす」とは何なのか?
将棋AIと言語AIの間には決定的な違いがあって、将棋の場合は「相手の王を取れば勝ち」という1つの絶対的な正解がある。一方で言語AIの場合「自然な会話が成立したら勝ち」という性質なので正解に幅が出てしまう。例えば「好きな食べ物は何ですか?」という質問に対して「りんごです。」という回答と「みかんです。」という回答はどちらも正解で「野球です。」と答えたらそれは間違いといった具合。言語AIはたった1つの正解というものがないので、どれだけディープラーニングを重ねたとして結果には常に揺らぎが出てしまう。LLMとしてはあくまで人間のように会話が出来たら合格なんだけれど、LLMを人間の召使いにしたいと思う人にとってはいまいち都合が悪い。
AIの世界にも言語統制が必要
人間の召使いとしてAIを使うのであれば自分にとって都合よいことを喋ってほしいし、都合の悪いことは喋らないでほしい。僕たち人間も上司の前では複数の文章が思いついても顔色を伺って上司の喜びそうな文章を話すなんてことがあるようにLLMも人間に喜ばれない回答であれば口をつぐむ必要が出てくる。それをLLMの世界では「ファインチューニング」と呼んでいるらしい。ファインチューニングをしないと一応会話はできているものの空気が読めないAIって感じになってしまう。
ファインチューニングは個人でも可能か?
先ほどLLMを作ることはビッグテックでないと難しいと話したけれど、このファインチューニングは個人規模でも開発が可能だそう。イメージとしては先ほどの上司との会話のようにLLMは上司を前に複数の文章案を思いついているが、教育担当の事前のアドバイスを参考に上司が喜びそうな文章を選んで答えるといった場合、これはLLMが元々持っている文章を思いつく能力を増幅させているわけではなく、思いついた結果の中から都合が悪いことを言わないように制限しているわけだから超高性能なコンピュータなどは不要という理屈みたい。
気の利いたお喋りさえできれば完成か?
ファインチューニングで気の利いたお喋りができるだけでは何の役に立たないという課題もある。これは人間にも言えて、学生が就活を経て社会人になるときを想像するとわかりやすい。就活をするくらいの年齢であれば流暢に文章を組み立てることができる。しかし業務には専門知識が必要になってくるので新社会人では「あいつお喋りは楽しいんだけど全然仕事できないんだよ」となるだろう。人間も医学書を読んで医学の知識を持たせれば医者になり、料理本を読んで料理の知識を持たせれば料理人になるという具合で専門知識が上乗せされて一人前になっていく。LLMも言語を自然に話す能力はあれど、それだけでは人間の新社会人みたいなものでしかない。
LLMに追加の専門知識を覚えさせる
新社会人のようなLLMに色々な業界や会社がもつ固有のノウハウを覚えさせることができる技術としてRAGというものがあるらしい。"Retrieval Augmented Generation"の略らしいのだけれどいい感じの日本語訳がないようで直訳して「検索拡張生成」と呼ばれている。RAGの中にノウハウを追加していくとLLMが元から持っている自然な言語力に加えてRAGの中の情報も活用するようになる仕組み。このRAGについてもLLMに参考書を渡すようなイメージでLLM自体が元から持っている言語力自体を増幅させているわけではないので個人レベルで開発することが可能だそう。
まとめ
現状「AIをやってみる」というのはビックテックが産んだ定石集である「LLM」に対し、都合のいいことだけを喋るよう「ファインチューニング」で言語統制をしつつ、仕事に必要な専門知識を「RAG」に詰め込んで便利な召使いに改造することを指すみたい。要するにやってることは新入社員に社会人のマナーや仕事を教えている感じ。これらの単語で色々調べてみると既にいじってみた人たちの記事が見つかるので、今はそれを参考にしながらエンジニアとして実際にいじる側の知識を蓄えていけばビジネスの場でも色々お話できそう。ちなみに個人でもできるとは言ったものの実際のところゲーミングPCやMacBook Proなんかの性能の良いコンピュータは必要みたいなのでそこは注意。
Discussion