いつかAI(人工知能)を使ったプログラミングがしたくて、プログラミングの勉強を始めた方も多いですよね。けれども基礎勉強ばかりでAI(人工知能)には全然たどり着けそうもない、AI(人工知能)の自作なんてまだまだ程遠いと感じる人もいるでしょう。
確かにAI(人工知能)の自作ができればプログラミングのやる気もグッと上がります。そんな時に改めてAI(人工知能)の仕組みや作り方についてについて詳しく知ると、AI(人工知能)に対する認識も「なんとなく難しそう」から「案外簡単だね!」と変わります。そうすると、AI(人工知能)を自作したくなるかもしれません。この記事を通して、ぜひこれまでのプログラミングの基礎勉強からAI(人工知能)が自作できるレベルまでへ一気にステップアップしましょう!
そんなわけで今回は、AI(人工知能)を活用したプログラミングの方法を解説します。
AI(人工知能)を自作するのに必要なもの
AI(人工知能)は画像認識とともに進化を遂げたといっても過言ではありません。そこで、画像を自動で分類するAI(人工知能)を作りましょう。画像の分類方法には色々な方法がありますが、今回は初心者でも非常にわかりやすい「自己組織化マップ」という手法を採用します。
AI(人工知能)を自作するのに必要なものはプログラミング言語のPythonと数学ライブラリのnumpyとグラフ描画ライブラリのmatplotlib、あとは認識させるための大量の画像です。AI(人工知能)は学習過程でたくさんの計算を行うため、numpyが必要です。また、学習結果の確認のためmatplotlibを利用します。たったこれだけあれば自己組織化マップは作れす。
そして同じ要領で「pip install matplotlib」でmatplotolibをインストールしましょう。Pythonにグラフ描画機能が追加されます。
これで準備はできました。次からは実際にAI(人工知能)を作ります。
AI(人工知能)自作ステップ1:データを集める
AI(人工知能)に学習させるためには、大量のデータが必要です。学習用の画像が多ければ多いほど学習の精度は上がるので、最低でも画像認識の学習には数百枚、できれば数千枚の画像がほしいところ。
企業であれば、大量の業務データがありますし、莫大な資金で他社から写真を買ったり、数万枚の写真を用意することもきます。しかし、個人で大量のデータを集めるとなると一苦労ですよね。そこで今回はAI(人工知能)についての理解を深めることができ、さらに個人でも用意が可能な「最も簡単な画像」を用意します。
データセットを配布しているおすすめサイト
個人でAI(人工知能)作成をするにあたって、大きな悩みどころとなるのがデータを集めることですよね。一般的には、インターネット上から自動的にデータをダウンロードするスクレイピングという技術で大量のデータを収集するのが主流です。
しかし、今回はより簡便にデータを収集する方法として、データセットを利用しましょう。オススメのサイトの1つがMegaFaceです。このサイトではなんと70万人分もの顔写真が公開されています。顔認識用のAI(人工知能)を作るのにも十分な枚数です。
もう1つオススメなのはIMAGE NETです。こちらのサイトには1,400万枚以上のデータセットが用意されており、データセットを検索することができます。海外のサイトなので英単語での検索になりますが、検索バーに単語を入力するだけで検索できるので英語力に自信のない方でも気軽に利用できます。
このようなデータセットの配布サイトは他にもたくさんあるので、用途に応じたサイトを活用しましょう。
AI(人工知能)自作ステップ2:学習済みのモデルを作ろう
それでは、実際に学習済みのモデルを作りましょう。今回作るのは、自己組織化マップという手法でカラー単色の画像を自動分類するAI(人工知能)です。
以下のコードを実行してください。
############## SOM_test.py ###################
import numpy as np
import matplotlib.pyplot as pltNx = 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:
passfor time in range(learntime):
ColorVec = np.random.rand(3)
som(ColorVec)print(“imgshow”)
im = plt.imshow(weight,interpolation=’none’)
plt.show()
############################################
この結果を入力すると、新しいウィンドウになにやらグラデーションが表示されます。このグラデーションの1つ1つのマスが学習済みの結果で、今回はこのマスをニューロンと呼びます。
それではコードの動作を説明しましょう。まずランダムな色を持つ25*25個(=625個)のベクトルを用意します。これが、色の分類を学習させるニューロンです。色はRGBの3つの値で表現でき、色は3次元ベクトルであると言えます。
そこに学習データとして色データを1つ入れ、625個のニューロン1つ1つと学習データの距離を計算します。このうち、最も距離の小さいニューロンと、このニューロン周辺のニューロンを学習データに近づけます。この処理を行なっているのが関数som()です。
このようにして用意したニューロンを少しずつ学習データに合わせて変更していくと、徐々にニューロンがグラデーションつまり似た色同士が隣り合うようになるでしょう。
この似た色同士が隣り合っている状態は、色を自動で分類するための学習済み状態と言えます。学習済みのニューロンと新しいデータの距離を計算すると、その色は赤なのか青なのか黄色なのか自動で判断できます。
AI(人工知能)自作ステップ3:サービスに組み込んで使えるようにしよう
もちろん初心者のうちは勉強の一つとして、一つ一つの計算を作るのも手です。しかしAI(人工知能)をサービスに組み込むに当たって、プログラムコードのように1つ1つの計算を自作するのは現実的ではありません。
つまり、すでに一般に公開されている機械学習ライブラリを活用します。ライブラリとはプログラミング言語の拡張キットのようなもので、標準では用意されていない関数を利用することができます。ライブラリを利用すると、内部でどのような計算が実行されているかを気にする必要がなくなるのも大きなメリットです。
このようにそれぞれのライブラリごとに得意分野があるので、目標に合わせてこれらのライブラリを選択して活用することが、AI(人工知能)をサービスに活用することの第一歩です。
AI(人工知能)自作で大事なこととは
AI(人工知能)自作で大事なことは、AI(人工知能)が学習するプロセスの理解と自作アイデアです。
自己組織化マップを例にとると、ニューロンを用意し、学習データに近いニューロンとその周辺のニューロンを更新することで学習が進みました。このようなイメージを持つことがプロセスの理解として大事なことです。またAI(人工知能)の学習プロセスは数学的なところまで落とし込んだ理解をするのが理想ですが、初めのうちはぼんやりとした理解でも良いでしょう。
また、AI(人工知能)の開発で必要な学習手法はライブラリとしてまとめられています。ライブラリは入力から出力までの計算処理がまとめられ、処理内容を知ることなく入力に対する出力を得られるようにしたものです。これにより機械学習の複雑な学習過程の細部まで知ることなく活用できるでしょう。
他の人に出せないようなアイディアを出せたら驚かれるようなプログラムができ上がるかもしれません。ぜひ革新的なアイデアでAI(人工知能)を活用し、世の中をあっと言わせるプログラマーを目指しましょう!
さて、今回はAI(人工知能)を活用したプログラミングの方法について解説しました。
内容を以下にまとめます。
- AI(人工知能)を作るためにPythonとnumpy, matplotlibが必要
- データ集めの方法として、自分で画像を作るという方法もある
- データセット収集のためのサイトとして、「MegaFace」「Image net」がある
- 自己組織化マップでは、ニューロンと学習データの距離に応じて学習が進む
- AI(人工知能)をサービスに組み込むためには、機械学習ライブラリを活用しよう
- AI(人工知能)自作にあたり重要なのは学習プロセスの理解と自作アイデア
今まで手を出せなかったAI(人工知能)が少し身近に感じられたことでしょう。AI(人工知能)を使ったプログラムが本格的に作れるようになると、業務自動化による改善プログラム作成など様々な場面で活躍できます。ぜひAI(人工知能)自作を始めましょう!
【お知らせ】
当メディア(AIZINE)を運営しているAI(人工知能)/DX(デジタルトランスフォーメーション)開発会社お多福ラボでは「福をふりまく」をミッションに、スピード、提案内容、価格、全てにおいて期待を上回り、徹底的な顧客志向で小規模から大規模ソリューションまで幅広く対応しています。
御社の悩みを強みに変える仕組みづくりのお手伝いを致しますので、ぜひご相談ください。