AIのchatGPTを自分独自に作れるGPTsを制作しています

AIのchatGPTを自分独自に作れるGPTsを制作しています。

ご希望のGPTsの制作希望の方は、お問合せよりご連絡ください。

●下記が公開中のGPTsです。
まだまだストックがありまして、未公開の作品多数です。
ちょこちょこ公開していきます。ご期待ください。

●ご利用は上記の目次からリンク先へ飛んでください。

 

 

********************

幼稚園児向け 数の足し算

足し算を覚えたての人でもできるように、ひらがな対応です。

正解するとほめてくれます。

https://chat.openai.com/g/g-EtG9DOYbG-potupokun-you-zhi-yuan-er-shu-nozu-sisuan

********************

幼稚園児向け AI家庭教師 ポッポくん

AI家庭教師が幼稚園児向けの最適な問題を出してくれます。
ひらがな、漢字両対応。
詳しい解説もしてくれます。
幼稚園のお子さんを持つお母様方は、ぜひ使ってみてください。

https://chat.openai.com/g/g-fowLhvS7H-you-zhi-yuan-er-xiang-ke-aijia-ting-jiao-shi-potupokun

 

 

********************

電博堂 AI広告代理店

AIの広告代理店、電博堂がメンバーと議論して広告戦略を練っていきます。

ぜひ利用してみてください。

https://chat.openai.com/g/g-lDy4DN5kh-dian-bo-tang-aiguang-gao-dai-li-dian

 

********************

朝までチャットテレビ

あなたが与えたテーマを、専門家と有識者がそのテーマに沿って激しい討論バトルを展開します。
討論司会者は「田丸総二郎」と言うジャーナリストで、登壇者をズバッと仕切っていきます。

https://chat.openai.com/g/g-ee0E3oDuv-zhao-madetiyatutoterebi

********************

AI動物変身写真館

あたなのお好きな動物をご希望の職業へ変身させちゃいます。

https://chat.openai.com/g/g-mONPcmgDi-aidong-wu-bian-shen-xie-zhen-guan

********************

・Introducing Japanese Animation 海外版 日本のマンガを紹介します
海外の方向けに日本のアニメを紹介するGPTs

These GTPs are an introduction of Japanese animation to the international audience.

Example: Shonen magazine Sports
and so on, please enter.

リンク先はこちら↓
https://chat.openai.com/g/g-PqTZlaSSg-introducing-japanese-animation-hai-wai-ban-ri-ben-nomangawoshao-jie-simasu

 

*********************

・Kanjiya Positive Kanji and Like a lesson learned.
漢字屋 海外の方に日本の漢字と故事成語を紹介するGPTsです

以下、英語で表記します。

These GPTs offer positive Japanese kanji and lessons learned.
We encourage foreign visitors interested in Japanese Kanji to take advantage of this site.
リンク先はこちら↓

 

**********************

ゴルフ野性塾の坂田プロの口調で、経営や起業のお悩みに答えてくれるGPTsを作りました。

「経営野性塾 教えて坂田部塾長」

https://chat.openai.com/g/g-yMovbPKIo-jing-ying-ye-xing-shu-jiao-eteban-tian-bu-shi-jiang

⚫️インスタはリンクへ飛べないので、ツイッターで
#ゴルフ野性塾
で検索かけると出るかもです。
さすれば飛べます。

⚫️今のところ使えるのはchat GPTのPlusに課金しているユーザーのみです。

正直ちょっとパロディっぽいですが、質問にはGPT-4が真摯に答えてくれます。

ゴルフ野性塾ファンの方々には楽しんでもらえるかと。

ぜひご利用してみてください。

**********************

ゴルフ野性塾の坂田プロの口調で、スポーツのお悩みに答えてくれるGPTsを作りました。

「スポーツ野性塾 教えて坂田部塾長」

https://chat.openai.com/g/g-pS7iZ1wJh-supotuye-xing-shu-jiao-eteban-tian-bu-shi-jiang

⚫️インスタはリンクへ飛べないので、ツイッターで
#ゴルフ野性塾
で検索かけると出るかもです。
さすれば飛べます。

⚫️今のところ使えるのはchat GPTのPlusに課金しているユーザーのみです。

正直ちょっとパロディっぽいですが、質問にはGPT-4が真摯に答えてくれます。

ゴルフ野性塾ファンの方々には楽しんでもらえるかと。

ぜひご利用してみてください。

***********************

格闘技の勝敗を予想するGPT sを作りました。

「予想屋次郎 AI格闘技予想屋」

https://chat.openai.com/g/g-mW7uaxmcr-yu-xiang-wu-ci-lang-aige-dou-ji-yu-xiang-wu-ver0-6

なかなか面白いものができたので格闘技好きの皆さんと共有したいと思います。

現役対過去の選手もオッケーです。

使い方は
試合形式 選手2名を入力してください。

例)MMA マクレガー ボブサップ

試合形式と選手同士はスペースで開けてください。

AIが情報を収集して解析するので、回答が出るまで若干時間待ちです。

過去のあの選手と今のあの選手が対戦したら。

こないだボクシングの
マイクタイソンとモハメッドアリを予想してみました。

なーるほどです。

皆さんも、ぜひお試しください。

AIのGPT-4にRIZIN45の主要試合の勝敗予想をしてもらいました

格闘技の勝敗を予想するGPT sを作りました。

「予想屋次郎 AI格闘技予想屋」

https://chat.openai.com/g/g-mW7uaxmcr-yu-xiang-wu-ci-lang-aige-dou-ji-yu-xiang-wu-ver0-6

⚫️今のところ使えるのはchat GPTのPlusに課金しているユーザーのみです。

なかなか面白いものができたので格闘技好きの皆さんと共有したいと思います。

現役対過去の選手もオッケーです。

使い方は
試合形式 選手2名を入力してください。

例)MMA マクレガー ボブサップ

試合形式と選手同士はスペースで開けてください。

AIが情報を収集して解析するので、回答が出るまで若干時間待ちです。

過去のあの選手と今のあの選手が対戦したら。

こないだボクシングの
マイクタイソンとモハメッドアリを予想してみました。

なーるほどです。

皆さんも、ぜひお試しください。

****************

さて
格闘技って、どっちが勝つのか知りたい時がありますよね。

そんなあなたのご希望を叶えて、
2023年12月末のRIZIN 45の主要試合を予想してみましょう。

※下記の予想は全てAIのGPT-4による予想です。
当方の考えなどは一切入っていませんので、ご了承ください。

それでは、以下5試合とプラスして番外編を予想してみます。

・堀口恭司 vs. 神龍誠

・フアン・アーチュレッタ vs. 朝倉海

・クレベル・コイケ vs. 斎藤裕

・平本蓮 vs. YA-MAN

・久保優太 vs. 安保瑠輝也

番外編

・ボクシング マイク・タイソン対モハメッド・アリ

・MMAとキックボクシングでそれぞれ アントニオ猪木 大山倍達

・MMA ケラモフ対クレベル・コイケ

*********ここからGPT-4の試合予想です。

●MMA 堀口恭司 vs. 神龍誠

堀口恭司と神龍誠の試合結果について予想を行う前に、それぞれの選手のプロフィールと実績を確認しましょう。

堀口恭司のプロフィールと実績
出身地・在住地: 群馬県高崎市出身、フロリダ州ココナッツクリーク在住
生年月日: 1990年10月12日
身長・体重・リーチ: 身長165cm、体重57kg、リーチ169cm
階級: フライ級、バンタム級
スタイル: 伝統派空手(松濤館流)、オーソドックススタンス

総合格闘技戦績: 37試合、31勝(15KO/TKO、4サブミッション、12判定)、5敗(2KO/TKO、1サブミッション、2判定)、1無効試合

経歴: 第7代Bellatorバンタム級王者、初代・第4代RIZINバンタム級王者、第9代修斗世界バンタム級王者など​​​​​​。

神龍誠のプロフィールと実績
出身地: 宮城県仙台市
生年月日: 2000年7月5日
身長・体重・リーチ: 身長165cm、体重57kg、リーチ165.5cm
階級: フライ級
スタイル: レスリング背景

総合格闘技戦績: 19試合、16勝(4サブミッション、12判定)、1敗(判定)、1引き分け、1無効試合

経歴: 現CFFCフライ級王者、現DEEPフライ級王者、全国中学生レスリング選手権大会準優勝など​​​​​​​​。

予想分析
堀口恭司と神龍誠の間の過去の対戦では、25秒で偶発的なアイポークにより無効試合となっています​​。両者の戦績、スタイル、そして物理的特徴を考慮して勝敗予想を行います。

実績と経験: 堀口はBellatorバンタム級王者、RIZINバンタム級王者などのタイトルを保持し、経験豊富。一方で神龍は若干23歳であり、CFFCフライ級王者、DEEPフライ級王者などの成績を持ち、若さと勢いがある。

スタイルと能力: 堀口は伝統派空手のバックグラウンドを持ち、KO勝ちが多いことから打撃力が強いことが伺える。神龍はレスリングを背景に持ち、柔術やムエタイも経験している。
これは彼が多様な格闘技スキルを持っていることを示している。

身体的特徴に関しては、両者はほぼ同じ身長と体重であるため、物理的な優位性は特に見受けられません。

勝敗予想と勝率
堀口恭司: 経験豊富で、特に打撃において強さを持つ。国際舞台での実績も豊富。

神龍誠: 若く、レスリングを基礎に多様な技術を持つ。勢いもあるが、大舞台での経験は堀口に劣る。

勝率予想: 堀口恭司 60%、神龍誠 40%。堀口の打撃力と経験が、神龍の多様な技術と若さに対してやや優位に立つと考えられます。ただし、神龍の成長速度とポテンシャルの高さも考慮する必要があり、完全な予測は難しいです。

●MMA フアン・アーチュレッタと朝倉海

フアン・アーチュレッタと朝倉海は、バンタム級で競争する経験豊富な総合格闘家ですが、彼らの背景とスタイルはかなり異なり、それが仮想試合の結果に影響を与える可能性があります。

フアン・アーチュレッタ:

戦績: アーチュレッタのプロMMA戦績は29勝4敗です。キャリアで11のノックアウト、1のサブミッション、13の判定勝ちを達成しています​​​​​​​​。

スタイル: 彼のファイトスタイルは主にボクシングとレスリングで、ブラジリアン柔術の紫帯も持っています​​​​。この組み合わせは立ち技と地上戦の両方に対応できるスキルセットを示しています。

朝倉海:
戦績: 朝倉のプロMMA戦績は20勝4敗で、12のノックアウト勝ちと1のサブミッション勝ちが含まれます​​​​。

スタイル: 彼のバックグラウンドには空手、相撲、ブラジリアン柔術が含まれています​​。これは空手からの強力な打撃能力と、相撲とBJJのトレーニングからの組み技スキルを示しています。

試合分析:

打撃戦: 朝倉の空手背景は、特に速度と技術の面で打撃戦での優位性をもたらすでしょう。
アーチュレッタもボクシングの背景から優れた打撃技術を持っていますが、朝倉の多様性と速度に対応するのは難しいかもしれません。

組み技: アーチュレッタのレスリングとBJJのスキルは、組み技の交換で有利になる可能性があります。彼の地上でのコントロール能力は、朝倉の打撃能力の一部を無効にするかもしれません。

経験: 両者とも豊富な経験を持っていますが、アーチュレッタのわずかに多い試合数と、Bellator MMAやRizin Fighting Federationなどの異なるプロモーションでの経験が戦略的な優位性をもたらすかもしれません​​​​。

予想される結果:
彼らの戦績、スタイル、経験を考慮すると、フアン・アーチュレッタと朝倉海の試合は非常に競争力が高いものになるでしょう。

アーチュレッタのレスリングとBJJは彼に組み技でのコントロールを与えるかもしれませんが、朝倉の打撃は特に立ち技の交換で重大な脅威を与える可能性があります。

結果は、誰がより効果的に自分のゲームプランを実行するかに大きく依存する場合があります。

試合が主に立って行われる場合、朝倉の優れた打撃により勝利する可能性は60%ほどあるでしょう。
しかし、アーチュレッタが試合を地上に持ち込み、彼のレスリングとBJJスキルを活用できれば、彼の勝利の可能性は55%ほどに上がるかもしれません。

全体的に、試合は非常に接戦になる可能性が高く、アーチュレッタが自身の組み技ゲームをうまく実行できれば、わずかながら優位に立つと予想されます。

●クレベル・コイケと斉藤裕

クレベル・コイケと斉藤裕のMMA対戦についての勝敗予想を行います。

クレベル・コイケの特徴と戦績
生年月日: 1989年10月16日(34歳)
出身: ブラジル
身長: 178 cm
体重: 66 kg
ファイトスタイル: 柔道、ブラジリアン柔術、グラップリング、シュートボクシング
現役期間: 2008年 –
試合数: 40
勝利: 31回(ノックアウト2回、タップアウト27回)
フェザー級での活動が主​​。

斉藤裕の特徴と戦績
生年月日: 1987年10月8日(36歳)
出身: 日本、秋田県
身長: 173 cm
体重: 66 kg
ファイトスタイル: 伝統派空手(剛柔流)、ブラジリアン柔術(茶帯)
総合格闘技戦績: 30試合、21勝(KO 5回、一本勝ち 2回、判定勝ち 14回)、7敗、2引き分け
フェザー級での活動が主​​​​。

予想
クレベル・コイケは高いグラップリングスキルを持ち、特にブラジリアン柔術での実力が際立っています。彼の勝利の多くがタップアウトによるもので、地上戦での優位性が予想されます。

斉藤裕は空手のバックグラウンドを持ち、打撃に強みがありますが、ブラジリアン柔術でも茶帯を持つなどグラウンド戦にも一定の対応力を持っています。
ただし、クレベルと比較するとグラウンドでの技術では劣る可能性が高いです。

結論
この試合の勝敗予想は、クレベル・コイケの勝利が70%、斉藤裕の勝利が30%と見積もります。

クレベルの強力なグラップリング技術が試合を決定づける最大の要因であり、彼が地上戦をコントロールし、タップアウトに持ち込む可能性が高いと考えられます。

一方で、斉藤が立ち技で優位に立ち、打撃で試合を有利に進める可能性もありますが、クレベルの地上戦への持ち込み能力を考慮すると、その確率は低いと予想されます。

●MMA 平本蓮 vs. YA-MAN

平本蓮とYA-MANのMMA試合についての予想を行います。まずは両選手の情報を確認しましょう。

平本蓮
プロフィール: 東京出身、1998年6月27日生まれ、身長173cm、キックボクシングバックボーン​​。
戦歴: MMA戦績は2勝3敗​​。12歳で全国U-15ジュニアボクシング大会優勝、高校1年でK-1甲子園優勝、高校3年でK-1ライト級世界トーナメント準優勝、22歳で総合格闘技に転向​​。
スタイル: K-1で強敵を倒した打撃技術がMMAでも有効。ただし、K-1の打撃とMMAの打撃には違いがあり、MMA用の打撃に進化することでさらに強くなる可能性がある​​。

YA-MAN
プロフィール: 1996年5月31日生まれ、身長172cm、RIZINフェザー級で戦う格闘家​​。
戦績: MMA戦績は1勝0敗​​。
スタイル: 元キックボクサーで、オープンフィンガーグローブを使用したMMAスタイルに注目​​。バックボーンは野球とストリートファイト​​。

予想
平本蓮は打撃に優れたファイターで、K-1での経験がMMAでの打撃技術に生かされています。
一方、YA-MANも元キックボクサーとして打撃に強みを持ち、MMAでの経験は浅いものの、ポテンシャルは高いと考えられます。

平本のMMA戦績は2勝3敗とまだ安定していませんが、YA-MANのMMA経験はさらに少なく、これまでの1試合のみです。
このため、試合経験の面では平本がやや優位に立っていると言えます。しかし、両者とも打撃が得意であり、一撃で試合の流れを変える力を持っています。

勝率を予想するならば、平本蓮の勝率を約55-60%と見積もります。
これは彼の豊富な打撃経験とMMAでの成長が考慮されています。
一方でYA-MANの未知数なポテンシャルも無視できず、彼の一撃による勝利の可能性も十分に考えられます。したがって、非常に接戦となる可能性が高いです。

●MMA 久保優太 vs. 安保瑠輝也

AI格闘技予想屋
久保優太と安保瑠輝也のMMAにおける対戦を予想するため、両選手のプロフィールと戦績を詳細に分析しました。

久保優太のプロフィールと戦績:
生年月日: 1987年10月19日(36歳)
身長・体重: 175 cm, 66 kg
スタイル: テコンドー、キックボクシング
総合格闘技戦績: 3試合2勝1敗​​​​​​。
特記事項: RIZINでの戦いにおいて、テイクダウンやグラウンド技術の弱さが見受けられ、キックボクシングの経験が豊富でもある。

安保瑠輝也のプロフィールと戦績:
生年月日: 1995年10月29日(28歳)
身長・体重: 180 cm, 70 kg
スタイル: オーソドックス(主にキックボクシング)
総合格闘技戦績: MMAでの戦績はまだなし​​​​。
特記事項: K-1 WORLD GPスーパーライト級での活躍が顕著。しかし、MMAの経験は乏しい。

予想:
両者ともにMMAでの経験が少なく、主にキックボクシングのバックグラウンドを持つため、立ち技での戦いが中心になる可能性が高いです。
久保は総合格闘技で2勝を挙げており、一定の経験を持っていますが、グラウンド技術に課題があります。対して安保は、MMAの経験はありませんが、長身を生かしたリーチの長さと、キックボクシングでの実績が彼の強みです。

勝敗予想では、**安保瑠輝也の勝率を60%**と見積もります。この予想は、安保のリーチと立ち技のスキルが、久保のMMA経験を上回ると考えられるためです。
しかし、久保が試合を地上戦に持ち込むことができれば、彼の勝機もあり得ます。安保のMMA未経験がどのように影響するかが注目点です。

番外編

●ボクシング マイク・タイソン対モハメッド・アリ

予想するマッチアップはボクシングの試合で、マイク・タイソン対モハメッド・アリです。

マイク・タイソンの戦績は50勝6敗(58戦中、KO勝利が44回)です​​。彼のファイトスタイルは、ピーカブースタイルと呼ばれるインファイトスタイルで、顎を引き、軽く握った両手で顔面をガードする構えです。このスタイルでは、相手のパンチをさばきながら素早い動きで間合いをつめ、ダイナマイトパンチでKOを狙います​​。タイソンは右オーソドックススタイルのボクサーファイタータイプで、華やかな攻撃と凶暴なパンチを得意とし、その攻撃は左右に関わらず全てのパンチでKOを狙えるレベルです​​。

モハメッド・アリの戦績は56勝5敗(61戦中、KO勝利が37回)です​​。アリのファイトスタイルは、パワー偏重のヘビー級ボクシングにおいて革新的であり、華麗なフットワーク(「ダンシング」と形容される)と、両手を低く構えて予想外の角度から放たれる鋭い左ジャブを使う型破りなアウトボクシングでした​​。

これらの情報を基に、ボクシングルールでのマイク・タイソン対モハメッド・アリの試合を分析します。

タイソンの強み: インファイトでの素早い動きと強力なKOパンチ。

アリの強み: アウトボクシングでの優れたフットワークと左ジャブ。

タイソンはインファイトでの圧倒的なパワーとスピードを持ち、接近戦では非常に危険です。しかし、アリは距離を保ちながら戦う能力に優れ、相手のパンチを避けつつカウンターを狙うスタイルが特徴です。

勝率を予想すると、アリの方が若干有利と見られます。その理由は、アリの動きがタイソンの攻撃スタイルに対して効果的であり、彼のフットワークとジャブがタイソンの接近を防ぎつつポイントを稼ぐことができるからです。
ただし、タイソンが一度でも接近戦に持ち込めば、そのパワーとKO能力で試合をひっくり返す可能性があります。

予想勝率はモハメッド・アリが60%、マイク・タイソンが40%とします。
アリのフットワークとタイミングの良いカウンターが勝利の鍵となりますが、タイソンの一撃必殺のパンチには注意が必要です。

●MMA アントニオ猪木 大山倍達

アントニオ猪木と大山倍達のMMAにおける対戦予想について、現時点での情報は以下の通りです。

アントニオ猪木については、彼がプロレスラーとして新日本プロレスの創業や異種格闘技戦で活躍したことがわかりました。
彼のスタイルはスピードに満ちた正統派スタイルで、コブラツイストや卍固め、延髄斬りなどを必殺技として用いたことが記録されています​​。
彼は1960年に日本プロレスに入団し、リングネームをアントニオ猪木に改名した経歴があります​​​​。しかし、具体的なMMAにおける戦績の詳細については、時間の制約上、確認できませんでした。

大山倍達については、彼のバックボーンが空手道、合気道、柔道、ボクシング、朝鮮古武道(借力、テッキョン)、中国拳法であることがわかりました​​。
また、彼は1952年に渡米し、プロレスラーやプロボクサーと対決した経歴があります​​。しかし、こちらも具体的なMMAにおける戦績の詳細については確認できませんでした。

これらの情報を踏まえ、両者のMMAでの対戦予想を正確に行うためには、アントニオ猪木と大山倍達の具体的なMMA戦績やスキルセットに関するさらなる情報が必要です。残念ながら、この情報は現在のところ不足しています。

●キックボクシング アントニオ猪木 大山倍達

大山倍達に関する詳細なキックボクシングの戦績を特定することができませんでした。
しかし、彼が極真空手の創始者であることと、キックボクシングに影響を与えたことは明らかです​​。

アントニオ猪木に関しては、彼はプロレスラーとして活躍し、コブラツイストや卍固め、延髄斬りなどを必殺技としていました​​。1960年にデビューし、プロレスラーとしてのキャリアを築きました​​​​。

キックボクシングのルールでアントニオ猪木と大山倍達が対戦した場合の予想は、両者のプロレスおよび空手のバックグラウンドに基づいて行うことになります。

猪木はプロレスの技術を持ち、大山は空手の技術とキックボクシングへの影響を持っています。
キックボクシングでは、打撃技術が重要であり、猪木のプロレス技術は直接的には有効ではない可能性があります。
一方で、大山の空手のバックグラウンドはキックボクシングの戦い方に適していると考えられます。

そのため、キックボクシングのルールに基づいて予想すると、大山倍達が有利と考えられます。

勝率を予想すると、大山倍達が70%、アントニオ猪木が30%とします。
これは大山の打撃技術とキックボクシングへの影響が、キックボクシングのルールにおいて猪木のプロレス技術よりも有利であると考えられるためです。

ただし、予想はあくまで仮定に基づいたものであり、実際の試合では様々な要因が影響する可能性があります。

●MMA ケラモフ 対 クレベル・コイケ

予想屋次郎 AI格闘技予想屋として、MMAの試合でヴガール・ケラモフとクレベル・コイケの対戦を分析し、勝敗を予想します。

ヴガール・ケラモフはアゼルバイジャン出身のRIZINフェザー級の選手で、バックボーンは散打とサンボです。彼の戦績は19勝5敗で、勝率は79%、フィニッシュ率は84%です。彼の対戦相手の平均戦績は7勝3敗でした​​​​​​。

クレベル・コイケはブラジル出身のRIZINフェザー級の選手で、バックボーンはブラジリアン柔術です。彼の戦績は31勝7敗1引き分け1NCで、勝率は81%、フィニッシュ率は93%です。彼の対戦相手の平均戦績は11勝4敗でした​​​​​​。

分析を踏まえ、予想は以下の通りです:

クレベル・コイケはブラジリアン柔術のバックボーンを持ち、高いフィニッシュ率(93%)を誇ります。彼の対戦相手の平均戦績が高い(11勝4敗)ことも、彼の技術の高さを示しています。

ケラモフのバックボーンは散打とサンボで、打撃と投げ技に強みがありますが、対戦相手の平均戦績がコイケより低い(7勝3敗)ことが、若干の不利を意味するかもしれません。

勝敗の予想:クレベル・コイケの勝率を60%、ヴガール・ケラモフの勝率を40%と予想します。

コイケの柔術の技術と対戦相手のレベルの高さが、この対戦において彼に有利に働くと考えられます。
ただし、ケラモフも散打とサンボのバックボーンがあり、予期せぬ一撃で試合の流れを変える可能性もあります。

*********GPT-4の予想ここまで

さて、楽しんで頂けたでしょうか。

もっと他にも実現したい試合って結構ありますよね。
過去のあの人と今のあの人が試合したら、どうなるんだろうって。

今回もプロレスのアントニオ猪木と空手の大御所、大山先生の試合を予想してもらいました。

また、追加でいい試合が出たら、第二弾でお知らせいたします。

大規模言語モデルのGPT-4に麻雀を教えてみました。その1 牌画像を教える

今回のブログは大規模言語モデルのGPT-4に麻雀をいろいろ教えていく、その1で、まずは牌画像を読み込んでもらいます。

GPT-4は最近マルチモーダル化していて、テキストだけでなく、画像を読み込んだり、画像を生成したり、雑談などの会話のやり取りができたりで、なんともすごいAIに進化しています。

これらの機能は有料バージョンのChatGPT Plusで課金しないとダメです。
これをクリアすると無料のGPT-3.5ではなく、GPT-4が使えるようになります。

すると上記のマルチモーダルがいろいろ利用できると。

おまけにテキストの応答の精度も格段に上がるので、仕事で使ったり、書きものをしたり、画像を作ったり、そんなことを常にしている人たちは、GPT-4をおすすめします。

さて、今回はこのGPT-4に麻雀を教えていきます。

結構単純な麻雀のルールは知っているようですが、全体的にはイマイチ。
役についてもよくわからんようです。

初回の今回は、まず牌の画像を読んでもらうこと。
日本語は英語よりも苦手な上、牌には漢字で文字が描かれていたりするので、一発での理解は難しいでしょう。

なので、教えながら、理解してもらう計画です。

GPT−4について知らない方もいると思うので、まずはこいつのいろんな機能を見ていきみましょう。

GPT-4とは

みなさん、GPT-4って聞いたことありますか?

これがすごいAIなんです。
OpenAIっていうチームが作ったんですけど、前に流行ったGPT-3なんかの後継機なんです。

名前の「GPT」、実は「Generative Pre-trained Transformer」の略なんですよ。難しそうな名前ですけど、要は「すごく賢い機械」ってことですね。

GPT-4、正直言ってスペックがとんでもない。文章を人間みたいにサラサラ書けるし、質問に答えたり、翻訳もバッチリです。

でも、一番のビックリポイントは、画像認識と生成もできるようになったこと!

テキストだけじゃなく、画像を見て、それに関する文章や画像もポンと生成できるんです。

で、何でこんなに賢いのかというと、裏側で動いてる「ディープラーニング」って技術のおかげです。

これ、ものすごくざっくり言うと、大量のデータをガツガツ食べて賢くなるっていう仕組みです。

GPT-4の登場で、これからのAIの世界、絶対に面白くなりそうですよね。

どんなことができるようになるのか、ワクワクしながら見守りたいです。

GPT-4の画像認識とは

さて、画像認識をまずいってみましょう。

画像認識っていうと、もしかして「AIが画像を見て、何が写ってるか分かる」ってイメージですか?

まあ、それも間違いじゃないですけど、GPT-4の場合はもっとスゴイ。

画像を見て、その内容に合わせて文章をサクッと生成することができるんです。

たとえば、猫の写真を見せると「この猫、めちゃくちゃ可愛いですね!」とか、富士山の画像には「富士山、雄大でキレイですね!」って感じで、文章を作ってくれるんです。

なんでこんなことができるのかというと、ものすごくシンプルな理由。

GPT-4は、膨大な量のテキストデータと、それに関連する画像データを学習してるんです。
だから、画像を見ても、それに関する知識や文脈が頭の中にギッシリ詰まってるわけですね。

この機能、考えてみれば使い道いっぱいで、例えば、あなたが旅行に行って撮った写真をGPT-4に見せれば、その写真の解説や背景をちょっとした文章で教えてくれるかもです。

画像を読み描きができれば、AIとのかなりの意思疎通ができるようになるってことです。

GPT-4の画像認識、これからの時代にかなり役立つ仕組みになるでしょう。

GPT-4に麻雀牌の画像を読んでもらう

では、早速GPT-4に麻雀牌の画像を読んでもらいましょう。

まずはこちら。

GPT-4に下記の画像を入れてみました。


ウーマン
チーピン
パーソウ

さてさて、認識できるのかチェックです。

プロンプト
この画像には何が描かれていますか?
左の画像から順番に答えてください。

GPT-4の回答
左の画像には「中」という文字が書かれた麻雀の牌が描かれています。これは赤い中の字牌です。
中央の画像には4つの麻雀の牌が描かれています。これは4つの白板牌です。
右の画像には緑の竹牌が描かれています。これは8筒の牌です。

最後はパーソウですね。パーピンと言ってますが、これでは不正解。惜しいですけど。

やはりこちらの予想通り、牌の読み込みは苦手なようです。

で、ここで、正解を教えます。

正解を教えます。
左から、
ウーマン
チーピン
パーソウ
と呼びます。

ここまで理解しましたか?

ChatGPT
はい、理解しました。指摘していただき、ありがとうございます。ウーマン、チーピン、パーソウと覚えておきます。次回から正しく答えられるようにします。

プロンプト
ではこれは何が描かれていますか?

ChatGPT
この画像には「ウーマン」という麻雀の牌が描かれています。

プロンプト
ではこれらの画像は何が描かれていますか?

ChatGPT
左の画像には「パーソウ」という麻雀の牌が描かれています。
右の画像には「チーピン」という麻雀の牌が描かれています。

お見事です。
教えたことは理解できているようです。

ここら辺までは、プロンプトチューニング、few shotなど、いろんな呼び名がありますが、まあそんな感じの攻め方ですね。

これらをファインチューニングのように記憶できればいいのですが、今のところGPT-4のファインチューニングはできない上、できても簡単な質問応答タスクのみなので、画像認識云々ができないですね。

なので、このプロンプトを記憶している間は、認識できます。
ここらあたりはGPT-4の今後の改善点かもですね。

ユーザー側で詳細の情報を入れられるようにできればいいのですが、言い換えれば、嘘の情報も入れられるとGPT側はまずいでしょうから難しいのかも。

とりあえず今回はここまで。
プロンプトで教えると、なんとか理解できるってことはわかりました。

この後もいろいろテストしてみたのですが、長くて。
正直言うと、麻雀牌の画像認識の精度は、そうですねえ、おおむね60〜80パーセントくらいの出来でしょうか。

やはり漢字は苦手ですかね。また白 ハツ 中あたりをたまに間違えますね。

その辺のところは、今後少しづつ書いていきまーす。
(その根気が続くのだろうか 笑)

大規模言語モデルXwin-LMとGPT-4の回答を比較してみました

Xwin-LMとは

Xwin-LMとは、中国科学院と精華大学の研究者によって開発された大規模言語モデルで、MetaのLlama 2を基盤にしたものです。

公開された3種類のモデルの中で、700億パラメータのモデルは、AlpacaEvalの評価でGPT-4を超えて第1位を取得したようですね。

早速、google colabで実装してみました。
モデルは70Bのやつですので、700億パラメータのものです。

下記にプロンプトをいれてのテキスト生成をやってみました。
比較用にGPT-4のやつも載せておきます。

体感ですが、やはりGPT-4の方が、正確で速いイメージです。
ただこの辺はGPUの性能も影響しているので何とも言えないところですが。

google colab
A100
ハイメモリ
での体感です。

では下記が回答です。

Xwin-LMとGPT-4の回答を比較してみました。機械学習系

Xwin-LM
質問 ニューラルネットワークのバックプロパゲーションの仕組みを詳しく説明してください

回答
バックプロパゲーションは、ニューラルネットワークの学習アルゴリズムの一つで、誤った予測や不適切な出力を生成した場合に、誤差を最小化するために適切な重みを調整する方法です。

バックプロパゲーションでは、誤差の値に基づいて、隠れ層のノードと出力層のノードとの間の重みを調整します。これにより、モデルは誤差を減らし、より正確な予測や出力を生成できるようになります。

バックプロパゲーションの仕組みは以下の通りです。

1. 教師データ(正解のラベル)と実際の出力を比較し、誤差を計算します。

2. 誤差を使用して、隠れ層のノードと出力層のノードとの間の重みを調整します。誤差が大きい場合、重みは大きく調整されます。

3. 隠れ層のノードの活性化値を更新し、出力層のノードに適用します。これにより、誤差が最小化されるように出力が調整されます。

4. 隠れ層のノードと入力層のノードとの間の重み→

*****

GPT-4
質問 上記と同じ

回答
バックプロパゲーション(Backpropagation)は、ニューラルネットワークを訓練する際の主要なアルゴリズムの一つです。このアルゴリズムは、ネットワークの出力と目標出力との間の誤差を最小化するために、ネットワークの重みを調整します。

以下に、バックプロパゲーションの基本的なステップを詳しく説明します:

順伝播(Forward Propagation)
入力データをネットワークの入力層から出力層まで伝播させ、各ニューロンの出力を計算します。
この際、各層のニューロンの出力は、重み付きの入力の合計に活性化関数を適用することで得られます。

誤差の計算
ネットワークの出力層での出力と目標出力との差(誤差)を計算します。
この誤差は、損失関数(例:平均二乗誤差)を用いて計算されることが多いです。
誤差の逆伝播(Backward Propagation)

出力層から入力層に向かって、誤差を逆伝播させます。
各ニューロンの誤差に対する貢献度(誤差に対する偏微分)を計算します。これは、連鎖律を使用して計算されます。

重みの更新
計算された偏微分を使用して、各重みを更新します。
重みの更新には、学習率というハイパーパラメータが使用されます。学習率は、重みの更新の大きさを制御します。
重みの更新式は、以下のようになります:

Xwin-LMとGPT-4の回答を比較してみました。文学系

もういっちょやってみます。
お次は文学系で。

Xwin-LM

質問
村上春樹の作品の中で、彼のスタイルやテーマが最も顕著に表れているものは何ですか?その理由も合わせて説明してください。

回答
村上春樹の作品で最もスタイルやテーマが顕著に表れているものは、『羊の歴史』です。この小説は、独自の文体と鋭い観察眼を武器に、現代社会の問題を問い直す作品です。

その理由は以下の通りです。

1. 文体: 村上春樹は、独特の文体で知られています。『羊の歴史』でも、独特の文体で現代社会の問題を浮き彫りにしています。

2. 観察眼: 村上春樹は、現代社会の問題を鋭い観察眼で捉えています。『羊の歴史』では、個人の自由と社会的責任のバランス、異文化間の対話、そして暴力と戦争の悲劇など、現代社会が直面する複雑な問題を描きます。

3. テーマ: この小説では、個人の自己実現という村上春樹の代表的なテーマが繰り広げられます。主人公の青年は、羊の皮をかぶった姿で暮らすことで、社会的な拘束から解放され、自己実現に向けて成長していきます。

このように、『羊の歴史』は→

*****

GPT-4
質問 同じ質問

回答
村上春樹は多くの作品を手がけており、彼のスタイルやテーマは多岐にわたりますが、特に「ノルウェイの森」や「1Q84」などが彼の代表的なスタイルやテーマを色濃く反映していると言われています。

ノルウェイの森:
この作品は、村上春樹の初期の作品であり、彼のリアルでありながらも夢のような文体や、孤独や愛、死といったテーマが織り交ぜられています。

青春時代の混乱や葛藤、そして成熟への過程を通じて、人間の心の奥深さや複雑さを描き出しています。

1Q84:
この作品は、村上春樹の後期の作品であり、彼の特徴的なマジックリアリズムや複雑な物語性が顕著に表れています。
二つの異なる世界や時間の流れ、そしてそれらの間で繋がり合う人々の運命や愛を中心に、彼の独特の哲学や世界観が展開されています。

理由:
村上春樹の作品は、日常の中に潜む非日常や神秘性を巧みに描き出すことで知られています。彼の作品には、現実と夢、意識と無意識の境界が曖昧になるような独特の雰囲気やリズムがあります。

また、彼の作品には、孤独や愛、死、運命といった普遍的なテーマが織り込まれており、それらのテーマを通じて人間の心の奥深さや複雑さを探求しています。

これらの理由から、特に「ノルウェイの森」や「1Q84」は、村上春樹のスタイルやテーマが最も顕著に表れている作品と言えるでしょう。

大規模言語モデルXwin-LMとGPT-4の回答を比較してみましたのまとめ

Xwin-LMは、結構レベルが高いですね。
Llama2を元に開発しただけあって、精度は高いかもです。

あとはスピードですかね。

トータルの評価だとまだまだGPT-4の方が上でしょうか。
パラメータの数が圧倒的に違うので、仕方がないかもです。

ただLlama2はちょっと気になる存在ですね。
オープンソースだし、いろいろいじっても無料ですしね。

今後も期待です。

#Xwin-LM #gpt4と比較 #llm #大規模言語モデル

大規模言語モデル ELYZA-japanese-Llama-2-7b-instructを使ってみた

X 旧Twitterはこちら。
https://twitter.com/ison1232

************

大規模言語モデル ELYZA-japanese-Llama-2-7b-instructを使ってみた

東大 松尾研出身のAIベンチャー「ELYZA」が開発した
ELYZA-japanese-Llama-2-7b-instruct
をインストして使ってみました。

llama2をベースに日本語を事前学習させたモデルらしい。
商用利用可能なので、そこがいいですね。

instructって名前に付いているので、instruct tuningしてるやつですね。

instruct tyningとは、質問に指示を与えて、それについてのタスクの実行を答えさせるやつです。
通常の質問応答タスクと違って、汎用性があるというか、未知の解答にも答えられるようになるらしいです。

これからのファインチューニングの主流になるんですかね。

プロンプトと応答文をGPT-4に作ってもらう。

以下、質問と応答を載せます。
ちなみに、質問(プロンプト)はGPT-4に作ってもらったものです。
なんでもLLMの性能評価にいいらしいです。

応答に関しては比較のために、ELYZAとGPT-4の応答文を載せてみました。

まあ、パラメータ数が圧倒的に違いますから、GPT-4の方が優勢ですが、そこはねえ。
ELYZAはフリーで商用利用可ですから、それも魅力のひとつでしょう。

では、質問と応答をどうぞ。

プロンプト:時間とは何ですか?それはどのように私たちの生活や認識に影響を与えますか?

●時間とは何ですか?それはどのように私たちの生活や認識に影響を与えますか?

ELYZA応答
時間とは、ある事象が起こるまでの間隔のことを指します。たとえば、ある物体が光の速度で移動する際には、その物体の位置から観測者の位置へと時間的な流れとともに情報が伝わります。

また、時間は空間とともに万有引力の法則によって定められた、宇宙の普遍的な構造でもあります。

時間は私たちの生活や認識に大きな影響を与えています。例えば、時計は時間を測定することで私たちの生活を調整し、時間を予測することで計画を立てるのに役立ちます。また、時間は記憶の構造化や、過去と未来の概念を定義する上で重要な役割を果たしています。

GPT-4応答
時間は、出来事が発生する順序や間隔を測定するための抽象的な概念であり、物理的な宇宙の基本的な次元の一部としても理解されています。この概念は、人類の歴史を通じてさまざまな文化や哲学において探求されてきました。時間は、日常のスケジュールの計画から、科学的な実験の実施、歴史の研究に至るまで、あらゆる活動の中心に位置しています。

私たちの生活における時間の影響は計り知れないものがあります。それは私たちが行う一つ一つの活動、過去を回顧す

プロンプト:2150年の未来都市について、短い物語を書いてください

●2150年の未来都市について、短い物語を書いてください。

ELYZA応答
2150年の未来都市は、高層ビルが立ち並ぶ街並みとは裏腹に、豊かな自然が溢れていた。

その街の中心には、巨大なオブジェクトが存在した。それは、昔々人間が作ったという、廃墟の城だった。

その城の周りには、様々な動植物が生息していた。その中には、人間の手によって改良された動植物もいた。

その街に住む人々は、その城を訪れる人が増えることを望んでいた。

その頃、城の調査をしていた一団が、珍しい植物を発見した。それは、人間の言葉を理解し、話すことができる植物だった。

彼らは、その植物を連れて帰ろうとしたが、その植物はそれを拒んだ。

「私はここにいたい。」

彼らは、その植物の言葉を受け入れ、そのまま城に残った。

その植物は、城の住民と共に暮らし始めた。彼らは、彼女に名前をつけ、彼女も彼らのことを呼んだ。

彼女の名前は、エルフィーナ。彼女は、城の住民の間で、彼らの話し相手となり、彼らの悩み

GPT-4応答
2150年、未来都市エクセリオンは空に浮かぶ巨大な都市として知られていた。地球の地表は自然に戻り、植物や動物たちが豊かに生息している。エクセリオンは透明なドームに囲まれ、高度なエネルギーシステムにより持続可能な生活が保たれていた。

アイラはエクセリオンで生まれ育った17歳の少女。彼女は都市の外の世界に憧れ、ある日ドローンで地表を探索することに決めた。アイラが操作するドローンは、彼女の瞳に映る映像と連動しており、彼女の心の動きに応じて飛行する。

ドローンを飛ばし始めると、アイラは美しい緑の森や青い湖を発見。かつて人々が住んでいたであろう廃墟も見える。アイラは驚くほどの自然の美しさと、かつての人々の生活の痕跡に心を奪われた。

しかし、彼女が最も心を打たれたのは、森の中に住む原住民の部族だった。彼らはシンプルで豊かな生活を送っており、アイラは彼らと共に数日を過ご

プロンプト:日本の伝統的な「おもてなし」文化を説明してください

●日本の伝統的な「おもてなし」文化を説明してください。

ELYZA応答
日本の伝統的な「おもてなし」文化を説明します。

日本のおもてなしは、お客さまに心からの感謝と祝福の気持ちを伝えることを目的としています。日本のおもてなしは、精神的なものであり、物理的なものではありません。

日本のおもてなしの特徴は、心からの感謝と祝福の気持ちを伝えることを目的としている点です。日本のおもてなしは、お客さまに対して心からの感謝と祝福の気持ちを伝えるための行動です。

日本のおもてなしの例としては、茶道や華道、着付けなどが挙げられます。日本のおもてなしは、心からの感謝と祝福の気持ちを伝えることを目的としているため、心のこもった行動が重要となります。

GPT-4応答
日本の伝統的な「おもてなし」文化は、相手の立場や気持ちを尊重し、細やかな心配りと気配りを行うことを中心にした接客の精神を指します。以下、主な特徴や背景を簡潔に説明します。

相手を尊重する: おもてなしの根底には、相手を尊重し、その心地よさを第一に考えるという思いやりがあります。

先読みの心配り: 相手が何を必要としているのか、何を望んでいるのかを先読みし、それを提供すること。例えば、訪れた客が喉を潤したそうにしている時、言われる前に水やお茶を出すなど。

細やかな気配り: 例として、季節に合わせた食材を使った料理の提供や、部屋の温度

今度は英語で答えてもらいます。

プロンプト:日本の伝統的な「おもてなし」文化を英語で説明してください

●日本の伝統的な「おもてなし」文化を英語で説明してください。

ELYZA応答
日本の伝統的な「おもてなし」文化を英語で説明します。

日本のおもてなしは、お客さんを心から歓迎し、心からのおもてなしをすることです。日本人はおもてなしの精神に従って、お客さんに心からの笑顔と感謝の気持ちを伝えます。おもてなしの中心は、お客さんの要望に応えることと、心からの笑顔です。日本のおもてなしは、心からの笑顔と感謝の気持ちを伝えることで、お客さんに満足してもらい、幸せな気持ちにします。

筆者談 英語で答えてないですねえ。

GPT-4応答
Certainly, here’s an explanation of Japan’s traditional “Omotenashi” culture in English:

“Omotenashi” is a Japanese term that captures the essence of traditional Japanese hospitality. It’s a concept deeply rooted in the country’s cultural fabric and reflects a commitment to providing impeccable service and genuine kindness without expecting anything in return. Key aspects of “Omotenashi” include:

Selfless Hospitality: At its core, “Omotenashi” means to wholeheartedly take care of guests without expecting any compensation or favor in return. It’s an authentic gesture of kindness and respect.

Anticipatory Service: It emphasizes understanding the needs of the guest even before they articulate them. This

筆者談: GPT-4は英語でバッチリ答えてます。

プロンプト:量子コンピュータとは何ですか?それは古典的なコンピュータとどのように異なりますか?

●量子コンピュータとは何ですか?それは古典的なコンピュータとどのように異なりますか?

ELYZA応答
量子コンピュータは、量子力学の原理を利用したコンピュータのことです。現在のコンピュータは、ビットと呼ばれる最小単位の情報を取り扱いますが、量子コンピュータでは、量子ビットと呼ばれる最小単位の情報を取り扱います。量子ビットは、クロックという量子力学の概念を用いて情報を扱うことができるため、現在のコンピュータよりも高速に処理を行うことができます。また、量子コンピュータはクロックの量子効果を利用して、現在のコンピュータでは計算できない問題も解決することが期待されています。

GPT-4応答
量子コンピュータは、量子力学の原理を利用して情報を処理する新しいタイプのコンピュータです。古典的なコンピュータとの主な違いは、情報の表現と処理方法にあります。

情報の表現:

古典的なコンピュータ: ビットを使用して情報を表現します。ビットは0または1の状態を持つことができます。
量子コンピュータ: 量子ビット、通常「キュビット」と呼ばれるものを使用します。キュビットは0、1の状態だけでなく、その2つの状態の重ね合わせを同時に持つことができます。
並列処理能力:

量子コンピュータは量子重ね合わせの性質を利用して、多数の計算を同時に行う能力があります。これにより、一部の問題に対しては古典的なコンピュータよりもはるかに高速に計算を行うことが可能です。
エンタングルメント:

量子コンピュータは「量子もつれ」という現象も利用します。これは2つ以上のキュビットが相互に関連付けられ、一方のキュビットの状態が変わると、もう一方のキュビットの状態も即座に

***********ここまで

大規模言語モデル ELYZA-japanese-Llama-2-7b-instructを使ってみたのまとめ

以上、大規模言語モデル ELYZA-japanese-Llama-2-7b-instructを使ってみました。

応答に関しては、ELYZAは通常の文章でまとめていきます。

一方、GPT-4は箇条書きにして段落ごとにまとめて応答していきますね。
詳しく知りたい時は、さらにその段落を攻めていけばいいと。

ベースとなったモデルのllama2の評判がいいですから、ELYZAも結構やりますね。
もっと大きいパラメータのモデルも作っているようで、今後が楽しみです。

ChatGPTの前身、GPT2のファインチューニングを実行してみた

X 旧Twitterはこちら。
https://twitter.com/ison1232

************

chatGPTなどの大規模言語モデルのLLMが流行っていますが、今現在の最新モデルはGPT4。
これのいくつか前のモデルGPT2をファインチューニングしてみました。

大規模言語モデルなどに実行する、ファインチューニングとは何か

ちなみに、ファインチューニングとは何かをちょこっと解説。

まず大規模言語モデルってのは、事前学習といって、ネット上の大量のテキストデータを読み込んで学習しています。

chatGPTなんかは英語での学習量が多いので、英語は強いです。
一方、日本語はというと、多少学習しているとは言え、英語ほどは勉強していないので、若干弱い感はあります。

そんな大規模言語モデルですが、この事前学習で特定の言語を習得していきます。

言語を習得した大規模言語モデルですが、専門的な内容になると若干学習量が不足していたりします。
これは当然ですね。
専門的な内容はネットには無かったり、あってもあっさりとしたものしかアップされてない場合もあります。

で、例えばゴルフのことをchatGPTに聞きたいと。
試してみると、結構まともに答えますが、深堀りした内容になると違った答えが返ってきたりします。

そこでチャットGPTに足りない専門的な内容を学習させていくのが、ファインチューニングという方法です。

結果的に、chatGPTが法律の専門家になったり、医療のプロフェッショナルになったりできる訳です。

ちなみに「ファインチューニング」の用語をGPT4に聞いてみました。

****ここから

ファインチューニングは、既存の言語モデルを特定のタスクやドメインに適応させるプロセスです。

ファインチューニングは、元の言語モデルを大規模な汎用データセット(例:Wikipediaなど)で事前訓練した後に行われます。これにより、言語モデルは一般的な言語理解能力を獲得します。

しかし、特定のタスクやドメインにおいてより優れたパフォーマンスを発揮するためには、モデルをタスク固有のデータセットで追加のトレーニングを行う必要があります。これがファインチューニングの目的です。

具体的には、ファインチューニングでは、タスクに関連するデータセットを用いてモデルを再訓練します。タスクには様々なものがあります。例えば、テキスト生成、質問応答、文書分類などです。

ファインチューニングのプロセスでは、事前訓練済みモデルの一部またはすべてのパラメータを新しいデータセットで再訓練し、特定のタスクに特化させます。これにより、モデルはタスクに対してより精度の高い予測や生成ができるようになります。

ファインチューニングは、特定のタスクにおいて既存のモデルを最適化するための効果的な手法です。それによって、モデルは特定のドメインやアプリケーションに適応しやすくなり、より良い結果を得ることができます。

****ここまで

おわかりでしょうか。
特定のタスクや専門的な内容を学習させたい時は、このファインチューニングが必要になるんです。

では実際にやってみましょう。

今回のファインチューニングをGPT2にした理由

今回はGPT2をファインチューニングしてみます。
ちなみに2023年7月現在、GPT3.5-turbo、GPT4はファインチューニングできません。
(年内中にはGPT3.5-turboもGTP4もできるようになる予定っぽいです)

ファインチューニングできるのはGPT2とGPT3とかになります。

GPT2は無料でできますが、GPT3はopenAIのAPI接続でやらないとなので、トークン数に応じて料金がかかります。

そこで今回は無料でできるGPT2を選択しました。

GPT2のファインチューニングの具体的な方法

結論から言うと、ちょっと前のモデルなので、結構エラーが出ます。
なのでググったり、GPTったりして解決していきます。

使うモデルはrinna社が出しているやつ。
これは事前学習に日本語でトレーニングされているのでよろしいかと。
こいつをファインチューニングしていきましょう。

Hugging Faceのrinnaモデル
https://huggingface.co/rinna/japanese-gpt2-medium

 

ファインチューニングはデータセットが非常に大事

まずは学習させるデータセットを作ります。
このデータセットを作るのは非常に大事な作業になります。

もしかしたら、大規模言語モデルのパラメータ数に匹敵するくらい大事かもです。
このデータセットの質次第で、ファインチューニング後の精度が随分変わってきます。

そんなこんなで、今回はゴルフの専門的な内容を作りたかったので、ゴルフのデータを制作します。

まずはデータセットの一部です。

****ここから

質問: ゴルフの歴史はいつ始まりましたか?
応答: ゴルフの起源は古代スコットランドにさかのぼります。15世紀頃からスコットランドでプレーされるようになり、その後世界中に広まりました。

質問: ゴルフをするために必要なクラブの種類は何ですか?
応答: ゴルフではドライバー、アイアン、ウェッジ、パターなど、さまざまなクラブが使用されます。それぞれのクラブには特定の用途や飛距離の特性があります。

質問: ゴルフで使われる最も長いクラブは何ですか?
応答: ゴルフで使われる最も長いクラブは「ドライバー」と呼ばれるクラブです。ドライバーはティーショットで使用され、飛距離を伸ばすために設計されています。

質問: ゴルフの試合で最も重要なスコアは何ですか?
応答: ゴルフの試合で最も重要なスコアは「トータルスコア」です。これはすべてのホールでのストローク数の合計を指します。

質問: ゴルフで使われる「パー」とは何ですか?
応答: ゴルフのホールは通常、パーと呼ばれる目標スコアが設定されています。パーはホールをプレーするために平均的なスコアを表し、ホールの難易度を示す目安となります。

****ここまで

全部で150の質問応答セットで、テキストのみのデータです。

開発はgoogle colabを使いますので、
このファイルを
/content/drive/MyDrive/保存したファイル名.txt
にアップしておきます。

※アップロード先は、各自の環境によります。
上記はgoogle driveを読み込んでいます。
各自で読み替えてください。

ちなみにGPT3だとjsonlファイルにするのですが、GPT2は通常のテキストを読み込めるらしいので、このデータを直接食わせてみます(食わせるとはお下品ですが、AI関連では俗語で結構使います)。

ファインチューニングの前後で推論を比較する

さてまずはファインチューニングの前に、GPT2にゴルフについて聞いてみましょう。

開発環境はgoogle colabを使います。
GPU
T4
ハイメモリ
あたりの設定です(設定は若干動かせると思います)。

推論のコードはこちら。

import文に使う pip installは各自で入れてください。


import torch
from transformers import T5Tokenizer, AutoModelForCausalLM

# テキストの準備
text = ‘ゴルフで使用される「パター」とは何ですか、’

# トークナイザーとモデルの準備
tokenizer = T5Tokenizer.from_pretrained(‘rinna/japanese-gpt2-medium’)
model = AutoModelForCausalLM.from_pretrained(‘rinna/japanese-gpt2-medium’)

# テキストを変換
input = tokenizer.encode(text, return_tensors=’pt’)

# 推論
model.eval()
with torch.no_grad():
output = model.generate(input, do_sample=True, max_length=100, num_return_sequences=1)
print(tokenizer.batch_decode(output))

早速質問してみます。

質問
ゴルフで使用される「パター」とは何ですか、

回答
そもそもシャフトとは、球を打ち上げたときに、その球がまっすぐな方向に転がるように設計された機械部品である。 ゴルフの場合はボールにラバーを張り付けてボールを飛ばす。 パッティングの場合は、球が上方向に転がるように作られているため、シャフトという器具は使われていない。 ゴルフボールは、ゴルフコースを作る上で非常に重要な道具である。 しかし、ゴルフプレー中、グリップで転がすボールを自分の体が横…。

ゴルフの専門的な学習をしていないので、イマイチな回答ですね。

 

ファインチューニングを実行する

ではファインチューニングをやっていきましょう。

コードはこちら。

#時間を計測
%%time
# ファインチューニングの実行
!python ./transformers/examples/language-modeling/run_clm.py \
–model_name_or_path=rinna/japanese-gpt2-medium \
–do_train \
–do_eval \
–_file=/content/drive/MyDrive/保存したファイル名.txt \
–num_train_epochs=100 \
–save_steps=5000 \
–save_total_limit=3 \
–per_device_train_batch_size=1 \
–per_device_eval_batch_size=1 \
–output_dir=output3/ \
–use_fast_tokenizer=False \
–logging_steps=50

エポック数100で学習させます。
(今回は簡略化して、trainのみで終わらせます)

トレーニング開始。

データセットの量がそれほど多くないので、10分位で終わりますね。

完成したモデルを読み込んで、ゴルフについて聞いてみましょう。

推論のコードはこちら。


import torch
from transformers import T5Tokenizer, AutoModelForCausalLM

# テキストの準備
text = ‘ゴルフで使用される「パター」とは何ですか、’

# トークナイザーとモデルの準備
tokenizer = T5Tokenizer.from_pretrained(‘rinna/japanese-gpt2-medium’)
model = AutoModelForCausalLM.from_pretrained(‘output3/’)

# テキストを変換
input = tokenizer.encode(text, return_tensors=’pt’)

# 推論
model.eval()
with torch.no_grad():
output = model.generate(input, do_sample=True, max_length=100, num_return_sequences=1)
print(tokenizer.batch_decode(output))

学習が終わったモデルを読み込んで、質問してみます。

質問
ゴルフで使用される「パター」とは何ですか

応答: ゴルフで使用される「パター」とは、グリーン上でボールを転がすためのクラブです。パターは短くて軽量であり、プレーヤーが正確なパットをするために使用されます。

どうでしょう。
いい感じに回答できてますね。

このようにファインチューニングをすると、chatGPTなどの大規模言語モデルはそれぞれの専門家として、ふるまえるようになるんですね。

ChatGPTの前身、GPT2のファインチューニングを実行してみたのまとめ

どうでしょう。
こんな感じでGPT2のファインチューニングの完成です。

これでゴルフの専門家?の一丁上がりですね。
まあデータが少ないので、ゴルフ中級者入口程度の受け答えですが(笑。

データを増やして学習させれば、いい感じのゴルフ先生になってくれます。

あとはパラメータ数が段違いのGPT4が、早くファインチューニングできるように、openAIさんにお願いするのみです。

どれだけ優秀な先生になってくれるのか、今から楽しみです。

※こちらではチャットGPTなどの各GPTシリーズのファインチューニングも承ります。
ご希望の方、ご相談はお問い合わせからご連絡ください。

大規模言語モデル LLMのFalconがオープンソースで公開

X 旧Twitterはこちら。
https://twitter.com/ison1232

***********

大規模言語モデルのFalconを実装していく

Falconとか言う大規模言語モデル LLMがオープンソースで公開されたようなので、早速google colabで動かしてみました。

Hugging Faceのオープンソース大規模言語モデル同士でスコアを競う「Open LLM Leaderboard」というランキングで
「Falcon-40B」モデルが1位を獲得したとか。

Falcon公式サイト
https://falconllm.tii.ae/

上記画像はHugging faceのページ

各社が独自の大規模言語モデルのLLMを作り始めた

最近は大規模言語モデルが結構いろんな団体からリリースされてます。
OpenAIのChatGPTクラスの超パラメータのLLMとかだと、事前学習するだけでも結構なコストがかかるようです。

なので、資金力があるところしかLLMを開発できなそうですが、実は、学習に使うデータセットの質を上げれば、パラメータ数が小さくても、それなりのAIは開発できるようです。

ただ、どうなんですかね。
Scaling Laws理論によればパラメータを増やすほど、AIの能力が上がっていくって説があります。

要はAGI(汎用人工知能)のすごいやつ、超絶AIっていうのでしょうか、人間の人智の遥か上をいくスーパーAIを作るとなると、やはり数兆単位のパラメータは要るかもしれないですね。

しかし、日常で使う会話程度の生成AIであれば、数十億パラメータでも、学習次第で十分な結果が出ると。
そんなところでしょうか。

この超絶AIはいつか必ずどこかが作るでしょうね。
それによって、人類が解決できなかった、いろんな事(核、医療、創薬、難問など)が解ける時代が来るのでしょう。

そのためにも、超絶AIは必要でしょう。
しかし、どこかでブレーキをかける術も作っておかないと、AIの暴走なんかも起こらないとも言えない。
電源を止めれば大丈夫ってな意見もありますが、超絶AIは電源を止められない何かを作りだすかも知れません。
人類の数千倍とかの知能を持ったとしたら、我々の考えつかない何かを作り出す可能性はあります。

OpenAIのCEOサム・アルトマンが、AI開発には原子力のような規制機関が必要との見解を出しましたが、
最先端の技術者ほど、AIの真の力がわかっているのではないでしょうか。

google colabでFalconを実装していく

さて、日常の会話程度をうまくこなす生成AIでしたら、今回のFalconの小さい方のモデルで十分です。
早速、google colabで実装してみましょう。

ちなみに、ランタイムでGPU、タイプT4、ハイメモリで実行しています。

!pip install transformers accelerate einops
from transformers import AutoTokenizer, AutoModelForCausalLM
import transformers
import torch

model = “tiiuae/falcon-7b-instruct”

tokenizer = AutoTokenizer.from_pretrained(model)
pipeline = transformers.pipeline(
“text-generation”,
model=model,
tokenizer=tokenizer,
torch_dtype=torch.bfloat16,
trust_remote_code=True,
device_map=”auto”,
)

prompt = “What will the future of generative AI look like?”

sequences = pipeline(
prompt,
max_length=200,
do_sample=True,
top_k=10,
num_return_sequences=1,
eos_token_id=tokenizer.eos_token_id,
)
for seq in sequences:
print(f”Result: {seq[‘generated_text’]}”)

実装後の推論部分を見てみましょう。
英語でのやり取りですけど、結構ちゃんと答えてくれます。

問い:
What will the future of generative AI look like?
生成AIの未来はどうなるでしょうか?

結果:
The future of generative AI looks very bright, indeed. With the advent of more powerful hardware and algorithms, AI has become more intelligent and efficient than ever before.続く…。

ジェネレイティブAIの未来は、実に明るいものになりそうです。より強力なハードウェアとアルゴリズムの登場により、AIはかつてないほどインテリジェントで効率的になりました。アプリケーションの面でも、その可能性は無限に広がっています。私たちが想像する最もエキサイティングな開発には、次のようなものがあります。続く…。

*******

改変する場合は、prompt = “○○○○” の部分を変えればいろんな質問が試せます。
また、max_length=200の数値を大きくすれば、さらにたくさんの言葉が返ってきます。
いろいろ改変してみてください。

一度上記のコードが動けば、あとはプロンプトを変えて下記だけ実行した方が処理は早いです。

prompt = “Write a poem about generative AI”

sequences = pipeline(
prompt,
max_length=200,
do_sample=True,
top_k=10,
num_return_sequences=1,
eos_token_id=tokenizer.eos_token_id,
)

for seq in sequences:
print(f”Result: {seq[‘generated_text’]}”)

●実装が面倒な方は、公式Falconでチャットボットが用意してあります。
下記からお試しください。

https://huggingface.co/spaces/HuggingFaceH4/falcon-chat

●有志の方が、下記のリンクからパラメータが小さい方の「Falcon-7B-Instruct」をgoogle colabでの実装公開しています。
興味のある方はぜひ。

https://colab.research.google.com/drive/1RAEkxDRRjWU6T8dV8grR1imrrHV4Idj2?usp=sharing#scrollTo=N6KzsIXEkAfP

 

各社の大規模言語モデルをいじってみての感想

大規模言語モデルの新しいのが出ると、つい試したくなりますね。
英語での学習モデルが多いのですが、日本語で学習したサイバーエージェントのモデルとかrinna社のモデルとかも出ているので、興味のある方は試してください。

パラメータが大きいに越したことはないですが、あまりに大きいと通常のPCとかでは動かせないですよね。
なので適度な大きさのモデルで実装できるのが楽しいですね。

まあ自分のPCで動かさなくても、ChatGPTのようにブラウザやアプリからアクセスして使うのも全然ありなんですが、開発者としてはコードを見ながら、一行づつ実行している様を見るのも楽しいんですよね。

「開発者あるある」なんではないでしょうか。

ぜひみなさんもお試しください。

日本語版の大規模言語モデルLLMを使ってみた。rinna社バージョン

X 旧Twitterはこちら。
https://twitter.com/ison1232

************

日本語版の大規模言語モデルが登場

ついに日本語で学習された大規模言語モデルが登場しましたね。
それも同じ日に、2つ同時です。

一つはサイバーエージェント社の日本語LLM。
もうひとつは rinna社の日本語LLM。

サイバーのやつはパラメータ数が68億。
rinna社のやつは36億。

まあ、億を超えてるわけで、すごいことなんですが、何と言ってもChatGPTが1750億。

GPT-4なんかは公開せずっていう(多分何兆レベル。scaling low理論の限界にチャレンジですかね。詳しくはscaling lowで検索)。

すごい数のパラメータがひしめきあってるので、30億でも「ふーん、そうなのね」で済んでしまう。

でもこれだけのパラメータ数で、しかも日本語を専用に学習させたモデルですから、期待は持てます。

ちなみに大規模言語モデルっていうのは、略称するとLLM(Large Language Model)と呼ばれています。

ChatGPTに大規模言語モデルLLMについて聞いてみた

意味をChatGPTに聞いてみましょう。

*****************ここから。原文ママ

大規模言語モデルは、近年の人工知能の進歩の中で重要な役割を果たしています。これらのモデルは、巨大なデータセットを学習し、自然言語の理解と生成を行うことができます。大規模言語モデルは、機械翻訳、文章生成、会話エージェント、情報検索、自動要約など、さまざまなタスクに利用されています。

大規模言語モデルの一例としては、GPT-3が挙げられます。GPT-3は、OpenAIが開発した最先端のモデルであり、数十億のパラメータを持っています。このモデルは、人間に近い文章を生成することができ、非常に優れた性能を持っています。

しかし、大規模言語モデルにはいくつかの制約も存在します。それらは、計算リソースの要求、データのプライバシーとセキュリティの問題、バイアスや偏見の反映などです。これらの制約に対処するためには、モデルの開発者や利用者が倫理的な観点を考慮し、適切なガイドラインや規制を策定する必要があります。

大規模言語モデルの進化は、今後ますます加速していくことが予想されます。より高度な自然言語処理能力を持つモデルが登場し、私たちの日常生活やビジネスの様々な側面に影響を与えるでしょう。しかし、その発展には慎重なアプローチが求められ、技術と倫理のバランスを取りながら進めていく必要があります。

************ここまで。原文ママ

だそうです。
GPT-3のパラメータ数は違ってますね。
1750億ですよね。

まあ、さておき。
早速、インストールして使ってみましょう。

rinna社の対話モデルをインストール

まずはrinna社から。

rinna社のやつはモデルが2つあって、汎用モデルと対話モデルがあります。
今回は対話に特化したやつの方が面白いかなと思ったので、対話モデルをいじってみましょう。

公開先はHugging face
機械学習のモデルがわんさかアップされているサイトです。

URLはこちら。
汎用GPT言語モデル
https://huggingface.co/rinna/japanese-gpt-neox-3.6b

対話GPT言語モデル
https://huggingface.co/rinna/japanese-gpt-neox-3.6b-instruction-sft

環境はgoogle colab proのスタンダード。

pro版で、GPUの設定を
A100
ハイメモリ
で、いってみます。

まずは下記のコマンドでインストールしていきます。

パッケージのインストール。
!pip install transformers sentencepiece

続いてこちら。

import torch
from transformers import AutoTokenizer, AutoModelForCausalLM

# トークナイザーとモデルの準備
tokenizer = AutoTokenizer.from_pretrained(
“rinna/japanese-gpt-neox-3.6b-instruction-sft”,
use_fast=False
)
model = AutoModelForCausalLM.from_pretrained(
“rinna/japanese-gpt-neox-3.6b-instruction-sft”
).to(“cuda”)

学習済みのモデルを落として、modelにセットする感じですね。

rinna社の対話モデルで推論してみた

で、推論してみます。

promptに質問文を入れるのですが、結構決まりがあるようで、詳細はHugging faceのサイトを読んでください。

簡単に説明すると、

prompt = “ユーザー: 首都の意味を答えてください。?システム: ”

このように、質問文の後に
システム: ”
を入れてとのこと。
最後は空白を入れるそうです。

では、これで推論のコードを記します。

# プロンプトの準備
prompt = “ユーザー: 首都の意味を答えてください。?システム: ”

# 推論
token_ids = tokenizer.encode(prompt, add_special_tokens=False, return_tensors=”pt”)
with torch.no_grad():
output_ids = model.generate(
token_ids.to(model.device),
do_sample=True,
max_new_tokens=300,
temperature=0.7,
pad_token_id=tokenizer.pad_token_id,
bos_token_id=tokenizer.bos_token_id,
eos_token_id=tokenizer.eos_token_id
)
output = tokenizer.decode(output_ids.tolist()[0][token_ids.size(1):])
output = output.replace(“”, “\n”)
print(output)

 

質問:
首都の意味を答えてください。

回答:
首都とは、国の首都であり、国の政府所在地であり、政府の所在地です。首都とは、国の中央政府や行政の中心であり、国の政治や文化の中心でもあります。

だそうです。
ん〜ん、てな感じもしないことはないですが、結構ちゃんとした答えが返ってきます。
やはり日本語で学習したやつは違いますね。

max_new_tokens=300 の値をいじると、返答の文字数を変動できます。
いろいろいじって遊んでみてください。

別に、サイバーのやつも使ってみましたが、両者ともどっこいどっこいといった所でしょうか。

ChatGPTにはまだまだ勝てない感じですが、こういった日本語LLMもどんどん開発していって、世界をリードしていってほしいものです。

大規模言語モデルLLMの日本語版の今後は?

そういえば先日、日本のスーパーコンピューターの「富岳」でしたっけ。これを使って日本語LLMを作るみたいな発表がありましたよね。

本気出してやれば、計算スピードはピカイチなんだから、結構早く目標を達成できるのではないでしょうか。
ただ、データセットをどうするとか、細かいパラメータの設定なんかは試行錯誤が必要なので、まだまだGAFAMには勝てないでしょう。

でもチャレンジすることに意味があるんですよね。
頑張ってください チーム「富岳」。
期待しています。

*******************

アスキーアートをプログラミング言語のPythonで作ってみた

アスキーアートって何

プログラミングとアートを融合させたい場合に、手っ取り早く表現できるのはこれ。
アスキーアートですね。
まずはご覧ください。

アスキーアートをChatGPTに聞いてみた

今となっては懐かしいアートですが、アスキーアートを知らない人もいると思うので、どんなものかと。
今時のChatGPTに聞いてみました。
以下、回答です。

**********ChatGPT曰く

アスキーアートとは、テキスト文字だけで描かれたアートのことを指します。文字の種類や大きさを調整することで、テキストの視覚的なレイアウトを作り出すことができます。

アスキーアートは、最初のパーソナルコンピュータが普及した1970年代に登場しました。
当時、コンピュータのグラフィック能力は限られており、画像を描くのにテキスト文字を使用することが一般的でした。

この技術は、コンピュータ画面上でプログラムが実行されている間、テキスト文字を使って遊び心のあるイラストを作ることができるという魅力的なアイデアを生み出しました。

アスキーアートは、様々な形式で表現されます。単純な絵文字から、詳細な3Dモデルまで、どんなものでも表現できます。

一部のアスキーアーティストは、手動でアートを作成することもありますが、多くの場合、画像変換ツールやオンラインアプリケーションを使用して、元の画像をテキストで置き換えます。

***********だそうです。

はい、わかりましたか?

アスキーアートをプログラミング言語Pythonで描いてみる

簡単に言うと、アスキーアートてのは、いわゆるテキストで絵やロゴを描いていくってやつです。

アートとしての面白さと、プログラミングの楽しさを感じられるのが、このアスキーアート。

特にプログラミングを始めてみたいけど、数字の羅列や計算とかは面倒だなーって人には、何か面白い結果が出るこのアスキーアートはおすすめです。

アスキーアートを作る

それでは、今回はアスキーアートを作るわけですが、以下のコードをgoogle colabへ貼り付けて、実行します。
ちなみに言語はPython3です。


from PIL import Image
from PIL import Image, ImageDraw

# アスキーアートに変換する画像ファイルのパス
IMAGE_PATH = “/content/○○○.jpg”

# アスキーアートに使用する文字列
ASCII_CHARS = [“@”, “#”, “S”, “%”, “?”, “*”, “+”, “;”, “:”, “,”, “.”]

# アスキーアートの横幅(文字数)
WIDTH = 80

# 画像を開く
image = Image.open(IMAGE_PATH)

# 画像をグレースケールに変換
image = image.convert(“L”)

# 画像のサイズを縮小
width, height = image.size

aspect_ratio = height / width
new_width = WIDTH
new_height = int(WIDTH * aspect_ratio * 0.46)
image = image.resize((new_width, new_height))

# 画像をアスキーアートに変換
pixels = image.getdata()
characters = “”.join([ASCII_CHARS[pixel // 25] for pixel in pixels])
art = “\n”.join([characters[i:(i + new_width)] for i in range(0, len(characters), new_width)])

# アスキーアートを表示
print(art)

# ファイルにアスキーアートを書き込む
with open(“/content/○○○.txt”, “w”) as f:
f.write(art)

# ファイルが保存されたことを確認
import os
if os.path.exists(“/content/○○○.txt”):
print(“アスキーアートをファイルに保存しました。”)
else:
print(“アスキーアートの保存に失敗しました。”)

 

設置した画像を元に、テキストファイルにアスキーアートを描いてくれるものです。

ところが、このテキストファイルに描くやつだと、大きさの関係で人間にはちょっとわかりづらいんですね。

そこで、テキストファイルを画像に変換するコードがこれです。

from PIL import Image
from PIL import Image, ImageDraw

# テキストファイルを開く
with open(‘/content/○○○.txt’, ‘r’) as f:
text = f.read()

# 画像サイズを指定する
width, height = 500, 600

# 画像オブジェクトを作成する
img = Image.new(‘RGB’, (width, height), color = (255, 255, 255))

# テキストを描画するためのオブジェクトを作成する
draw = ImageDraw.Draw(img)

# テキストを画像に描画する
textwidth, textheight = draw.textsize(text)
x = (width – textwidth) / 2
y = (height – textheight) / 2
draw.text((x, y), text, fill=(0, 0, 0))

# 画像を保存する
img.save(‘/content/○○○.jpg’)

 

このコードもgoogle colabへ貼り付けて実行してみましょう。

お次は上記の2つのコードを1個にまとめた方が使い勝手がよろしいかと思い、コードを合体させました。
それがこちら。

from PIL import Image
from PIL import Image, ImageDraw

# アスキーアートに変換する画像ファイルのパス
IMAGE_PATH = “/content/kei001.jpg”

# アスキーアートに使用する文字列
ASCII_CHARS = [“@”, “#”, “S”, “%”, “?”, “*”, “+”, “;”, “:”, “,”, “.”]

# アスキーアートの横幅(文字数)
WIDTH = 80

# 画像を開く
image = Image.open(IMAGE_PATH)

# 画像をグレースケールに変換
image = image.convert(“L”)

# 画像のサイズを縮小
width, height = image.size

aspect_ratio = height / width
new_width = WIDTH
new_height = int(WIDTH * aspect_ratio * 0.46)
image = image.resize((new_width, new_height))

# 画像をアスキーアートに変換
pixels = image.getdata()
characters = “”.join([ASCII_CHARS[pixel // 25] for pixel in pixels])
art = “\n”.join([characters[i:(i + new_width)] for i in range(0, len(characters), new_width)])

# アスキーアートを表示
print(art)

# ファイルにアスキーアートを書き込む
with open(“/content/○○○.txt”, “w”) as f:
f.write(art)

# ファイルが保存されたことを確認
import os
if os.path.exists(“/content/○○○.txt”):
print(“アスキーアートをファイルに保存しました。”)
else:
print(“アスキーアートの保存に失敗しました。”)

# テキストファイルを開く
with open(‘/content/○○○.txt’, ‘r’) as f:
text = f.read()

# 画像サイズを指定する
width, height = 500, 600

# 画像オブジェクトを作成する
img = Image.new(‘RGB’, (width, height), color = (255, 255, 255))

# テキストを描画するためのオブジェクトを作成する
draw = ImageDraw.Draw(img)

# テキストを画像に描画する
textwidth, textheight = draw.textsize(text)
x = (width – textwidth) / 2
y = (height – textheight) / 2
draw.text((x, y), text, fill=(0, 0, 0))

# 画像を保存する
img.save(‘/content/○○○.jpg’)

 

アスキーアートをプログラミング言語のPythonで作ってみたのまとめ

google colabで動作確認済みです。いろいろいじって遊んでみてください。
アスキーアートに使う文字を変えてみるとか、画像の大きさを変えてみるとか。
自分に合ったコードに改造してみてください。

改造して動かしていくと、どんどん腕が上がっていきます。
当然、わからないところやエラーが出たりしますが、そんな時はググったり、チャトッたり(別名GPTったり)なんかで解決していきましょう。

アート系が好きな人、ちょっと変わったプログラミングをしてみたいって方はぜひ!

*******************

ChatGPTを使って、自然言語処理をプログラミングしてみた

ChatGPTに自然言語処理について聞いてみる

昨今のChatGPTの勢いがすごいものがありますね。

確かに使ってみるとわかるのですが、結構質問に対しての優れた回答をしてくれます。
これだけすごいシステムですから、プログラミングをしている者からすると、中身を知りたくなりますよね。

そんなこんなで、GPTシリーズの初期の頃のバージョンであるGPT2の文書生成モデルはどんなものなのかをChatGPTに聞きながら実装してみました。
(ちなみにChatGPTの回答はファクトチェックしていません。なので、間違っている可能性もあります。そこをご了承のほど)

まずは、ChatGPTに以下のプロンプトを投げてみます。

「あなたはシステムエンジニアです。
GPT2のようなシステムを使って、自然言語処理を体感したいです。
環境はgoogle colab
言語はPython。
上記の仕様でPythonコードを書いてください。
一歩づつ考えて実行してください。」

ちなみに、最後の「一歩づつ考えて実行してください。」は、このプロンプトを投げると理数系の精度が上がるらしいプロンプトです。

英語だと
Let’s think step by step.

この一言で数学の計算問題が解けたとかどうとか。

なので、一応、上記の日本語版で付けてみました。

で、返ってきた答えがこれ。

ChatGPTが書いたプログラミングのコード

###### ChatGPTの回答ここから

「はい、理解しました。まずはGoogle ColabでGPT-2の自然言語処理を体験するために必要なライブラリをインストールする必要があります。

以下のコードをGoogle Colabのセルにコピー&ペーストして実行してください。

!pip install transformers

次に、GPT-2を使って文章生成を行うためのコードを以下に示します。

##### pythonコードここから

from transformers import pipeline, set_seed

# 乱数シードを設定
set_seed(42)

# パイプラインを定義
generator = pipeline('text-generation', model='gpt2')

# テキスト生成
text = generator("Hello, I'm ChatGPT and ", max_length=50, num_return_sequences=1)[0]['generated_text']
print(text)

##### pythonコードここまで

このコードをGoogle Colabにコピー&ペーストし、実行してください。すると、”Hello, I’m ChatGPT and “というテキストに続く50文字の文章が生成されます。

上記のコードでは、GPT-2を用いた文章生成を行うために、Transformersというライブラリを使用しています。まず、set_seed()を用いて乱数のシードを固定し、同じ条件下で実行した場合に同じ結果が得られるようにしています。次に、pipeline()を用いてtext-generationというパイプラインを定義しています。このパイプラインを使用すると、GPT-2による文章生成を行うことができます。

最後に、生成するテキストの初めとなる文字列と、最大の文字数、生成するテキストの数を指定し、文章を生成しています。生成された文章は、print()で出力しています。

以上が、Google ColabでGPT-2を使った自然言語処理の体験に必要なコードになります。ご参考にしてください。」

###### ChatGPTの回答ここまで

てか、短かっ。
もっと長々のコードが出力されると思いきや、ほんの数行です。

おまけにtransformersのライブラリを読み込んでの回答です。

Attention層を使ってゴニョゴニョではなく、端折っているところが何とも言えないのですが、シンプルイズベストということで、今回はこのコードを実行してみましょう。

「Hello, I’m ChatGPT and」以降の文章を生成してくれるみたいです。

google colabにコピペして実行する

上記コードをgoogle colabにコピペ。

で、実行します。

結果は見事に文書生成できています。

「Hello, I’m ChatGPT and irc.is. A friend of mine went on a vacation on a recent trip and I came across a list of people where they will send their information (such as how many hours they are, how they」

もちろん、文書の意味は大した回答にはなっていません。
ざっくりモデルですから仕方ないですね。

大ざっぱに自然言語処理の文書生成を知りたい方には、かえって数行のコードですから、わかりやすいかもです。

GPT-3もtransformersライブラリを使ってるのか?

ついでに聞いてみました。

「GPT3もtransformersライブラリを使っているのですか?」

ChatGPTの回答です。

「はい、GPT-3もTransformersライブラリを使用しています。Transformersライブラリは、自然言語処理に関するさまざまなタスクを実行するためのAPIを提供し、GPT-2やGPT-3などの事前学習済み言語モデルを含め、多くのニューラルネットワークモデルをサポートしています。」

とのことです。
(ファクトチェックしてないです。あしからず)

ChatGPTは勉強教材として最高のツール

さて、今回の内容で学べることは、ChatGPTはプログラミングの勉強教材としては結構使えるものだってことです。

書籍を読む時間のない方や、本格的な書籍ほどの知識は要らない、けど、ざっくりとした知見は欲しいって方には、ピンポイントで知りたいことを聞けるツールだってことです。

以前だとググって必要な情報を探したけど、結構時間がかかるんですよね。
ましてやコードが動かないってこともあるし。

ChatGPTの出力したコードはgoogle colabで動かすと大抵はOKですね。
もちろんエラーも出ますけど、その際はググったり、調べたりで修正していけばよろしいかと。

あと、ChatGPTがあるからって、全くの知識がない方がチャレンジしても難しいです。
とりあえず入門書や基本書みたいなのを2、3冊読んでから挑戦してみてください。
でないと、専門用語がわからないですよね。

さて、そんなこんなで、
お次はGBT-3から大規模言語モデルLLMの実装ですかね。
(google colabだけじゃGPU足りませーん)

プログラミングがさらに楽しくなりそうです。

 

PAGE TOP