大規模言語モデル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足りませーん)

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

 

chatGPTなどのAIが書いた文章かどうかを判定してみる

chatGPTに書いてもらった文章を判定

さて、今回のテーマは表題の通り「chatGPTなどのAIが書いた文章かどうかを判定してみる」です。

みなさんはchatGPTにいろんな記事や文章を書いてもらってると思います。

それを然るべき場所に提出する際に、提出先がchatGPTでの制作をNGにしている所もあるでしょう。

しかし、chatGPT系に書いてもらった文章かどうかを判断するのは難しいと思いませんか。
確かに、chatGPT系の書いた文章はある種、クセがあるというか、なんとなくchatGPT系ぽい感じもしないではないですよね。

これは大規模言語モデルの特徴でもある、「次に現れるワードが確率的に最大になるものを羅列していく」っていう仕組みになっているからでしょう。

人が書いた時にこういう表現はくどいよなとか、ちょっと漢字や難しい表現が多くないかとか、なんとなくのクセみたいなものがchatGPT系の文章にはあります。

しかし、それを数値的に白黒で判断したいかなと。
そんなご要望に応えたものがこちらになります。

GPTKit
https://gptkit.ai/

openAIの判定サイト
https://platform.openai.com/ai-text-classifier

有名なものが上記の2つのサイト。

上のGPTKitのサイトは、文章を入れて判定ボタンを押すと、確率何%でAIぽいとか教えてくれます。

 

下のopenAIのサイトは確率云々ではなく、「これはAIが書いたっぽい」のような表現をしてくれます。

ちなみに、両方とも英語サイトですので、英語が苦手な方はchromeの翻訳機能などを使って、日本語に直してから利用してください。

ただし、入力する文章は英語にしないとはじかれます。
日本語で書いた文章はgoogle翻訳やdeeplなどで英語に直してから入力しましょう。

それでは、実際にやってみます。

chatGPTにプロンプトを入れて記事を生成

まずはchatGPTに「猫」の記事を書いてもらいます。

まずはプロンプトです。

あなたはプロのブロガーです。
猫をテーマに記事を書いてください。
1000文字以上で書いてください。

で、できたのが下の※印。
ん〜ん。chatGPT系ぽいですね。

なんていうか、くどい。しかも難しい単語を使い過ぎ。

※ 一部を抜粋して表記します。

「猫という生き物は、その可愛らしさと愛らしい外見だけでなく、非常に個性的な性格を持っています。彼らは一般的に自立心が強く、気ままな生き方をすることで知られています。一方で、猫は非常に社交的な生き物でもあります。彼らは家族と共に暮らすことを好み、愛情と注意を求めます。

猫を飼うことは、多くの人々にとって非常に愉快で素晴らしい経験です。しかし、飼い主には猫に関する基本的な知識が必要です。例えば、猫の健康状態を把握するために、猫の体重を定期的に測定し、食事や運動量を調整することが重要です。また、猫は非常に好奇心が強い生き物であるため、彼らが入ってはいけない場所を特定することも重要です」

まだ続きますが、まあこんな感じです。

さて、この文章をdeeplで翻訳します。
で、英語の文章がこちら。

一部抜粋。
「Cats are creatures with very unique personalities, not only because of their cuteness and adorable appearance. They are generally known for their independent and carefree way of life. On the other hand, cats are also very social creatures. They prefer to live with their families and demand love and attention.

Owning a cat is a very pleasant and wonderful experience for many people. However, owners need some basic knowledge about cats. For example, it is important to weigh the cat regularly and adjust its diet and exercise regime in order to monitor its health. It is also important to identify areas they should not enter, as cats are very curious creatures.」

これをGPTKitに入力します。
結果がこちら。
予想通り、falseでAIぽいと判定されました。

 

小学生でもわかる文章だと判定結果は変わるのか

今度は「文章を小学生でもわかるように簡単に書いてください」とプロンプトに書きます。
その後、できた文章を英文に直してGPTKitに入れてみます。

見事にfalse判定。「AIぽい」と判断されました。

こうなってくると、実際にtureの「人間が書いたっぽい」が見たいですよね。

そこで、人が書いたと思われる猫の記事を英文に直して、GPTKitに入力。
すると…。

なんと、ture判定。これは「人間ぽい」と判断しています。さすがですね。

 

なかなかの判定基準です。
では、ここで疑問です。

chatGPTが書いた記事を人間が編集してから判定する

chatGPT系に書いてもらった文章を、人間が読んでそれなりにまとめて書いてみる。
それを判定したらどうなるのかと。

私的には最大の知りたいことです。

そこで、上記のAIが書いた文章をそれなりにまとめてみました。
なるべく、くどくなるのを避けて、且つ、chatGPTの意向は伝えるように書いたつもりです。

一部抜粋。
「猫っていう生き物は可愛らしさもともかく、非常に個性的な一面ももっています。
猫は自立心が強く、気ままな生き方をする動物です。反面、社交性もあり、家族と共に暮らすことを好み、人からの愛情も求めます。

猫を飼うことは人生の楽しみを与えてくれます。しかし、猫を飼う飼い主はそれなりの猫に対する基本的は知識も必要ですね。
まず猫の健康状態を把握するために、体重測定、食事量、運動量の調整などが必要になります。
また猫は非常に好奇心が強い動物なので、彼らが入ってはいけない場所を知ることも大事なんです。
また、定期的な獣医さんによる検診や予防接種も大事になります」

これ以上内容を変えると、AIの書いた文章ではなく、完全な私制作の記事になりそうで難しいところですが、これでいってみましょう。

まず、この文章を英語に翻訳。
で、GPTKitに入れる。
すると、…。

なんとfalse判定。この文章はAIが書いたっぽいと判定されました。
そうですか。さすがですね。

これから推測すると、chatGPT系が書いた記事や文章を元に、オリジナルに変換したものも、ある程度見分けがつくといった答えになります。

どうなんですかね。
chatGPT系に記事の叩き台を作ってもらって、それを元にオリジナルの文章を作る作業は決して間違ってはいないと思うのですが。

ためしに、本家のopenAIのサイトにある判定サイトでも判断してもらいました。
こちらがURLです。
https://platform.openai.com/ai-text-classifier

結果はAIが書いたっぽいと。
ん〜ん。やはりそうですか。見分けられるのですね。

2つのサイトが判定しているのだから、確実なんでしょう。
まあ、AIを使って書いたのが真実ではあるのですが。

そうなると、chatGPT系の書いた文章を叩き台にするのも難しいという事になるんですかね。

あくまでもAIの記事をアイデアにして、完全なオリジナル文章を書いていかないといけない。
そんな感じでしょうか。

chatGPTに記事を書いてもらうなら、この方法がいいのか

ここで、よくあるのが下記のプロンプトです。

あなたはプロのブロガーです。
これから「猫」についての記事を書きます。
この時の見出しを5つ以上書き出してください。

これはよく使いますよね。
これで見出しが5つ以上出てくるのですが、この見出しをさらにプロンプトに入れます。

上記の見出し「○○○」を元に、300字位で記事を書いてください。

これでそこそこの記事が完成しますが、この方法だと間違いなく判定されますね。

人間がchatGPT系を利用するとしたら、この見出しまでにして、見出しからの記事を人が書いていくようにすれば大丈夫かと思います。

また、見出しさえあれば発想のヒントにもなるので、書く力のある人は書けると思います。

今まで、chatGPTを使って記事を量産していたところもあるかと思いますが、これを機に判定サイトでお試しした方がいいかもです。

AIが書いた記事をSEO上、どのような扱いにするのか微妙なところですが、もしNGの場合は再構築していかないと、量産した記事が無駄な作業になってしまいますね。

そうなるとwebライターさんはまだまだ需要があるかもですね。
見出しから記事を書くのはAIではなく、人間なのですから。

おっと、そのwebライターさんも気をつけて。
今後はクライアント先が、上記の判定サイトであなたの納めた記事を判定するかもです。

なんか面倒な世の中になってきましたね。

chatGPTなどのAIが書いた文章かどうかを判定してみるのまとめ

chatGPT系などのAIに文章を書いてもらうのはいいのですが、判定サイトが出てきています。

これらのサイトに上記で書いてもらった文章を入れると、瞬時に確率何%で白か黒かの判定が出ます。

書いた記事を人間が消化してまとめても判定結果は黒。AIが書いたと判定されました。

なので、こういったchatGPT系を使って文章を書く場合は、タイトルと見出しを書いてもらって、そこから先は人間が思考しながら書いた方が間違いないかと思います。(2023年4月現在)

そういう意味ではwebライターさんの職域も、まだまだ生き残れるかも知れないです。
(数ヶ月後、数年後にどうなっているかはわかりませんが)

チャットボットとは

チャットボットとは何か

みなさんチャットボットとはご存じでしょうか。
チャットで身近なところだと、LINEなんかがそうですね。

チャットボットとは、この応答のところを自動でやってくれるシステムのことです。

これをどこで使うかって。
個人ではまず使わないですね。

業務で消費者からの質問が多いところでは結構使われています。

最近の流行りだとchatGPTをLINEで使えるようにしたAIチャットくんなんかもチャットボットの一種ですね。

通常の応答文はあらかじめプログラマーが考えて学習させた文言を使うのですが、chatGPTのAPIを使うことによって、応答文を生成してくれるんですね。

これは結構レベルの高い回答ができるので便利です。
APIの使用料がかかるので、LINEとchatGPTを連携させるよりも、ユーザーの使用量により従量課金の設定の方が、手間のかかるところです。

なので作り方は公開してあっても、なかなかビジネスとして運営しようという人も少ないのが現状です。

だって、数万人の人が同時に使うってことはAPIの使用料がとてつもないですよね。
その金額を一旦こちらで負担して、それぞれのユーザーに請求していくって、なんとも大変すぎる。

結構な資本のあるとこでないと手が出せないシステムですよね。

さあ、そんなチャットボットですが、ウチでも開発提供していますので、ご入用の方はご相談ください。

それでは、チャットボットのイロハを記していきます。

チャットボットの特徴

チャットボットとは、AI技術を使って、テキストチャットで話すプログラムです。

例えば、ウェブサイトやアプリでよく使われていますよね。
自然な言葉で話しかけると、チャットボットは自動的に返事をしてくれます。

チャットボットの一番の特徴は、24時間いつでも話せることなんです。

人のカスタマーサポートは、仕事時間中しか対応できないけど、チャットボットは常に使えるから、いつでも助けてもらえる。

そして、多くの人が同時に話しても、一人のカスタマーサポート担当者が応対できないような大量の質問にも答えられます。

さらに、チャットボットは、自然な言葉を使って話しかけると、その意図を理解して自動的に返事をすることができるんです。
ユーザーは自分の問題や要望をすぐに解決することができ、カスタマーサポート担当者も同じ質問に何回も答える手間を省くことができます。

チャットボットの改善点

そんな便利なチャットボットも、まだ改善しなければならない点もあります。

例えば、チャットボットは人工知能に基づく技術を使用しているため、まだ完璧な解決策を提供できない場合もあります。

また、ユーザーが求める情報とチャットボットが提供する情報が一致しない場合もあるため、それを解消するためには適切なトレーニングが必要なんですね。

みなさんもchatGPTを使っていて、もっともらしいけど、間違った答えを普通に読んでいると思います。
そう、チャットボットとはいえ完璧ではないんですね。

まあ、まだまだ始まったばかりの黎明期ですから、仕方ないっちゃ仕方ないです。

しかし、そんなチャットボットも、今後ますます増えることが予想されてます。
顧客サポートや販売促進など、さまざまな分野で役立つことも期待されてます。

また、より高度な自然言語処理技術の進歩で、今よりも更に自然な対話が可能になるとも予想されてます。

 

チャットボットはこんなとこで使われる

チャットボットの具体的な応用例を紹介します。

● 顧客サポート
チャットボットは、24時間いつでも対応できるため、顧客サポートに利用されることが多いです。

商品の問い合わせやクレーム対応、配送状況の確認など、さまざまな質問に正確に回答することができるんですね。

カスタマーサポート担当者がいない時間帯や、同時に多くの問い合わせがある場合にも役立ちます。

● 販売促進
チャットボットは、ユーザーとの対話を通じて、商品の情報提供や購入の促進を行うこともできます。

商品の特長や価格、在庫状況などの情報を提供し、購入手続きを案内することもできます。

また、キャンペーン情報や割引クーポンの配信など、販売促進なんかにも利用されます。

● ビジネスの効率化
チャットボットは、ビジネスの効率化にも貢献します。

例えば、人事や経理などの業務で、よくある質問や手続きの自動化が可能です。
また、社内の情報共有やスケジュール管理などにも利用されますね。

以上のように、チャットボットはさまざまな分野で活用され、業務の効率化やコスト削減、顧客満足度の向上などに貢献しています。

また、自然な言葉で話しかけることができるため、ユーザーにとっても使いやすく、普及が進むことが予想されます。

チャットボットとは何かのまとめ

チャットボットはAI技術を使って自動返答するプログラムで、消費者からの質問が多い場所やウェブサイト、アプリで活躍しています。

24時間いつでも利用でき、一人の担当者が応対できない大量の質問にも答えることができます。ただし、完璧な解決策を提供できないこともあり、ユーザーとの情報不一致もあります。

今後どんどん改善されて、さらに使いやすいシステムになっていくでしょう。

またchatGPTなどの大規模言語モデルも普及していくので、ますますレベルの高い回答もできるようになります。
今後は、我々のかたわらになくてはならない存在になっていくでしょう。

ホームページ制作を無料で作れるか

ホームページ制作は無料で作れるのだろうか

さて、今回のタイトルは「ホームページ制作を無料で作れるか」ですが、答えはYESです。

ただし、制作費は無料でもホームページというのは、サーバー代と独自ドメイン(○○○.comなど)が月々数百円かかるので、こちらだけ負担してもらう形になります。

それと月々の管理料がかかる場合があります。
その金額はまちまち。また管理料の期間も半永久的なところもあれば、
1、2年で終わるものもあったりで、どこに頼むかで金額が変わってきます。

例えば管理料10000円で半永久的なんていったら、総額で数百万になってしまいます。
(サイトは20年はざらにもちますから、10000円✖️12✖️20で240万円です)

このへんはよくチェックしないと結果的にお高くなりますので、注意が必要です。

管理料はなるべく安い所。
なおかつ、管理料は期間限定で、「この期間が終わったら無料」のところを探すとお得ですね。

ウチでは、今のところ2つの超お得なコースを設置しています(2023年1月現在)。

超お得なホームページ制作無料コース

さて、ウチでは超お得なコースを2つ用意しています(デザインはお任せになります)。

ひとつめがこちら。

●無料でホームページを制作(1〜3ページ)
管理料は月々3800円のみ。
これを12ヶ月でお支払い頂いて終了となります。
以降は管理料は一切かかりません。これはお得ですね。

このコースは起業時などに初期投資をなるべくおさえたい方におすすめです。
私も経験ありますが、起業時はお金がかかりますよね。

なので、なるべくコストをかけたくない。
そんな方におすすめのコースです。

ホームページを自分で作るとすると

ちなみに、ホームページを自分で作ったりする人もいます。
ところが、素人の方が見よう見まねで作っても、SEO対策もできていないので、作って終わり。
誰も辿り着けないホームページの出来上がりになってしまいます。

するとサイトからの集客もなく、ネット上の会社案内ができただけという結果になります。

これは他でも書いているのですが、お金の派生しない趣味サイトはご自分で作られるのもいいと思います。

しかし、お金のやり取りが派生するビジネス系のサイトの場合は、業者に頼んで作ってもらった方が間違いありません。

きちんとしたホームページを作られた方が、後々のサイトからの売上で回収できますので、結果的にお得になるんです。

そこで、なるべく安く、しかもそれなりのホームページを作ってくれる所を探してみてください。
無ければ、ウチでも作れますので、ご依頼ください。

15000円でホームページ制作

●もうひとつのコースはこちら。
なんと15000円でホームページ制作(1〜2ページ)。
月々の管理料も無料。

こちらのコースはホームページがあればいいという方におすすめ。
とりあえずサマになったサイトがあればOKという方も多いでしょう。

そんな方におすすめします。

上記いずれのコースも簡易的ですがSEO対策済みのホームページですので、業種によっては上位表示も期待できます。

ホームページ制作が無料とはいえ

まあ、無料とは言っても、完全に0円で全てができるわけではありません。
上記で書いたように、サーバー代やドメイン代が月々数百円かかりますし、管理料もかかる場合があります。

制作費が無料、0円なんですね。

逆にその方が安心ですよね。
完全無料、0円で毎月も無料なんてサイトを構築できたら、逆にあやしい。
なにかあるんじゃないかって思いますから。

ホームページ制作を無料で作れるかのまとめ

ホームページ制作を無料で作れるかの答えはYESです。

ただし、サーバー代とドメイン代が月々数百円はかかります。
また、場合によっては管理料がかかる場合があります。

この管理料は業者によってまちまちですので、チェックしてみてください。

●ウチではホームページ制作無料のコースと15000円の2つのコースがありますので、よかったら利用してみてください(2023年1月現在)。

PAGE TOP