#生成AI に「 #よしなに 」がきかないわけ #競技プログラミング 好きの #個人的見解
Abstract
LLM(大規模言語モデル)の出現により、AIが「うそをつく」という表現が使われるようになりました。以前はAIは単に次の単語を予測するだけであり、間違った出力は単なる面白さと受け取られていましたが、現在はLLMに対して人格を感じさせるような認識が広がっています。競技プログラミングにおいては、LLMもまた入力と出力の間に位置するモデルとして扱われ、特にデータの処理やモデルのチューニングに焦点を当てています。しかし、LLMを効果的に活用するためには、利用者が十分な知識を持ち、適切にデータを準備する必要があります。LLMの精度やハルシネーション(幻覚)の問題も含め、AIと人間の関係性やAIモデルの限界についても理解することが重要です。
Keywords
LLM (Large Language Model)
Competitive Programming
Model Tuning
Data Processing
Hallucination
本文
LLM、ChatGPTの出現以降、AIは「うそをつく」という表現をするようになりました。
それまでは、次の言葉を予測しつつ出力し、間違った答えを出力するが、それは面白いだけ、という時期が続きました
うそをつくという表現を人がするということは、要するにLLMに対しては人格のような格の上昇が見受けられたということだと思っています。
でも、競技プログラミング好きからみると、LLMはモデルを作成したものに入力があり、出力があるということに変わりはないです。ようするにモデルの作成で、人間にとっていい感じに出力する計算モデルができたという感覚以上はありません。
だから、入力があり、出力があり、それの間にLLM(でかい言語処理をするモデル ラージなランゲージなモデル)があるってことです。
競技プログラミングでは、
データをよく見る
データをきれいにする
データをモデルに食わせるために数値化する
いい感じにデータを修飾する
モデルを作りいい感じにチューニングする
トレインデータを分けて、モデルを評価する
未知の入力から未知の出力をいい感じに出す
モデルと出力をサブミットする
ってのが大まかな流れです。これをぐるぐるやります。そんで、いい感じに提出物が評価されるのがあっという間に来るって感じです。わっかるかな~わっかんないかな~。わかってほしいな~。
で、競技プログラミング業者から提供されるのが、トレインデータ、テストデータ、サンプルサブミッションデータ、です。あれば、データの説明のデータ、その他の、サブのデータが提供されるのを、いい感じにさっきの流れをぐるぐるやります。あっちいったり、こっち行ったりしながら、大体データをよく見ること、きれいにすること、いい感じにデータを修飾すること、ってことが俺はほぼほぼいい成績をとるためにやってることです。
で、おそらくなのですけれど、モデルに入出力するデータを色々変えても何とかなるのがLLMだろうと思っています。パラメータたくさんにして、要するにここでは、モデルをいい感じにチューニングするのがいっぱいモデルがあるんだろうかなと思っています。あっちのモデルこっちのモデルそっちのモデルと、食わせることで、自然言語から自然言語を出力してんだろうなと思ってるのは、LLMのファインチューニングなんかやってみると、ああそういうことか、結局これはモデルなんだなと思ったりします。
で、競技プログラミング好きから言えば、入力データをかなりきれいにしないと、きちんとモデルを評価できないし、出力データがとんでもない感じになります。
入力で、たとえば、講談師の神田伯山さんて、ますけれど、「神田伯山でだれ」ってLLMに問うのは、入力データとしてはあまあまです。
それと、別のことですが、この論文を要約してって入力するってのは、この論文をテストデータとして食わせてあげてるってことになります。
この二点
神田伯山ってだれ、200字以内で出力してください
の問いに、たとえばLLMは「神田伯山は有名な落語家で、なんちゃらなんちゃら」と出力していた時期がありました。これは、2019年までのデータしか食っていない時期に、2020年に襲名をした六代目神田伯山さんの問いを入れたためです。
検索せいっていうパターンですね。ものを知っている知らないを、量で評価する姿勢です。
これって、トレインデータにないことがテストデータで入れられたってことになりますよね。なんとなくあってるけど、全然違う出力になることを「うそをついた」という表現が出ている時期です。
うそをつくという能動性をLLMに認めている時点で、格の上昇が見受けられますね。
それと「この論文を要約して」とか、「この論文」のテキストデータを食わせることはあるかなと思います。
それは、結構いい感じにLLMにとっての入力データになります。モデルのチューニングには最適ですね。整然とした論理的で整合性のある自然言語のきれいな、数値化しやすいデータです。
こんなにいい感じのデータを日々食わせている状態ですので、大学院生の論文と言われるものは、引用ばっかりするわけですよ。それとか、論文を読んでいる先生がまとめて教えてくれることを言い感じにまとめたり、フィールドワークして、いい感じにまとめたりなどなど論文て、競技プログラミング好きから見るとこんなにきれいなデータはあんまり手を入れる必要ないかな、モデルをチューニングするのには最適じゃんとなるわけですよ。
だから、論文をよく学んだLLMってのができて、ありていの論文は入力さえ工夫すれば大体出るんじゃないかなと思います。
宿題はLLMに解かせろってのが、当たり前になるかなと思ったりします。
ただ、競技プログラミングのコードでバンバンにLLMを使うと、やっぱりハルシネーションバリバリです。
ハルシネーションって、わかんなければ、詳しくはChatGPTに聞いてみてくださいませ
だから、コードを出力させるときには、プロンプトエンジニアリングもさることながら、かなりその分野を勉強しないと勝てないんです。
時短のためにはLLMの助けを借りるのはいい感じですが、よしなによろしくはないんです。
で、これから言いたいことになるのですが、LLMの力を借りるときはかえっていろいろ勉強したり、いろいろな言葉を学んだり、分野の違うことを知っておいたりしないと、うまくいかないってことです。
よしなに、よろしくではなく、あなた、LLMになげた問いの知識どれくらい持ってますか?が出力を評価するためには必要です。
で、トレインデータを分けるのが、トレインテストスプリットっていうサイキットラーンの中に入ってるやつで、言い感じに分けるのですが、例えば、学習に使うのが、前半80%、評価に使うのが、後半20%、評価の指標は、なにか誤差を計算するものってやるんですよ。
この中の評価する20%が人間で、誤差を提出するのが、人間で、その際、「うそをつく」と言うのかなと思います。
そんな感じでLLMと付き合うと、あ、こいつはモデルだな、ラージなランゲージで言い感じにチューニングされたモデルだ、誤差はこれこれだから、後半の誤差を評価するのが、人間とモデルの誤差だなって感じで付き合うときには、よしなにはないと思います。
全然間違ってるかもしれませんが、LLMと人間の関係を感想みたいな感じで書きました。
さて問題です。この文章でLLMを使った部分はどこでしょうか?
ここから先は
¥ 300
この記事が気に入ったらチップで応援してみませんか?