Pythonの学習を始めようと思ったきっかけに、「AI開発をしたい!」という方は多いのではないでしょうか?
私はそのうちの一人です
2023年になってから、AI関連の技術が次々に発表されています
これから先、AIに関する需要はますます増加すると考えられますので、今のうちにPythonでAI学習を進めるのが、おすすめです
この記事では、PythonでAI開発を独学で行う方法について、解説していきたいと思います
実際に、私はPythonでAI開発を独学で行なっているので、今回の記事でも作成したサンプルコードを掲載していきます
この記事を読めば、PythonでAIを独学で実装することができるようになるので、ぜひ参考にしてみてください

筆者について
2021年から本格的にPython学習を始め、今ではPythonによる収益化に成功
大学院時代には、R言語とPythonを使って統計処理を行っていたため、Pythonを使ったデータサイエンスの知識が豊富
医療データを機械学習を用いて解析したり、学会発表も行なっている
機械学習やAIでは、データサイエンスが非常に重要になります
データサイエンスについて学びたい場合には、データミックスの利用がおすすめです
データミックスは、データサイエンスに特化したプログラミングスクールで、データサイエンスを学びながら、pythonを学ぶことができます
無料個別相談会をオンラインで行っているので、興味がある方は一度参加してみるのをおすすめします
※無料オンライン相談や個別相談などさまざまなイベントが開催中
Contents
PythonでAIを独学する方法

PythonでAIを独学で進めるためには、4STEPあります
1つずつ確認していきましょう
- Pythonの基礎知識を学ぶ
- AIに必要なライブラリをインストールする
- AIアルゴリズムを学ぶ
- 実際にAIプログラムを開発する
Pythonの基礎知識を学ぶ

PythonでAIを独学するためには、Pythonの基礎知識が必要になります
これからPythonを学び始める方も多いと思いますが、Pythonの基礎知識を独学で学ぶなら、独学プログラマーがおすすめです
独学プログラマーの著者は実際にPythonを独学で学び、現在はエンジニアとして活躍されている方です
入門から上級技術まで、全て網羅されているので、独学プログラマーをやり込めば、Pythonの基礎知識は満たされます
AIに必要なライブラリをインストールする

PythonでAIを開発するのに必要なライブラリをインストールしていきます
AIでよく使われているライブラリは、
- Keras
- TensorFlow
- scikit-learn
になります
まずは、この3つをしっかり抑えておけば、PythonでAI開発を行うことができます
それ以外のPythonでAI開発するためのライブラリは、こちらの記事から確認してください

AIアルゴリズムを学ぶ

AIのアルゴリズムは数多く存在しています
主なアルゴリズムは、
- 分類:ニューラルネットパーク,平均化パーセプトンなど
- 回帰:線形回帰,ベイズ線形回帰,ポアソン回帰など
- クラスタリング:k-means法,混合ガウス分布など
- 次元削減:主成分分析,LDAなど
などが挙げられます
実際に、クラスタリングをPythonで実装する方法も解説しているので、そちらもご確認ください

実際にAIプログラムを開発する

Pythonの基礎を習得したら、実際にAIプログラムを開発してみましょう
開発したAIプログラムをGitHubに掲載すれば、全世界のPythonユーザーからフィードバックを受けることもできます
また、Kaggleに参加することで、AIに関する技術力を高めることもできます
Kaggleに参加できるレベルじゃない…という初心者の方でも、Kaggleには、カーネルという機能があります
カーネルには、他のユーザーがどういった処理を行なったかが説明されており、初心者にも優しく説明されています
そのため、Kaggleのレベルが高すぎてついていけない場合には、まずはカーネルを見まくるのがおすすめです
より深くAIについて学びたい場合には、プログラミングスクールで本格的に学ぶのがおすすめです
PythonとAIについての簡単な説明

AI開発といえば、Pythonが真っ先に挙げられますが、AI開発を行うことができるプログラミング言語は、他にもあります
- C++
- R
- JavaScript
- Java
- Matlab
一例ですが、上記のプログラミング言語でもAI開発を行うことができますが、PythonとAIほど、相性がいいとはいえません
では、なぜPythonとAIは相性がいいのでしょうか?
PythonにはAI開発に必要なものが揃えられている

PythonがAI開発と相性がいい理由に、PythonにはAI開発に必要なものが揃えられているからです
例えば、TensorFlowやscikit-learnはAI開発を行うためのライブラリです
また、AI開発では、AIに学習させるデータが必要になりますが、Pythonでは、学習用データも用意されているため、他のプログラミング言語に比べて、AI開発のハードルが低いです
Python自体の記述が簡単

PythonがAI開発に利用される理由の1つに、Python自体の記述が簡単であることも挙げられます
同じ処理を行うプログラムをPythonとそれ以外の言語で比べてみます
今回行う処理は、1から10までの整数を足していって、総和を出すプログラムです
まずは、Pythonで実装していきます
total = sum(range(1, 11))
print("The sum of numbers from 1 to 10 is:", total)
次にC言語で、同じ処理を行います
#include <stdio.h>
int main(void) {
// initialize the variable to store the sum
int total = 0;
// iterate through the range of numbers
for (int i = 1; i <= 10; i++) {
// add the current number to the total
total += i;
}
// print the sum
printf("The sum of numbers from 1 to 10 is: %d\n", total);
return 0;
}
最後にJavaでも同じ処理をしてみます
public class SumOfNumbers {
public static void main(String[] args) {
// initialize the variable to store the sum
int total = 0;
// iterate through the range of numbers
for (int i = 1; i <= 10; i++) {
// add the current number to the total
total += i;
}
// print the sum
System.out.println("The sum of numbers from 1 to 10 is: " + total);
}
}
3つのコードを見比べてみても、同じ処理を行うにしてもPythonが圧倒的に短い行で実装できることがわかりますね
Pythonには必要なものがまとめられている、モジュールやライブラリなどが豊富に用意されているため、簡単にプログラムを実装することができるようになっています
AIに関する基礎知識

PythonとAIの関連は、なんとなくわかったかと思います
AIと一言で言っても、機械学習やディープラーニングなどもありますが、機械学習もディープラーニングも、広義のAIになります

AIの中には機械学習もディープラーニングも含まれており、機械学習とディープラーニングがAIを構成しています
機械学習は2つある

機械学習とは、コンピュータにデータを与え、そのデータから有用な知識を抽出する技術のことです
その知識は、将来のデータに対して予測を行うことができるようになります
機械学習には、教師あり学習と教師なし学習の2つがあります
- 教師あり学習:データに対して予測したい出力値が既に与えられているため、それを学習
- 教師なし学習:出力値が与えられていないため、データの構造やパターンを探索
深層学習とは

深層学習は、人工ニューラルネットワークの枠組みを使用し、データからパターンを学習する機械学習の一種です
深層学習は、畳み込みニューラルネットワークやリカレントニューラルネットワークなど、複雑なアーキテクチャを使用して、画像認識、自然言語処理、音声認識などの様々なタスクに使用されています
自然言語処理とは

自然言語処理は、人間の言語をコンピュータが理解・処理する技術のことです
自然言語処理には、文章の解析、翻訳、文章生成、音声認識などの様々なタスクがあります
自然言語処理には、言語モデル、機械翻訳、自然言語理解、文章要約など、深層学習を使用する手法もあります
PythonでAIを実装するライブラリ

ここからは、PythonでAIを実装する際に使用するライブラリをいくつか紹介していきます
TensorFlowの使い方

TensorFlowは、Pythonで書かれたオープンソースのライブラリで、機械学習や深層学習のアルゴリズムを実装するために使用されます
以下は、TensorFlowを使ってニューラルネットワークを構築し学習する際に参考になるステップです
- TensorFlowをインストールする:
pip install tensorflow
- TensorFlowをインポートする:
import tensorflow as tf
- 入力データと出力データを定義する
- モデルを構築する: TensorFlowでは計算グラフを構築
- モデルを学習させる: 学習データを用いてパラメータを調整
- モデルを評価する: テストデータを用いて性能を評価
- モデルを使用する: 学習済みモデルを使って新しいデータに対する予測を行います
TensorFlowには、高度な機能もあり、TensorBoardを使用することで可視化、分散学習、モデルの保存や読み込みなどが可能です
Kerasの使い方

Kerasは、Pythonで書かれたオープンソースのライブラリで、ニューラルネットワークを簡単に構築・学習・評価することができます
Kerasは、TensorFlowなどのバックエンドを使用しているため、TensorFlowなどを組み合わせることで高度な機能を使うことができます
以下は、Kerasを使ってニューラルネットワークを構築し学習する際に参考になるステップです。
- Kerasをインストールする:
pip install keras
- Kerasをインポートする:
import keras
- 入力データと出力データを定義する
- モデルを構築する: Kerasではモデルをレイヤーオブジェクトで構築
- コンパイルし学習させる: モデルに学習アルゴリズム、損失関数、評価関数を選択し、学習データを用いてパラメータを調整
- モデルを評価する: テストデータを用いて性能を評価
- モデルを使用する: 学習済みモデルを使って新しいデータに対する予測を行います
Kerasは、簡単なAPIで構築ができるため、初心者にもおすすめのライブラリです
また、Kerasには多くのアーキテクチャのネットワークが実装されているので、それを組み合わせることで高度なモデルを構築することができます
scikit-learnの使い方

scikit-learnは、Pythonで書かれたオープンソースのライブラリで、機械学習に必要なアルゴリズムを簡単に実装することができます
以下は、scikit-learnを使って機械学習モデルを構築し学習する際に参考になるステップです
- scikit-learnをインストールする:
pip install scikit-learn
- scikit-learnをインポートする:
import sklearn
- データを読み込む: CSVなどの形式でデータを読み込み、変数に格納
- 前処理をする: データをクリーニングし、標準化や正規化などの前処理を行います
- 学習データとテストデータに分割する: データを学習データとテストデータに分割
- モデルを選択し、インスタンスを作成する: scikit-learnには多くの機械学習アルゴリズムが実装されています
- モデルに学習データを適用して学習させる:
.fit()
methodを使用 - テストデータを用いて性能を評価する:
.score()
method や.predict()
method を使用 - ハイパーパラメータをチューニングする: 交差検証などを用いて最適なパラメータを決定します
- 学習済みモデルを使用する:新しいデータに対する予測を行います
scikit-learnは、易しいAPIと文脈にあったデータの準備を提供するため、機械学習初学者にもおすすめのライブラリです
また、scikit-learnには多くのアルゴリズムが実装されているので、それを組み合わせることで高度なモデルを構築することができます
scikit-learnはさらに、評価指標や交差検証などのツールも提供しており、モデルの性能の評価や選択に役立ちます
また、scikit-learnは他のライブラリやツールとの統合も容易であり、TensorFlowやKerasと組み合わせることで更に強力な機能を持つモデルを構築することができます。
AIモデルを構築する

次に、AIモデルを構築する方法について解説をしていきます
今回は、よく開発されている画像分類・自然言語処理・強化学習のモデル構築方法について解説していきます
画像分類のモデル構築方法

画像分類の AI モデルを構築するには、次のような手順を踏むことが一般的です。
- 画像データセットの準備: 画像分類のモデルを構築するためには、大量の画像データが必要です。画像データセットは、事前にラベル付けを行っておく必要があります
- 画像の前処理: 画像データは、通常は画像サイズを統一し、正規化などの前処理を行います
- 畳み込みニューラルネットワーク (CNN) のアーキテクチャの選択: 画像分類のタスクには、VGG, ResNet, Inceptionなどの様々なCNNのアーキテクチャがあります
- モデルのトレーニング: トレーニングデータを使用して、CNNをトレーニングします
- モデルの評価: テストデータを使用して、トレーニングしたモデルの精度を評価します
- ハイパーパラメータのチューニング: 精度を向上させるために、ハイパーパラメータをチューニングします
- 適用: トレーニングされたモデルを使用して、新しい画像の分類タスクを行います
注意点としては、データの欠損、過学習、過剰なパラメータなどがあります
データのアンダーサンプリングやデータ拡張、Dropoutなどの正則化手法を使用することで、過学習を防ぐことができます
自然言語処理のモデル構築方法

自然言語処理の AI モデルを構築するには、次のような手順を踏むことが一般的です
- 文章データセットの準備: 自然言語処理のモデルを構築するためには、大量の文章データが必要です。文章データセットは、事前にラベル付けを行っておく必要があります
- 文章の前処理: 文章データは、通常は整形、トークン化、ステミングなどの前処理を行います
- 言語モデルのアーキテクチャの選択: 自然言語処理には、LSTM, Transformer, BERTなどの様々な言語モデルのアーキテクチャがあります
- モデルのトレーニング: トレーニングデータを使用して、言語モデルをトレーニングします
- モデルの評価: テストデータを使用して、トレーニングしたモデルの精度を評価します
- ハイパーパラメータのチューニング: 精度を向上させるために、ハイパーパラメータをチューニングします
- 適用: トレーニングされたモデルを使用して、新しい文章の処理タスクを行います
自然言語処理に特有のトピックとして、単語の埋め込みによる表現学習があり、学習された埋め込みを使ってニューラルネットワークに入力します
強化学習のモデル構築方法

最後に、強化学習の AI モデルを構築する手順です
- 環境の準備: 強化学習においては、エージェントが学習する環境が必要です。環境は、シミュレーションや実機などがあります
- エージェントのアーキテクチャの選択: 強化学習には、Q学習、SARSA、DQN、A3Cなどの様々なエージェントのアーキテクチャがあります
- モデルのトレーニング: エージェントが環境中での行動を選択し、獲得した報酬に応じて学習を行います
- モデルの評価: トレーニングしたモデルが、未知の環境でも有効かどうかを評価します
- ハイパーパラメータのチューニング: 精度を向上させるために、ハイパーパラメータをチューニングします
- 適用: トレーニングされたモデルを使用して、新しい環境での強化学習タスクを行います
強化学習に特有のトピックとして、強化学習は、環境とのやり取りを繰り返しながら学習しますので、経験回数が多いほど学習が進み、環境に適応します
また、環境によっては、十分な経験が得られない場合があり、その場合は、シミュレーション環境や、学習経験の共有などの工夫が必要になります
PythonでAIを独学で実装する

最後に、AIを使ったサンプルコードを紹介していきます
今回のサンプルコードは、Twitterの指定したツイートについたリプライに対して、自動で返事をするというものです
今回紹介した自然言語処理に近い内容になっています
使用するライブラリは、ChatGPTで大馴染みの、GPT3を使用していきます
Twitter APIを取得する

PythonでTwitterを操作するには、Twitter APIを取得しておく必要があります
Twitter APIを取得するためにha、デブロッパーサイトで必要事項を入力していく必要があります
詳細は、こちらの記事で解説をしているので、参考にしてください
>>>PythonでTwitter APIを取得する方法【全18枚の図解+例文あり】
OpenAI APIを取得する

Twitter API取得と合わせて、OpenAIのAPIも取得します
まずは、OpenAIのサイトに飛びます

右上にある「API」をクリック

ログインをしていきます

Googleアカウントでもログインできるので、Googleアカウントをお持ちの方は、Googleアカウントでログインするのが楽です

右上に「personal」と書かれている場所があるので、クリック後、「view API keys」をクリックします

上記にページに遷移したら、「Create new secret key」をクリックすれば、OpenAIのAPI Keyを生成することができます
実際にサンプルコードを元にAIプログラムを実装していく

import tweepy
import openai
import schedule
import time
#****には、自身のAPIキーを入力
CONSUMER_KEY = '****'
CONSUMER_SECRET = '****'
ACCESS_TOKEN = '****'
ACCESS_SECRET = '****'
auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
auth.set_access_token(ACCESS_TOKEN, ACCESS_SECRET)
api = tweepy.API(auth)
#****には自身のAPIキーを入力
openai.api_key="****"
model ="text-davinci-003"
#自動返信をしたいツイートのツイートIDを入力
#「""」は必要なし
tweet_id =****
finish_list=[]
def gpt3_reply():
mentions=tweepy.Cursor(api.mentions_timeline).items(10)
for mention in mentions:
if mention.in_reply_to_status_id == tweet_id:
if mention.id in finish_list:
pass
else:
prompt= mention.text
completions = openai.Completion.Create(
model=model,
prompt=prompt,
max_tokens=1024,
n=1,
stop=None,
temperture=0.5,
)
message = completions.choices[0].text
if len(message)<140:
api.update_status(status='@'+mention.user.screen_name+message, in_reply_to_status_id=mention.id)
finish_list.append(mention.id)
else:
pass
return finish_list
#定期実行
schedule.every(1).minutes.do(gpt3_reply)
while True:
schedule.run_pending()
time.sleep(6)
Twitter IDの検索方法は、自動返信したいツイートのURLに記載されています
ツイートを表示後、URLバーを見ると、下の画像のようにやたらと長い数字が出てきます
この数字が、ツイートIDになるので、サンプルコードにコピペします


これで準備は終了です
お使いの環境で実行できなかった場合には、google colaboratoryやJupyterなどでも試してみてください
まとめ

この記事では、Python初心者がAIを独学で学ぶ方法をサンプルコード付きで解説を行いました
独学プログラマーの中でも紹介されていましたが、知識を詰め込むだけではなく、手を動かせと言っています
ぜひ今回のサンプルコードを参考に、AI学習の第一歩を踏み出してください
より深くAIについて学びたい場合には、プログラミングスクールで本格的に学ぶのがおすすめです