たった 10 行のコードでディープラーニングを実行できますか? PaddlePaddleフレームワークの高レベルAPIでAIを簡単に操作しよう

たった 10 行のコードでディープラーニングを実行できますか? PaddlePaddleフレームワークの高レベルAPIでAIを簡単に操作しよう

高レベルAPIとは

ディープラーニングは、人工知能時代の中核技術として、近年、学術界と産業界の両方でますます重要な役割を果たしています。しかし、ディープラーニングの理論は習得が難しすぎる上、開発プロセスも複雑すぎるため、多くの人がディープラーニングから遠ざかっています。

ディープラーニングの学習プロセスを簡素化し、ディープラーニング開発の難易度を軽減するために、Baidu PaddlePaddle フレームワークは 1 年近くの改良を経て、ディープラーニング API を継続的に最適化し、開発者の使用シナリオに合わせてカプセル化してきました。最新バージョンの PaddlePaddle フレームワークでは、高度な統合と科学的な統一性を備えた新しい PaddlePaddle API システムがリリースされました。

PaddlePaddle フレームワークは、API を基本 API と高レベル API の 2 種類に分類します。ピザ作りを例にとると、一般的に2つの方法があります。1つは小麦粉、牛乳、ハムなどの材料を用意し、丁寧に加工しておいしいピザを作る方法です。2つ目は、販売者から焼き上がったピザと用意された具材を購入し、ピザを直接温めて食べる方法です。

では、これら 2 つの方法の違いは何でしょうか?方法 1 を使用すると、自分で材料を用意し、料理を混ぜ合わせ、好みに合わせてソースを作り、さまざまな味を満足させることができます。ただし、これは「経験豊富な人」に適しています。初心者の場合は、惨めに失敗する可能性があります。方法 2 は、販売者から事前に焼かれたピザとフィリングを使用し、直接加熱して非常に迅速にピザを作ることです。味は保証されます。ただし、方法 1 と比較すると、味の選択肢は少なくなります。

フレームワークを例に挙げると、基本 API は方法 1 に対応し、高レベル API は方法 2 に対応します。基本 API を使用すると、制限なしに好きなように独自のディープラーニング モデルを構築できます。方法 2 を使用すると、モデルを迅速に実装できますが、自律性が低くなる可能性があります。

ただし、ピザを作るのとは異なり、PaddlePaddle フレームワークを使用すると、両方の長所を活かすことができます。高レベル API 自体は独立したシステムではないため、基本 API と組み合わせて使用​​することで高レベルと低レベルの統合を実現でき、より便利に使用できるようになります。これにより、開発プロセス中に高レベル API の利便性を考慮しながら、基本 API のパワーを享受できるようになります。

高レベルAPI、すべて

PaddlePaddle フレームワークの高レベル API の全体像は次のとおりです。

図からわかるように、PaddlePaddle フレームワークの高レベル API は、データの読み込み、モデルの構築、モデルのトレーニング、モデルの視覚化、高レベルの使用の 5 つのモジュールで構成されています。 PaddlePaddle フレームワークは、さまざまな使用シナリオに合わせてさまざまな高レベル API を提供し、開発の難易度を軽減し、誰もが簡単にディープラーニングを始められるようにします。

まず、ディープラーニングにおける典型的な手書き数字分類タスクを通じて、PaddlePaddle の高レベル API を簡単に見てみましょう。次に、各モジュールに含まれる API について詳しく紹介します。

  1. 輸入パドル
  2. paddle.vision.transforms からCompose、Normalize をインポートします
  3. paddle.vision.datasetsからMNISTをインポートする
  4. paddle.nnをnnとしてインポートする
  5.  
  6. # ここではデータの前処理、正規化が使用されます
  7. 変換 = Compose([正規化(平均=[ 127.5 ],
  8. 標準偏差 = [ 127.5 ],
  9. データフォーマット = 'CHW' )])
  10.  
  11. # データの読み込み、トレーニング セットにデータ前処理操作を適用する
  12. train_dataset = paddle.vision.datasets.MNIST(モード = 'train' 、transform = transform)
  13. test_dataset = paddle.vision.datasets.MNIST(モード = 'test' 、変換 = transform)
  14.  
  15. # モデルネットワーク
  16. mnist = nn.シーケンシャル(
  17. nn.フラット化()、
  18. nn.リニア( 784,512 ) ,
  19. nn.ReLU()、
  20. nn.ドロップアウト( 0.2 )、
  21. nn.リニア( 512,10 ))
  22.  
  23. # モデルのカプセル化、モデルクラスによるカプセル化
  24. モデル = paddle.Model(mnist)
  25.  
  26. # モデル構成: モデルのトレーニングの準備、オプティマイザー、損失関数、精度計算方法の設定
  27. モデルを準備します(オプティマイザー=paddle.optimizer.Adam(パラメーター=model.parameters()),
  28. 損失=nn.CrossEntropyLoss()、
  29. メトリック = paddle.metric.Accuracy())
  30.  
  31. # モデルトレーニング、
  32. モデル.fit(train_dataset,
  33. エポック = 10
  34. バッチサイズ = 64
  35. 詳細 = 1 )
  36.  
  37. # モデル評価、
  38. モデルを評価します(テストデータセット、詳細= 1 )
  39.  
  40. #モデルを保存します。
  41. モデルを保存( 'model_path' )

例からわかるように、データの前処理、データの読み込み、モデルのネットワーク化、モデルのトレーニング、モデルの評価、モデルの保存などのシナリオでは、1 ~ 3 行のコードで高レベル API を実装できます。数十行のコードを必要とする従来の方法と比較して、高レベル API では、MNIST 分類器を簡単に実装するために必要なコードは数十行だけです。非常に少ないコードで基本 API と同じ効果を実現できるため、ディープラーニングの学習しきい値が大幅に下がります。

初めてディープラーニング フレームワークを学習し、PaddlePaddle 高レベル API を使用する場合、「とても面倒だ。なぜ PaddlePaddle 高レベル API がこんなに早く開発されたのか? まだ数行のコードを書きたい!」と言うかもしれません。

高レベルAPI、その方法

次に、CV タスクを例に、さまざまなシナリオで PaddlePaddle 高レベル API を使用する方法を簡単に紹介します。

この例の完全なコードは AI Studio で入手できます。ソフトウェアやハードウェア環境を準備することなく、オンラインで直接コードを実行できます。とても便利です: https://aistudio.baidu.com/aistudio/projectdetail/1243085

1. データの前処理とデータの読み込み

データのロードについては、いくつかの一般的なタスクでは、PaddlePaddle フレームワークの組み込みデータ セットを使用してデータのロードを完了できます。 PaddlePaddle フレームワークは、一般的に使用されるデータセットをドメイン API として使用し、それらを paddle.vision.datasets ディレクトリに統合します。これには、CV 分野で一般的な MNIST、Cifar、Flowers などのデータセットが含まれます。

データ前処理のシナリオでは、PaddlePaddle フレームワークは 20 を超える一般的な画像前処理 API を提供し、画像の色相、コントラスト、彩度、サイズなどのさまざまなデジタル画像処理方法などのデータ強化を迅速に実装できます。画像前処理 API は paddle.vision.transforms ディレクトリに統合されており、非常に便利です。データ前処理変換を作成し、その中に必要なデータ前処理メソッドを保存し、データ読み込みプロセス中にその変換をパラメーターとして渡すだけです。

さらに、独自のデータセットをロードする必要がある場合は、Paddle フレームワークの標準データ定義およびデータロード API である paddle.io.Dataset と paddle.io.DataLoader を使用して、データセットの定義とデータのロードをワンクリックで完了できます。ここでは、Dataset を使用してデータ セットを定義する方法を示す例を示します。例は次のとおりです。

  1. paddle.ioからデータセットをインポート
  2.  
  3. クラスMyDataset(データセット):
  4. 「」 「
  5. ステップ1: paddle.io.Datasetクラスを継承する
  6. 「」 「
  7. __init__(self)を定義します。
  8. 「」 「
  9. ステップ2: コンストラクタを実装し、データ読み取りメソッドを定義し、トレーニングデータセットとテストデータセットを分割する
  10. 「」 「
  11. スーパー(MyDataset、self).__init__()
  12.  
  13. 自己データ = [
  14. [ 'traindata1' , 'label1' ],
  15. [ 'traindata2' , 'label2' ],
  16. [ 'traindata3' , 'label3' ],
  17. [ 'traindata4' , 'label4' ],
  18. ]
  19.  
  20. def __getitem__(self, インデックス):
  21. 「」 「
  22. ステップ 3: __getitem__ メソッドを実装し、インデックスを指定するときにデータを取得する方法を定義し、単一のデータ (トレーニング データと対応するラベル) を返します。
  23. 「」 「
  24. データ = self.data[インデックス][ 0 ]
  25. ラベル = self.data[インデックス][ 1 ]
  26.  
  27. 戻りデータ、ラベル
  28.  
  29. __len__(自分)を定義します:
  30. 「」 「
  31. ステップ4: データセットの合計数を返す__len__メソッドを実装する
  32. 「」 「
  33. len(self.data)を返す
  34.  
  35. # テスト定義データセット
  36. train_dataset = MyDataset()
  37.  
  38. print( '==============トレーニングデータセット==============' )
  39. データの場合、train_dataset のラベル:
  40. print(データ、ラベル)


上記の仕様の 4 つの手順に従うだけで、独自のデータセットを実装できます。次に、train_dataset をパラメーターとして DataLoader に渡し、データ ローダーを取得してトレーニング データの読み込みを完了します。

【ヒント: データセットの定義については、PaddlePaddle フレームワークはマップ スタイルと反復可能スタイルの両方のデータセット定義をサポートしています。それぞれ paddle.io.Dataset と paddle.io.IterableDataset を継承するだけで済みます。 】

2. ネットワーク構築

ネットワーク構築モジュールでは、PaddlePaddle の高レベル API が基本 API と一貫性があり、ネットワーク構築には paddle.nn 下の API が統一的に使用されます。 paddle.nn ディレクトリには、畳み込みに関連する Conv1D、Conv2D、Conv3D、再帰型ニューラル ネットワークに関連する RNN、LSTM、GRU など、モデル ネットワーキングに関連するすべての API が含まれています。

ネットワーク メソッドについては、PaddlePaddle フレームワークはモデル構築に Sequential または SubClass をサポートします。 Sequential は線形ネットワーク構造を素早く構築するのに役立ちますが、SubClass はより豊富で柔軟なネットワーク構造をサポートします。実際の使用シナリオに基づいて、最も適切なネットワーク方法を選択できます。たとえば、順次線形ネットワーク構造の場合、Sequential を直接使用できます。より複雑なネットワーク構造の場合は、SubClass を使用してモデルを構築し、__init__ コンストラクターで Layer を宣言し、宣言された Layer 変数を forward で使用して順方向計算を行います。

Sequential と SubClass の例をそれぞれ見てみましょう。

1. シーケンシャル

線形ネットワーク モデルの場合、ネットワーク モデル構造の順序に従って Sequential にレイヤーを追加するだけです。具体的な実装は次のとおりです。

  1. # シーケンシャルネットワーキング
  2. mnist = nn.シーケンシャル(
  3. nn.フラット化()、
  4. nn.リニア( 784,512 ) ,
  5. nn.ReLU()、
  6. nn.ドロップアウト( 0.2 )、
  7. nn .リニア( 512,10 )

2. サブクラス

SubClass を使用したネットワークの実装は次のとおりです。

  1. # サブクラスネットワーキング
  2. クラスMnist(nn.Layer):
  3. __init__(self)を定義します。
  4. super (Mnist, self).__init__()
  5.  
  6. self.flatten = nn.Flatten()
  7. self.linear_1 = nn.Linear( 784 , 512 )
  8. self.linear_2 = nn.Linear( 512,10 )です
  9. 自己.relu = nn.ReLU()
  10. 自己ドロップアウト = nn.ドロップアウト( 0.2 )
  11.  
  12. def forward(自分自身、入力):
  13. y = self.flatten(入力)
  14. y = 自己.線形_1(y)
  15. y = 自己.relu(y)
  16. y = 自己ドロップアウト(y)
  17. y = 自己.線形_2(y)
  18.  
  19. yを返す

上記の SubClass ネットワーキングの結果は、Sequential ネットワーキングの結果とまったく同じです。SubClass ネットワーキングを使用すると、Sequential ネットワーキングを使用するよりも複雑になることがはっきりとわかります。ただし、これによりネットワーク モデル構造に柔軟性がもたらされます。さまざまなシナリオに対応するために、さまざまなネットワーク モデル構造を設計できます。

3. PaddlePaddleフレームワーク組み込みモデル

カスタマイズされたモデル構造に加えて、PaddlePaddle フレームワークには多くの組み込みモデルが「思慮深く」用意されており、わずか 1 行のコードでディープラーニング モデルを実装できます。現在、PaddlePaddle フレームワークに組み込まれているモデルはすべて CV 分野のモデルであり、一般的な vgg シリーズ、resnet シリーズ、その他のモデルを含め、すべて paddle.vision.models ディレクトリにあります。使い方は次のとおりです:

  1. インポートパドル
  2. paddle.vision.models からresnet18をインポートします
  3.  
  4. # 方法1: 1行のコードで直接使用する
  5. resnetresnet = resnet18()
  6.  
  7. # 方法2: 二次開発のバックボーンネットワークとして利用する
  8. クラスFaceNet(paddle.nn.Layer):
  9. def __init__(self, num_keypoints= 15 , pretrained=False):
  10. スーパー(FaceNet、self).__init__()
  11.  
  12. self.backbone = resnet18(事前トレーニング済み)
  13. self.outLayer1 = paddle.nn.Linear( 1000 , 512 )
  14. self.outLayer2 = paddle.nn.Linear( 512 , num_keypoints* 2 )
  15.  
  16. def forward(自分自身、入力):
  17. 出力 = self.backbone(入力)
  18. アウト = self.outLayer1(アウト)
  19. アウト = self.outLayer2(アウト)
  20. 戻る

3. モデルの可視化

モデルの構築が完了したら、モデルのネットワーク構造とパラメータを視覚化する必要がある場合があります。モデルを Model でカプセル化し、model.summary を呼び出すだけで、次のようにネットワーク モデルの視覚化を実現できます。

  1. mnist = nn.シーケンシャル(
  2. nn.フラット化()、
  3. nn.リニア( 784,512 ) ,
  4. nn.ReLU()、
  5. nn.ドロップアウト( 0.2 )、
  6. nn.リニア( 512,10 ))
  7.  
  8. # モデルのカプセル化、モデルクラスによるカプセル化
  9. モデル = paddle.Model(mnist)
  10. モデル.要約()

出力は次のようになります。

  1. ---------------------------------------------------------------------------
  2. レイヤー(タイプ)入力形状出力形状パラメータ#
  3. ===========================================================================
  4. フラット化-795 [[ 32 , 1 , 28 , 28 ]] [ 32 , 784 ] 0           
  5. 線形- 5 [[ 32 , 784 ]] [ 32 , 512 ] 401 , 920         
  6. ReLU - 3 [[ 32 , 512 ]] [ 32 , 512 ] 0          
  7. ドロップアウト- 3 [[ 32 , 512 ]] [ 32 , 512 ] 0            
  8. 線形- 6 [[ 32 , 512 ]] [ 32 , 10 ] 5 , 130       
  9. ===========================================================================
  10. 合計パラメータ: 407,050  
  11. トレーニング可能パラメータ: 407、050  
  12. トレーニング不可能なパラメータ: 0  
  13. ---------------------------------------------------------------------------
  14. 入力サイズ (MB): 0.10  
  15. フォワード/バックワードパスのサイズ (MB): 0.57  
  16. パラメータサイズ (MB): 1.55  
  17. 推定合計サイズ (MB): 2.22  
  18. ---------------------------------------------------------------------------
  19. { 'total_params' : 407050 'trainable_params' : 407050 }

Model.summary は、ネットワークの各層の形状だけでなく、ネットワークの各層のパラメータ数とモデルのパラメータの合計数も示すため、モデルのすべての情報を非常に便利かつ直感的に確認できます。

4. モデルのトレーニング

1. 高レベルAPIを使用してすべてのデータセットをトレーニングする

これまで、ディープラーニングの開発者を悩ませてきた問題は、モデルトレーニングのコードが複雑すぎることでした。プログラムを実行するには多くの手順が必要になることが多く、コードが長いため多くの開発者がやる気をなくしていました。

現在、PaddlePaddle の高レベル API は、トレーニング、評価、予測 API をカプセル化しています。Model.prepare()、Model.fit()、Model.evaluate()、Model.predict() を直接使用して、モデルのトレーニング、評価、予測を完了できます。

従来のフレームワークでは、多くの場合、大量のトレーニング コードが必要になります。 PaddlePaddle の高レベル API を使用すると、モデルのトレーニングを 3 ~ 5 行以内で完了できるため、開発コードの量が大幅に簡素化され、初心者の開発者にとって非常に使いやすくなります。具体的なコードは次のとおりです。

  1. # Modelクラスを使用してネットワーク構造をモデルにカプセル化します
  2. モデル = paddle.Model(mnist)
  3.  
  4. # モデルのトレーニングの準備、オプティマイザー、損失関数、精度計算方法の設定
  5. モデルを準備します(オプティマイザー=paddle.optimizer.Adam(パラメーター=model.parameters()),
  6. 損失=paddle.nn.CrossEntropyLoss()、
  7. メトリック = paddle.metric.Accuracy())
  8.  
  9. # モデルのトレーニングを開始し、トレーニングデータセットを指定し、トレーニングラウンドを設定し、各データセットの計算のバッチサイズを設定し、ログ形式を設定します
  10. モデル.fit(train_dataset,
  11. エポック = 10
  12. バッチサイズ = 64
  13. 詳細 = 1 )
  14.  
  15. # モデル評価を開始し、データセットを指定し、ログ形式を設定します
  16. モデルを評価します(テストデータセット、詳細= 1 )
  17.  
  18. # モデルのテストを開始し、テストセットを指定します
  19. モデル.予測(テストデータセット)

2. 高レベルのAPIを使用して、データセットのバッチでトレーニング、検証、テストを行う

場合によっては、データをバッチでサンプリングしてから、モデルのトレーニングと検証を完了する必要があります。この場合、次のように train_batch、eval_batch、predict_batch を使用して、バッチでトレーニング、検証、テストを完了できます。

  1. # モデルのカプセル化、モデルクラスによるカプセル化
  2. モデル = paddle.Model(mnist)
  3.  
  4. # モデル構成: モデルのトレーニングの準備、オプティマイザー、損失関数、精度計算方法の設定
  5. モデルを準備します(オプティマイザー=paddle.optimizer.Adam(パラメーター=model.parameters()),
  6. 損失=nn.CrossEntropyLoss()、
  7. メトリック = paddle.metric.Accuracy())
  8.  
  9. # トレーニングセットデータローダーを構築する
  10. train_loader = paddle.io.DataLoader(train_dataset、batch_size= 64 、shuffle=True) を実行します。
  11.  
  12. # train_batchを使用してトレーニングを完了します
  13. batch_idの場合、enumerate(train_loader())内のデータ:
  14. モデル.train_batch([データ[ 0 ]],[データ[ 1 ]])
  15.  
  16. # テストセットデータローダーを構築する
  17. test_loader = paddle.io.DataLoader(test_dataset、places=paddle.CPUPlace()、batch_size= 64 、shuffle=True)
  18.  
  19. # eval_batchを使用して検証を完了します
  20. batch_idの場合、enumerate(test_loader())内のデータ:
  21. モデル.eval_batch([データ[ 0 ]],[データ[ 1 ]])
  22.  
  23. # 予測を完了するにはpredict_batchを使用します
  24. batch_idの場合、enumerate(test_loader())内のデータ:
  25. モデル.予測バッチ([データ[ 0 ]])

5. 高度な使い方

さらに、PaddlePaddle 高レベル API は、カスタム Loss、カスタム Metric、カスタム Callback などの高度なゲームプレイもサポートします。

カスタマイズされた損失とは、フレームワークの既存の損失インターフェースに損失計算方法が存在しない、またはアルゴリズムがニーズを満たさない特定のタスクに遭遇することがあるため、損失を自分でカスタマイズしたいと考えることを意味します。

メトリックのカスタマイズと損失のカスタマイズのシナリオは同じです。パーソナライズされた方法で実装したい操作が発生した場合は、フレームワークを使用してカスタマイズされた評価計算方法を完成させることもできます。

カスタム コールバックは、トレーニング中にいくつかのパラメータとデータを収集するのに役立ちます。Model.fit() はトレーニング プロセスをカプセル化するため、トレーニング中に損失、メトリック、およびその他の情報を保存する必要がある場合は、コールバック パラメータを通じてこの情報を収集する必要があります。

もっと豊富な遊び方については、記事の最後にあるQRコードをスキャンして入手してください〜

高レベルAPI、次へ

上記の記事では、CV タスクを例にして、PaddlePaddle フレームワークの高レベル API の使用ガイドを紹介しています。その後、PaddlePaddleフレームワークは、データのパディング、データセットの語彙の取得など、NLP分野専用のデータ前処理モジュールもリリースする予定です。ネットワークに関しては、ネットワーク関連のsequence_mask、評価指標関連のBLEUなど、NLP分野のネットワーク専用のAPIも実装します。最後に、NLP分野のアーティファクトトランスフォーマーについても、特定の最適化を実行します。これらの機能がリリースされたら、できるだけ早くお知らせしますので、お楽しみに〜

高レベルAPI、

PaddlePaddle 高レベル API の使用法の紹介を読んだ後、試してみたくなりましたか?

体験方法1:オンライン体験

ソフトウェアやハードウェア環境を準備する必要はありません。次のアドレスに直接アクセスして、オンラインでコードを実行し、効果を確認できます: https://aistudio.baidu.com/aistudio/projectdetail/1243085

体験方法2:現地体験

それでもローカル コンピューターで体験したい場合は、PaddlePaddle オープン ソース フレームワーク 2.0 がローカル コンピューターに正常にインストールされていることを確認する必要があります。

以下では、PaddlePaddle オープンソース フレームワーク 2.0 のインストール方法について説明します。以下のコマンドを参照して、pip を使用して直接インストールできます。インストール後、高レベル API の使用を開始できます。

# CPUバージョン

  1. # CPUバージョン
  2. $ pip3 インストール paddlepaddle== 2.0.0rc0 -i https://mirror.baidu.com/pypi/simple  
  3. # GPU バージョン
  4. $ pip3 インストール paddlepaddle_gpu== 2.0.0rc0 -i https://mirror.baidu.com/pypi/simple  

<<:  新しい検索エンジンのスキル: アリババの新しい研究では、2D 画像を使用して 3D モデルを検索します

>>:  AIチップと人工知能産業は密接に連携している

ブログ    
ブログ    

推薦する

CMU と Adob​​e が協力: GAN モデルは事前トレーニングの時代を先導し、トレーニング サンプルのわずか 1% しか必要としません

事前トレーニングの時代に入ってから、視覚認識モデルのパフォーマンスは急速に向上しましたが、生成的敵対...

今後 20 年間で人工知能は何ができるでしょうか?

人工知能は長年にわたって世界を支配しており、さまざまな分野における主要な問題が AI を使用して解決...

1 つの記事で AI エージェント テクノロジーを理解する

環境と自律的に対話し、収集したデータに基づいて決定を下し、人間の介入を最小限に抑えてシナリオベースの...

CNN 推論エンジンを使用して IoT デバイスにディープラーニングを実装するにはどうすればよいですか?

[[212457]]ディープラーニング技術により、モノのインターネット (IoT) デバイスは非構...

インターネットの大失敗: 破壊された破壊者

[[324391]]インターネットの破壊的イノベーションは、自らの業界から生まれることはありません...

Baiduの王海峰氏はオープンソースのディープラーニングプラットフォームPaddlePaddleを2019年のソフトウェアエキスポに導入した。

「ディープラーニングフレームワークは、インテリジェント時代のオペレーティングシステムです。百度のP...

...

...

我が国の新世代人工知能ガバナンス原則が発表され、立法のための強固な基盤が築かれた

テクノロジーの発展はしばしば諸刃の剣であり、人工知能の商業化も一定の原則に従う必要があります。 6月...

今後5年間の15の主要なテクノロジートレンド

私たちの生活、仕事、交流の仕方に革命をもたらす技術の進歩によって、未来は常に形を変えています。今後 ...

アルゴリズムが力を発揮します!なぜ人間と人工知能はますます似てきているのでしょうか?

[[256247]]アルゴリズムは私たちにどう考えるべきかを教え、それが私たちを変えています。コン...

サイバーセキュリティにおける機械学習の適用における困難さと対策

サイバーセキュリティ分野特有の敵対的性質は、人工知能アプリケーションの実装に多くの困難をもたらしてき...

パロアルトネットワークス:AIを使ってAIと戦うことは、ネットワークセキュリティ技術の発展における避けられないトレンドです

「 AI攻撃を阻止するために人力を使うことはできません。AIと戦うにはAIを使わなければなりません。...

GPT-4 はタイプ I の性格を持っていることが判明しました。ビッグモデルMBTIテストがByteから登場

誰かが実際に大規模モデルで MBTI をテストしたというのは驚くべきことです。結果は良好です。 Ch...

大規模モデルの最大のバグは、正解率がほぼゼロであり、GPTからLlamaまで誰も免れないことです。

GPT-3とLlamaに「AはBである」という単純な知識を教え、​​次にBが何であるかを尋ねました...