初心者がChatGPTを使ってAIを作って研究してみた

はじめに

これまでpythonの勉強をしてきましたが、pythonの魅力の一つであるAIをプログラミングしたことがありませんでした。流行りも取り込みたいのでAIを開発して研究してみたいと思いました。最終的にはAIを使って何か新しい試みに挑戦できたらと思っています。開発のお供にChatGPTを使っていきたいと思います。

とりあえずChatGPTに聞いてみた

まずはChatGPTに「pythonでaiを作りたいのでコードを教えて」と聞いてみます。

以下、回答になります。AI開発方法には2種類あるようです。早速見てみましょう。

1. 機械学習のためのscikit-learnの利用

以下の例では、scikit-learnを使ってアヤメの分類モデルを作成します。

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import classification_report

# データセットの読み込み
iris = load_iris()
X, y = iris.data, iris.target

# データセットをトレーニングセットとテストセットに分割
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# データの標準化
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)

# k近傍法分類器の作成
knn = KNeighborsClassifier(n_neighbors=3)

# モデルのトレーニング
knn.fit(X_train, y_train)

# テストデータで評価
predictions = knn.predict(X_test)
print(classification_report(y_test, predictions))

コピペして実行してみます。

        precision    recall  f1-score   support

           0       1.00      1.00      1.00        10
           1       1.00      1.00      1.00         9
           2       1.00      1.00      1.00        11

    accuracy                           1.00        30
   macro avg       1.00      1.00      1.00        30
weighted avg       1.00      1.00      1.00        30

なんかよくわからないけど実行できた。

もう1種類のAIを実行してみます。

2. TensorFlowとKerasを使用した深層学習

以下は、Kerasを使って簡単なニューラルネットワークを構築する例です。

import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
from tensorflow.keras.datasets import mnist
from tensorflow.keras.utils import to_categorical

# MNISTデータセットの読み込み
(X_train, y_train), (X_test, y_test) = mnist.load_data()

# データの前処理
X_train = X_train.reshape((X_train.shape[0], -1)).astype('float32') / 255
X_test = X_test.reshape((X_test.shape[0], -1)).astype('float32') / 255
y_train = to_categorical(y_train, 10)
y_test = to_categorical(y_test, 10)

# モデルの構築
model = Sequential([
    Dense(128, activation='relu', input_shape=(784,)),
    Dense(64, activation='relu'),
    Dense(10, activation='softmax')
])

# モデルのコンパイル
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])

# モデルのトレーニング
model.fit(X_train, y_train, epochs=10, batch_size=32)

# テストデータでモデルを評価
loss, accuracy = model.evaluate(X_test, y_test)
print(f"Loss: {loss}, Accuracy: {accuracy}")

コピペして実行してみます。

Epoch 1/10
1875/1875 [==============================] - 5s 2ms/step - loss: 0.2326 - accuracy: 0.9312
Epoch 2/10
1875/1875 [==============================] - 4s 2ms/step - loss: 0.1021 - accuracy: 0.9689
Epoch 3/10
1875/1875 [==============================] - 4s 2ms/step - loss: 0.0706 - accuracy: 0.9778
Epoch 4/10
1875/1875 [==============================] - 4s 2ms/step - loss: 0.0530 - accuracy: 0.9829
Epoch 5/10
1875/1875 [==============================] - 4s 2ms/step - loss: 0.0403 - accuracy: 0.9866
Epoch 6/10
1875/1875 [==============================] - 4s 2ms/step - loss: 0.0353 - accuracy: 0.9883
Epoch 7/10
1875/1875 [==============================] - 4s 2ms/step - loss: 0.0273 - accuracy: 0.9906
Epoch 8/10
1875/1875 [==============================] - 4s 2ms/step - loss: 0.0232 - accuracy: 0.9926
Epoch 9/10
1875/1875 [==============================] - 4s 2ms/step - loss: 0.0222 - accuracy: 0.9923
Epoch 10/10
1875/1875 [==============================] - 4s 2ms/step - loss: 0.0194 - accuracy: 0.9935
313/313 [==============================] - 1s 2ms/step - loss: 0.0971 - accuracy: 0.9747
Loss: 0.09709364175796509, Accuracy: 0.9746999740600586

こちらもなんかできた。

こっちは矢印が出てきてかっこいい!

どっちでやるかは後で調べてみましょう。
とりあえず、ChatGPTでの最後の文章

これらの例は、PythonでAIを作成するための基本的な出発点を提供します。しかし、実際のプロジェクトではデータの収集と前処理、モデルのチューニング、評価、デプロイメントなど、多くのステップが必要です。また、自然言語処理、画像認識、音声認識など、特定のタスクには特化したアプローチが必要です。

以上がChatGPTで返答と実行結果になります。

では、どちらの方法をメインに開発・研究していくか調査します。まずは両者の違い

scikit-learnとtensorflowの違い

汎用性や啓発レベルにはtensorflowの方がよさそうです。そこで、今後はtensorflowで開発していきたいと思います。

次回以降コードを一文一文読み解いていきたいと思います。

コメント

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