テクノロジー

AIは自作できる!プログラミング初心者のための人工知能の作り方

AIは自作できる!プログラミング初心者のための人工知能の作り方

いつかAI(人工知能)を使ったプログラミングがしたくて、プログラミングの勉強を始めた方も多いですよね。けれども基礎勉強ばかりでAI(人工知能)には全然たどり着けそうもない、AI(人工知能)の自作なんてまだまだ程遠いと感じる人もいるでしょう。

確かにAI(人工知能)の自作ができればプログラミングのやる気もグッと上がります。そんな時に改めてAI(人工知能)の仕組みや作り方についてについて詳しく知ると、AI(人工知能)に対する認識も「なんとなく難しそう」から「案外簡単だね!」と変わります。そうすると、AI(人工知能)を自作したくなるかもしれません。この記事を通して、ぜひこれまでのプログラミングの基礎勉強からAI(人工知能)が自作できるレベルまでへ一気にステップアップしましょう!

そんなわけで今回は、AI(人工知能)を活用したプログラミングの方法を解説します。

AI(人工知能)を自作するのに必要なもの

記憶のイメージ
AI(人工知能)は画像認識とともに進化を遂げたといっても過言ではありません。そこで、画像を自動で分類するAI(人工知能)を作りましょう。画像の分類方法には色々な方法がありますが、今回は初心者でも非常にわかりやすい「自己組織化マップ」という手法を採用します。

自己組織化マップとは、ヒトの記憶のメカニズムを模した手法です。例えばヒトが犬を見たとき、脳内にたくさんあるニューロンという神経細胞の内、犬と結びついたニューロンが反応することで見たものが犬であると認識します。自己組織化マップでは、このニューロンを再現し、学習データを使ってニューロンを学習します。

AI(人工知能)を自作するのに必要なものはプログラミング言語のPythonと数学ライブラリのnumpyとグラフ描画ライブラリのmatplotlib、あとは認識させるための大量の画像です。AI(人工知能)は学習過程でたくさんの計算を行うため、numpyが必要です。また、学習結果の確認のためmatplotlibを利用します。たったこれだけあれば自己組織化マップは作れす。

まずはPythonをインストール済みのPCにてnumpyをインストールしましょう。Pythonを使えば、複雑な計算が可能になります。インストール方法はコマンドプロンプトにて「pip install numpy」と入力し、実行するだけです。

そして同じ要領で「pip install matplotlib」でmatplotolibをインストールしましょう。Pythonにグラフ描画機能が追加されます。

これで準備はできました。次からは実際にAI(人工知能)を作ります。

AI(人工知能)自作ステップ1:データを集める

データのイメージ
AI(人工知能)に学習させるためには、大量のデータが必要です。学習用の画像が多ければ多いほど学習の精度は上がるので、最低でも画像認識の学習には数百枚、できれば数千枚の画像がほしいところ。

企業であれば、大量の業務データがありますし、莫大な資金で他社から写真を買ったり、数万枚の写真を用意することもきます。しかし、個人で大量のデータを集めるとなると一苦労ですよね。そこで今回はAI(人工知能)についての理解を深めることができ、さらに個人でも用意が可能な「最も簡単な画像」を用意します。

最も簡単な画像とはどんなものかというと、単色塗りつぶしの画像です。とはいえさすがにモノクロでは味気ないので、今回はカラーの単色画像を使いましょう。これならわざわざデータを集めなくても自分で作ることができます。色は例えば(50、10、180)のように赤・緑・青に対応する数字を3つ決めるだけでどんな色でも表現できるからです。

データセットを配布しているおすすめサイト

顔写真のイメージ

個人でAI(人工知能)作成をするにあたって、大きな悩みどころとなるのがデータを集めることですよね。一般的には、インターネット上から自動的にデータをダウンロードするスクレイピングという技術で大量のデータを収集するのが主流です。

しかし、今回はより簡便にデータを収集する方法として、データセットを利用しましょう。オススメのサイトの1つがMegaFaceです。このサイトではなんと70万人分もの顔写真が公開されています。顔認識用のAI(人工知能)を作るのにも十分な枚数です。

もう1つオススメなのはIMAGE NETです。こちらのサイトには1,400万枚以上のデータセットが用意されており、データセットを検索することができます。海外のサイトなので英単語での検索になりますが、検索バーに単語を入力するだけで検索できるので英語力に自信のない方でも気軽に利用できます。

このようなデータセットの配布サイトは他にもたくさんあるので、用途に応じたサイトを活用しましょう。

AI(人工知能)自作ステップ2:学習済みのモデルを作ろう

計算のイメージ
それでは、実際に学習済みのモデルを作りましょう。今回作るのは、自己組織化マップという手法でカラー単色の画像を自動分類するAI(人工知能)です。

以下のコードを実行してください。

############## SOM_test.py ###################

import numpy as np
import matplotlib.pyplot as plt

Nx = 25
Ny = 25
learntime = 30000
alpha = 0.08
weight = np.random.random([Nx,Ny,3])

def som(ColorVec):
min_index = np.argmin(((weight-ColorVec)**2).sum(axis=2))
mini = int(min_index / Ny)
minj = int(min_index % Ny)
for i in range(-2,3):
for j in range(-2,3):
try:
weight[mini+i,minj+j] += alpha * (ColorVec – weight[mini+i,minj+j])
except:
pass

for time in range(learntime):
ColorVec = np.random.rand(3)
som(ColorVec)

print(“imgshow”)
im = plt.imshow(weight,interpolation=’none’)
plt.show()
############################################

参考:【Python】自己組織化マップ(SOM)の説明とPythonコード

この結果を入力すると、新しいウィンドウになにやらグラデーションが表示されます。このグラデーションの1つ1つのマスが学習済みの結果で、今回はこのマスをニューロンと呼びます。

それではコードの動作を説明しましょう。まずランダムな色を持つ25*25個(=625個)のベクトルを用意します。これが、色の分類を学習させるニューロンです。色はRGBの3つの値で表現でき、色は3次元ベクトルであると言えます。

そこに学習データとして色データを1つ入れ、625個のニューロン1つ1つと学習データの距離を計算します。このうち、最も距離の小さいニューロンと、このニューロン周辺のニューロンを学習データに近づけます。この処理を行なっているのが関数som()です。

このようにして用意したニューロンを少しずつ学習データに合わせて変更していくと、徐々にニューロンがグラデーションつまり似た色同士が隣り合うようになるでしょう。

この似た色同士が隣り合っている状態は、色を自動で分類するための学習済み状態と言えます。学習済みのニューロンと新しいデータの距離を計算すると、その色は赤なのか青なのか黄色なのか自動で判断できます。

そうして実行したコードを1行1行丁寧に読み解くと、AI(人工知能)の割には簡単な計算しか行っていないことに気付くでしょう。つまりAI(人工知能)は案外簡単な計算で実装されているので、根気よくコードを理解しましょう。

 AI(人工知能)自作ステップ3:サービスに組み込んで使えるようにしよう

ライブラリのイメージ

もちろん初心者のうちは勉強の一つとして、一つ一つの計算を作るのも手です。しかしAI(人工知能)をサービスに組み込むに当たって、プログラムコードのように1つ1つの計算を自作するのは現実的ではありません。

つまり、すでに一般に公開されている機械学習ライブラリを活用します。ライブラリとはプログラミング言語の拡張キットのようなもので、標準では用意されていない関数を利用することができます。ライブラリを利用すると、内部でどのような計算が実行されているかを気にする必要がなくなるのも大きなメリットです。

AI(人工知能)で最も勢いのあるプログラミング言語であるPythonの内、有名な機械学習ライブラリとして、Scikit-learn, Tensorflow, chainerがあります。統計学、パターン認識、データ解析が得意なScikit-learn、ディープラーニング最先端を行くTensorflow、直感的にわかりやすく幅広い機械学習に対応したchainerといった特徴があります。

このようにそれぞれのライブラリごとに得意分野があるので、目標に合わせてこれらのライブラリを選択して活用することが、AI(人工知能)をサービスに活用することの第一歩です。

AI(人工知能)自作で大事なこととは

アイディアのイメージ
AI(人工知能)自作で大事なことは、AI(人工知能)が学習するプロセスの理解と自作アイデアです。

自己組織化マップを例にとると、ニューロンを用意し、学習データに近いニューロンとその周辺のニューロンを更新することで学習が進みました。このようなイメージを持つことがプロセスの理解として大事なことです。またAI(人工知能)の学習プロセスは数学的なところまで落とし込んだ理解をするのが理想ですが、初めのうちはぼんやりとした理解でも良いでしょう。

また、AI(人工知能)の開発で必要な学習手法はライブラリとしてまとめられています。ライブラリは入力から出力までの計算処理がまとめられ、処理内容を知ることなく入力に対する出力を得られるようにしたものです。これにより機械学習の複雑な学習過程の細部まで知ることなく活用できるでしょう。

それよりも難しいのが自作アイデアで、AI(人工知能)の活用は企業でも様々検討されていますが、なかなか新しいアイデアが出てこないのが実情です。例えば、虫の画像を学習し、スマホのカメラで撮れば虫の名前がわかるアプリなど、柔軟な発想でアイデアを出しましょう。

他の人に出せないようなアイディアを出せたら驚かれるようなプログラムができ上がるかもしれません。ぜひ革新的なアイデアでAI(人工知能)を活用し、世の中をあっと言わせるプログラマーを目指しましょう!

まとめ
さて、今回はAI(人工知能)を活用したプログラミングの方法について解説しました。
内容を以下にまとめます。

  • AI(人工知能)を作るためにPythonとnumpy, matplotlibが必要
  • データ集めの方法として、自分で画像を作るという方法もある
  • データセット収集のためのサイトとして、「MegaFace」「Image net」がある
  • 自己組織化マップでは、ニューロンと学習データの距離に応じて学習が進む
  • AI(人工知能)をサービスに組み込むためには、機械学習ライブラリを活用しよう
  • AI(人工知能)自作にあたり重要なのは学習プロセスの理解と自作アイデア

今まで手を出せなかったAI(人工知能)が少し身近に感じられたことでしょう。AI(人工知能)を使ったプログラムが本格的に作れるようになると、業務自動化による改善プログラム作成など様々な場面で活躍できます。ぜひAI(人工知能)自作を始めましょう!

トップへ戻る
タイトルとURLをコピーしました