ChatGPTにディープラーニングか聞いてみました。

※ 当サイトではアフィリエイト広告を利用しています。リンクは広告リンクも含みます。

この記事は約13分で読めます。
広告

「ChatGPTは、OpenAIによって訓練された大規模な言語モデルです。このモデルは、自然言語処理タスクに使用され、文章の生成、翻訳、質問応答などを行うことができます。」
と言うのが一般的な説明ですが何のことか分かりません。
この記事はDeepLeaning→ChatGPTという形で勉強するとよかったので、素人の私の、にわか知識の推論をはさみつつ、ChatGPTの仕組みをまとめたものです。

「Vプリカ ChatGPT」みたいなワードで検索してこちらに来た方は、VプリカでChatGPTが支払えるかの情報は、こちらの記事では分かりません。Googleが勝手に結びつけています。すいません。

まずChatGPTに聞いてみました。

質問:ChatGPTはディープラーニングですか
ChatGPT:はい、ChatGPTはディープラーニングモデルです。

ディープラーニングが、ある程度わかる人は、「モデルは固定なのか」に貼ってある動画を見ると良いと思います。
ChatGPTを実際にアプリで運用する情報が欲しい人は「結局Microsoft Azure OpenAIを使うことになるのか?」に貼ってある動画を見ると良いと思います。

広告

Deep Learningの勉強におすすめYoutube

まずDeepLeaningについて勉強するのにおすすめYoutubeで、この3本で結構、学びがありました。

「何の加工もされていない生の入力データから所望の出力が直接得られるように学習したほうが(end-to-end)で解いたほうが高い性能が期待できるというセオリがあります。これは人間が前処理や後処理を設計するよりも、すべての処理をニューラルネットワークにまかせてデータから学習してしまったほうが前処理に相当する処理もニューラルネットワークはデータから自動的により適したものを獲得していくことができるという理由です。」引用元実践Deep Learning:波形データの入出力

この言葉が私の中でポイントになりました。それで以下のように考察しました。

私の考察

この章はChatGPTを知った直後に、いろいろしらべた私の考察です。当然間違っているので、飛ばしてもいいですが、軽く読んでみてください。
初心者目線ゆえ初心者の人の理解の役に立つかなと思いました。

初心者の妄想です。
入力に対する正解(出力)のデータセットがたくさんあれば、あとは力わざ(コンピューターの性能等)で高性能なAIができると思いました。

英語から日本語の翻訳は、そこら中に人間が訳したデータセットがあります。
例)This is a pen.→これはペンです。
これを入力、出力として、途中の過程を人間があれこれ気にせず、ひたすら学習させれば翻訳機ができそうです。

しかしChatGPTは日本語で聞いたら日本語で返答します。同じ言語の場合、質問と回答のセットしか学習に使えるものがないような気がしたので、誘導尋問的にChatGPTに聞きました。

質問:ChatGPTは質問応答のデータセットを使っていますか
ChatGPT:はい、ChatGPTは質問と回答を含む大量のテキストデータをトレーニングデータとして使用しています。これにより、質問応答タスクにおいて適切な回答を生成することができるよう学習されました。

質問:具体的に教えてください
ChatGPT:ChatGPTはOpenAIが開発したAI言語モデルで、テキストの生成にディープラーニングを使用します。トレーニング中に、質問と回答を含む大量のテキストデータに暴露されました。これにより、質問に対する適切な回答を生成することができるよう学習されました。

具体的には教えてくれませんし、これ以上つづけても答えは得られるような気がしません。

日本語の質問と回答のデータセットで思いつくのはこれ。
質問:日本一の山は? 回答:富士山
こんな感じのデータセットを作るのか?クイズとか学校の問題集とかあるけどそれを使うのか?でもそんなんじゃ数少ないし他に日本語の質問と回答のセットがたくさんあるとは思えません。

そこで思ったのが
英語と日本語の翻訳も英語を質問、日本語を回答と考えれば、質問と回答の関係になっています。人間が英語と日本語と分けているけどコンピューターの中では数字なので質問と回答の関係に色はありません。これで学習させておけば日本語で聞いたら日本語で返すかもしれません。ChatGPTに日本語で聞くと、たまに英語になるのも怪しいです。日本語と英語に限ったはなしではなく、いろんな言語で翻訳データはあるので、これを一色単にするといっぱい質問と回答のテストデータができます。普通に考えると、こんなデータで日本語の対話型はできないような感じがしますが。
コンピューターからしてみれば今、翻訳している。今、対話しているなんて切り分けてない。ただ入ってきた数字に対して出力に適した出力を推論しているだけ。
ということでChatGPTは翻訳機みたいなものではないでしょうか。(どや顔で結論書いたけど)

1日後。

あ!チャットのやり取りとか、返信を正解にすれば成り立つか。あとネット上にQ&Aとかいっぱいあるか。yahoo知恵袋とか。ただの文章からだと質問と正解というふうにはわけれないと思うので、その辺を利用しているのか?

あとは余計なことしないで。余計なこととは人間にとって意味のある名詞などの品詞分けや前後の文脈を意識して処理すること。実際どうやっているかは分かりませんが、ここは複雑にならないように説明するためと、ディープラーニングのだいご味でもあるので、あえて以下のようなデータセットで説明します。

質問:日本一の山は?→「日、本、一、の、山、は」と一文字ずつ分解して入力
回答:富士山→「富、士、山」と一文字ずつ分解して出力とする。
ていうデータセットをいっぱい作って、こういう結果になるように学習させる方式だったら理解しやすいんだけど。
さすがに一文字ずつでは意味を持たないので単語単位でやっていると思います。英語なんかは単語単位でスペース開いてるので分けやすい。日本語も形態素解析という名前で、分離する技術は確立されてるし。文章なんて画像のデータ量より圧倒的に少ないんだから、いけそうな気はします。逆にデータセットの量が必要になるのかもしれないけど。

実際の運用は入力された値に対して学習したパラメータを使って、四則演算(違うかも)して出力してるだけ。

複雑なようで結構単純なんだよな~。
入力から出力の間のしくみ、パラメータを決定する方法も、難しい専門用語や数式がでてきます。でもYoutubeでわかりやすく解説していただけるのを聞いてると、そんなに難しくはありません。要するに入力されたデータ(コンピューターの中では数字)を正解の数字になるように変数(パラメター)を決定する。しかも与えられたデータセット全部で正解がでることを目指しています。そうやって作られたパラメータを使って未知の入力に対して計算して出しているだけです。

電卓が登場したときもキラキラしていました。能力だって=ボタンを押したところから人間とスピード勝負するんだったら50年以上前から人間を超えていたと思います。今は100円ショップで売ってます。でもその構造はとても難解です。AI技術も今までの技術の蓄積でできたと思うので特別扱いするのも変な気がします。

電卓は1+1=2など不変のルールで動いているので入力した値に対する答えは正確です。
ディープラーニングはどうかというと多量の質問と答えのデータセットから学習したパラメータを使って入力した値を計算し出力しています。学習するデータセットが1+1=2のほかに答えが3,5,10といった間違ったデータセットをもとに学習したら1+1=2とは答えられなくなります。質問と答えの関係は重要になってきます。なので何をもって正解かわからないデータを多量に学んでも、そのデータをもとにした答えしか返ってきません。

電卓みたいに正解を返してるわけではないことは認識していたほうがいいと思います。

仕組みを知るとChatGPTやAI技術ってコンピューターが自分で勝手に考えてるみたいないイメージは持たず入力値を計算してだしてるだけの機械だなってイメージになると思います。

以上、しろうとの私がディープラーニングには質問と回答のデータセットが重要だというところから推論しました。

ディープラーニングとは(私の認識)をまとめると

  • AIの本体はモデル
  • モデルはたくさんのパラメータを持っている
  • 入力値をモデルに入れると出力値がでてくる
  • 入力値と出力値のセットを用意する。入力に対して、それに相当する出力がでるように中のパラメータをきめる。(学習)
  • 理想は全ての入力値と出力値の関係が保持されるようにパラメータが決まる。
  • このようにしてできたモデルに未知の入力が入ってきたら、出力は学習させたデータセットと同じ入力値と出力値の関係になるような出力が出てくる。

モデルは固定なのか

学習し終わったパラメータは更新されないのか気になったので以下質問してみた。ファインチューニングという言葉で質問した。

質問:今私が利用しているChatGPT(あなた)はファインチューニングされていますか。
ChatGPT:私はOpenAIが公開している大規模な事前学習済み言語モデルChatGPT-3をベースにしており、そのままの状態で利用されています。私自身は、ユーザーからの入力に応じてChatGPT-3が生成した文章を返すことができます。

ということで、みんなが使って、その都度、モデル(パラメータ)を更新してかしこくなっているわけではなさそうです。GPT-3の話ですが、ここに9~12カ月ってかいてあります。

こちらの解説動画もスッキリします。ChatGptについてかなり疑問点がクリアになると思います。
AIcia Solid ProjectさんのYoutubeはハードルが高いです。(数式、見るとめまいがする。😂)最初から見てると、ここまでたどり着けない人が多いかもしれない。この回たちが埋もれてしまうのはもったいないのでご紹介。リンクで貼ったところはあまり知識がなくても分かりやすい部分です。なおかつ疑問に思っている人が多いところではないかと思うので必見です!3、モデルはハードル高くなるけど見たほうがいいです。

こちらはGPTではなくBERTですが同じく分かりやすい部分ですので必見です!
AIcia Solid ProjectさんのYoutubeにGPT3もありますね。これもおすすめです
というか今見直したら、最初からわかりやすかった。全部おすすめです。でも中盤かなりつらい。前の回の知識なしでもわかる話もあるので飛ばして見ても大丈夫かも。

Pythonに興味が出たら、こちらも参考にしてください。

Transfomerについて

ChatGPTの基になっている技術としてTransformerをよく耳にします。
こちらの動画がおすすめです。こちらを見て思ったのですが、Transfomerが解決した問題として位置依存性と高速化とありました。高速化は文字通りですが、位置依存性についての説明を聞くと、ChatGPTの構成として上で私が考察したような単純な理解(折り曲げているところ)でも、そんなにかけ離れていない気がしました。

絵を描いてください!

プログラム書いたり、表を作ったりするのでなんでもできるものではなく、あくまで言語モデルという閉じられた機能であることを確認するために以下の質問をしてみた。

質問:猫の絵を描いてください
ChatGPT:申し訳ありませんが、私は画像を描く機能は持ち合わせておらず、テキスト形式でしか情報を提供できません。以下は猫の絵を描くための指示です。略~

質問を変えた。

質問:テキストアートで猫の絵を描いてください。
ChatGPT:こちら、猫のテキストアートです:
/_/\
( o o )
=( = )=
~(*)~/

英語や日本語やプログラムや表やテキストアートというテキストベースのデータを学習して出来上がったモデルを通してChatGPT(GPT-3.5)は答えを出しているということだと思います。

結局Microsoft Azure OpenAIを使うことになるのか?

ChatGPTのAPIをGoogle Colaboratoryなどで使えるが、実際のアプリで利用しようとすると、どうすればいいのか分からない。そういう時に、これを見るとヒントがあるかも。Azure OpenAIを使うのをおすすめしているわけではないですが、どうすればいいか考えやすくなると思います。

この記事を書いたイチゲを応援する
Vプリカでのお支払いがおすすめです。

こちらの記事も参考になります。https://eng-blog.iij.ad.jp/archives/18386

あとがき

以上「Chatgpt ディープラーニング」について私なりに調べた結果でした。

実務で焦っている人は上のAzure OpenAIの動画を見ることをおすすめします。

私の場合、課金の可能性があるものは怖くて近寄らないようにしてるのでChatGPTの API(プログラムでプロンプトのやり取りができる)は今のところ使わないです。英語サイトだしプログラムに入れてミスったときのことを想像してしまいます。リミット設定があるとはいえ躊躇します。ChatGPTの APIは無料お試し分があるらしいが、今飛びつくのではなく、ここぞという使用方法がみつかってからかなと思っています。初心者の人はYoutubeとかで人が使っているの見るぐらいでやめといたほうがいいと思います。ChatGPTのAPIを課金したからといって、すごいものができるというわけでもないと個人的には思っております。

ディープラーニングについてPyTorchで1個作ったら、学習、モデル、パラメータの意味が多少理解できました。しかしPyTorchで学習進める前にChatGPT(無料版)やBingでできることを理解したほうがいいと思いました。結局、大手の競争。しくみは同じで学習させるデータ量とパラメータ数、勝負なのかなと思ってます。機能を維持したまま最新情報に学習させるには、どのくらい期間がかかるのか?半年開発を停止してとか、お願いしてるのもこのせいなのか?発表されるニュースが限定した条件で動いていて、モリモリに発表されていないか?自分で動かして確認かな。あと、ほぼ中身は大手のAIなのに別の名前で出てたり、自称AIだけど中身は単純なプログラム、怪しい謎理論、謎システム、手法には気を付けようと思いました。(まじめなちゃんとしたものなのか、課金だけが目的なものなのか、判断できない)
「プロンプトエンジニアリング」というキーワードにもこだわるのではなく(本当に使えるものかどうか分からないから)、「しくみ」に重点を置いていこうと思います。
またモデルについても色々浮気せず無料で信頼できるChatGPT(無料版)とBing(これから出てくるGoogleのBardとか大手のみ)で実験するのがいいと思ってます。

Azure OpenAIちょっと調べた。REST APIとか試してみたいけどAZUREとかクラウドサービスって無料で、どこまで使えるのかよくわからないんだよな~。
AIはこの辺にして、クラウドの勉強する。
Streamlit CloudRenderRailway、Heroku、Dockerとか取り合えず使ってるけど仕組みはいまいちわかってないから、その辺をクリアにしたい。
クラウド勉強するのにIaaSとかPaaSとか「意味の分からない言葉」を「意味の分からない言葉」で説明している文章を見ても意味は分からないままです。
ChatGPTに「小学生でも分かるように教えて」と聞いても、新たな「意味の分からない言葉」がかえってくるだけ。
「意味の分からない言葉」が具体的に何を指すのか実物で見て動かすのが1番だと思ってます。
再帰という言葉の意味も最近わかった。(多分すぐ忘れる)。他にもチャットボットのbotと言う言葉を、よく見るけど意味は分からないです。
ということで自宅サーバー構築から勉強する。Youtubeで「中古のパソコン使って~ファンの温度が~」みたいなので勉強させていただきます。(実際に作るわけではない)

この記事を書いたイチゲを応援する
Vプリカでのお支払いがおすすめです。
MENTAやってます(ichige)

コメント

タイトルとURLをコピーしました