プログラミング

2019/06/03

初心者から経験者まで「AIの作り方」を徹底解説

初心者から経験者まで「AIの作り方」を徹底解説

機械学習や深層学習(ディープラーニング)技術を利用した製品が登場したり、ビジネスでの活用が模索されるなかAIという存在が世の中にだいぶ浸透してきました。技術者や分析職でAIに関心がまったくないという方はほとんどいないのではないでしょうか。

しかし、AIの作り方や開発方法となると多くの方が知らないと思います。AIという言葉だけでも難しいイメージがありますし、人工知能は大学の研究者や先端企業が取り組む難解なテーマでもあります。

そのため、個人開発でAIを作るってかなり大変じゃないの?と考える方も多いのではないでしょうか。確かに、まったくの初心者にとってプログラムは大変かもしれませんが、その手前の簡単なAIを試しに動かしてみることはそれほど難しくありません。

この記事では、「自分でAIを作ってみたい」というあなたのために、ごくごく初歩的な内容から、プログラミング経験者やITエンジニア・プログラマー向けの内容まで、AIの作り方についてまとめていきます。

【基礎】初心者でもAIを作ることはできる?

プログラミングや開発経験のない方が、「AIを作ってみたい」と初めて思ったとき、何から始めればよいでしょうか。まずは、何も知らない初心者や未経験者がAIを作れるかどうかについて考えてみましょう。

初心者でもAIを作ることができるかどうかでいえば、AIを動かしてみることはできます。ただし、研究者やAIベンチャーなどが開発しているような本格的なAIをゼロから作ることは難しいといえます。また、後で解説する初心者向けの簡単なAIにしても、システムやWebサービスを利用して作成していきます。そのため、AIを作るために最低限のITリテラシーは必要となります。

オリジナルのAIは初心者にはハードルが高い

AIを作る際、完全オリジナルのAIを一からすべて自分で構築していくやり方は非常に難しいです。最先端のAI技術を駆使して作られたプロダクトは、通常何人ものエンジニアが集まってプロジェクト単位で作ります。初心者がひとりで開発する場合には、もっと簡単なAIの作り方を採用すべきです。

初心者がAIを作る方法

初心者がAIを作る現実的な方法としては、「無料ツール」「API」「フレームワーク」を利用して開発する方法がおすすめです。この3つの方法のうち、最も簡単なのは無料ツールやWebサービスを使ってAIを作ることです。APIやフレームワークを利用するためには、プログラミングやIT開発のスキルが必要です。

無料ツールの例として、SONYが無料でリリースしている「Neural Network Console」があります。これは、完全ノンプログラミングで深層学習(ディープラーニング)を行うことができるツールです。そのほか、チャットボットを作成するWebサービスなど画面のインターフェース上から操作するだけで、AIを作れるような無料サービスが沢山あります。

ITエンジニアやWeb開発の経験があるけれど、AI開発は初めてという場合は、APIやフレームワークを利用することで手軽に機械学習や深層学習を利用したAI作成に挑戦することができます。AI開発に利用できるAPIの例としては、チャットボットや音声UIなど自然言語処理に関する無料サービス「Wit.ai」などがあります。

また、学習モデル・アルゴリズムなど、AI開発で必要になる一般的な機能をまとめたフレームワーク・ライブラリを使ってAIを作る方法もあります。フレームワークの例としては、Pythonで深層学習のプログラムを作成するときによく使われる「PyTorch」、機械学習の分野でよく使用される「TensorFlow」などがあります。

これらの方法でAIの開発を進めることで個人でも比較的簡単にAIを作ることは可能です。

機械学習にはどの程度のプログラミングスキルが必要?

次に、機械学習でのAIの作り方についてみていきましょう。AIを開発するうえでは機械学習を使いこなす必要があります。それでは、機械学習にはどの程度のプログラミングスキルが必要になるのでしょうか。一般的によく利用されているPythonとSQLというふたつのプログラミング言語を例にとって、具体的に見ていきましょう。

機械学習にはどの程度のプログラミングスキルが必要?

Python

機械学習に必須のスキルに、Pythonでのプログラミングがあります。機械学習は大量のデータをAIに学習させる技術のため、Pythonでのデータ処理計算や統計処理を行います。他の言語と比べライブラリが豊富なため、プログラミング言語の中でも特にAI開発で利用されています。ちなみに、FacebookやGoogleでも採用されている言語です。

Pythonは、初心者がこれからプログラミングを覚える際にも使いやすい言語です。少ないコード量でプログラムが組め、シンプルなコードで読みやすいといった特徴をそなえています。そのため、よく名前をきく「C言語」や「Java」などの言語よりも、習得の難易度が低いと言われています。

どのような学習の方法で学ぶかや、作りたいAIの種類によりPythonの習得に必要な期間は異なります。参考までに、Webシステムをひとりで開発できるレベルになるのに必要な勉強時間の目安は、およそ300から400時間かかるといわれています。毎日3から4時間を勉強にあてたとして、3ヶ月間程度の期間となります。

SQL

データベースに関するプログラミング言語SQLも機械学習に必須のスキルです。SQLを覚えるとデータベースの定義や操作を行うことができます。AIに与える学習データを用意するためには、前処理と呼ばれるデータを構造化し、抽出・加工する作業があります。データの前処理は、AI開発の8割を占めるとも言われているとても重要な作業です。そのため、SQLとあわせデータベースに関する知識もAIを作る際に必須といえるでしょう。SQLは、どのデータベースであっても同じ構文で操作可能なため、Python以外のJavaやC++、Rubyなど他のどのプログラミング言語とも組み合わせて利用可能です。

AIをシステムに実装したり公開するには?

個人開発でAIが作れたとして、作ったAIをWebサービスやスマホアプリとして公開するためにはどのような技術が必要でしょうか。ここでは、フロントエンド・バックエンド・アプリというシステム開発の側面から確認していきましょう。

フロントエンド技術

Webサービスを公開するためには、フロントエンドの技術が必要です。IT/Webでのシステム開発のうち、ユーザーの目に見える箇所に使われる技術がフロントエンド技術です。具体的には、WebサイトやITシステムのUI(ユーザーインターフェース)などを指します。そのほか、音声認識の技術もフロントエンドに含まれます。

フロントエンドは、Web系サービスであれば、HTMLやCSS、JavaScriptなどのプログラミング言語を用いて開発を行います。また、富士通が提供している無料サービス「K5 Playground」などでもフロントエンドの開発が可能です。

バックエンド技術

AIを使ったWebサービスや業務システムなどを開発する際には、バックエンド(サーバーサイド)に関する技術も必要です。ユーザーが入力した内容やデータを元に、結果を出力したり、記録したりなどの処理をバックエンド技術で行います。

たとえば、フロントエンドで認識した音声を処理するのはバックエンドの役割です。バックエンドエンジニアは、システムの要件定義から設計・開発・運用などを行います。プログラミング言語としては、先ほど紹介したPythonやSQLがバックエンドの範囲に含まれる言語です。

スマートフォンアプリ開発の技術

チャットボットなどのAIと会話ができるアプリ、AIがスケジュール管理をしてくれるアプリなど、スマートフォンアプリにもAIの技術が取り入れられたものが出てきています。個人開発で、スマートフォンアプリにAIを実装させたいという場合、スマートフォンアプリを開発する技術も必要になります。

プログラミング言語でいうと、iOSの場合はSwift、Androidの場合は、Java、Kotlinなどが有名です。

【実践1】初心者向けAIの作り方

【実践1】初心者向けAIの作り方

AIの作り方の概要がわかったところで、初心者がAIを作る方法をもう少し詳しく見ていきましょう。

AIを作れる無料ツールの紹介

簡単なAIを作るためには、IT企業が公開しているツールやサービスを使うのが最も手軽です。初心者が一番初めにAI作りに挑戦する場合、まずはこの無料ツールを利用する方法からやってみるのがおすすめです。

簡単な対話型AIの作成に挑戦してみよう

簡単なAIを動かしてみるときに、既存のAPIを利用した対話型AIの作成がおすすめです。よく利用されるAPIとして、NTTドコモが公開している「自然対話API」を利用する方法があります。APIを使うことで、数学や機械学習の知識が必要になるアルゴリズム部分を自力で作ること無く、対話システムを作ることができます。

もうひとつ、リクルートが無料で公開している日常会話応答機能を提供しているAPI「Talk API」を使っても簡単な対話型AIを制作可能です。これらの無料APIを利用して、まずは一度簡単な対話AIを作ってみるとよいでしょう。

次のステップに必要なこと

上で紹介した無料ツールを使った簡単な対話AI制作をやってみたら、次はもう少しレベルの高いAIを作ってみたくなるはずです。それでは、AI制作の次のステップに進むためには、どのような学習が必要かを書いていきます。

Pythonを学び、プログラミングを覚える

AI開発に必須のプログラミング言語といえば、Pythonです。まずは、Pythonの基本構文やコードの書き方を覚え、プログラミングができるようになることを目指してみましょう。Pythonには、FlaskやDjangoといったWeb開発に使えるフレームワークも揃っています。そのため、Pythonを覚えると機械学習だけでなく、Webアプリケーションも開発できるようになります。

JavaやC#、Ruby、PHPなど他の言語を使用したことがあるエンジニア・プログラマーであれば、Pythonの習得は容易でしょう。TensorFlowやKeras、Chainerなどの機械学習のライブラリを活用できるようになると、AI開発のひとつ上のステップに進んでいくことができます。

機械学習・ディープラーニングを学ぶ

本格的なAIを作るためには、機械学習やディープラーニングについて学ぶ必要があります。機械学習とは、その名の通りAIにデータを与え、反復学習させるという概念です。AIは様々なデータを学習することで、特徴やパターンを発見し、別のデータの分析や予測を行えるようになります。ディープラーニングは、機械学習をさらに発展させた技術です。

機械学習(Machine Learning)

機械学習はアルゴリズムの考え方により、「教師あり学習」「教師なし学習」「強化学習」の3つに分類することができます。

教師あり学習

教師あり学習は、入力データとそのデータの正解を与えることによって、入力と出力の関係を学習させるアルゴリズムです。

教師なし学習

教師なし学習は、正解データなしの入力データを与え、プログラムが自らデータから特徴を見つけ出し、そのデータの構造や特性などを学習するアルゴリズムです。

強化学習

強化学習は、プログラムが与えられた環境から自ら情報を取得し、報酬が最も多く得られる選択肢を学習していくアルゴリズムです。

深層学習(Deep Learning)

機械学習と深層学習(ディープラーニング)には、どのような違いがあるのでしょうか。簡単に言うと、機械学習の方がディープラーニングよりも大きな概念であり、ディープラーニングは機械学習の一部です。もう少し詳しく説明しておくと、ディープラーニングは人間の神経細胞を模したニューラルネットワークのシステムから発展しており、音声や画像の認識、予測など人間が行うような複雑なタスクをAIに学習させ、実行できるようにするための手法です。

AIを開発できるようになるためには、AIを動かす機械学習やディープラーニングを理解し、それを実現するための知識を勉強することが必要です。

統計・数学を勉強する

機械学習やディープラーニングなどAI開発に必要な知識を学ぶためには、数学の素養や統計学に関する知識が必要です。これらについてもあわせて学習するとよいでしょう。

必要になる分野としては、

  • 線形代数
  • 微分積分
  • 統計

という3つの分野が主です。

線形代数は代数学の一分野で、行列の性質や扱い方に関する学問です。微分積分は高校数学でも学ぶ内容なので、名前ぐらいは聞いたことがあるのではないでしょうか。統計学はその名の通り、統計に関する学問で、数学の知識を使ってデータの中から性質や規則性を見つけ出す学問です。

機械学習の前提となっているこれらの数学理論については、細かいことまで理解している必要はありませんが、基本的な部分については学習しておく必要があります。

おすすめの書籍・本

未経験からAI作りの次のステップに進むための学習をする際に、おすすめできる書籍を紹介しておきます。

プログラミング初心者やPythonの基本を学びたい人はまずはソーテック社の『詳細! Python 3 入門ノート』から始めることをおすすめします。データ解析や機械学習にも触れており、AI開発のためにPythonを学び始めたいというニーズにマッチしたPython3の入門書です。

その先の機械学習プログラミングを学ぶための教材としては、オライリージャパンの『Pythonではじめる機械学習 ―scikit-learnで学ぶ特徴量エンジニアリングと機械学習の基礎』やインプレスの『Python 機械学習プログラミング 達人データサイエンティストによる理論と実践』などが評価が高いです。ディープラーニングについては、マイナビ出版の『PythonとKerasによるディープラーニング』、インプレスの『TensorFlowではじめるDeepLearning実装入門』などで学ぶことができます。

数学の素養として統計学を学びたいという場合は、翔泳社の『Pythonで学ぶあたらしい統計学の教科書』が、Pythonに関連させて統計学を学ぶことができるためおすすめです。

書籍をうまく活用して、AIの作り方を効率的に学習していきましょう。

【実践2】プログラミング経験者向けAIの作り方

次に、全くのIT初心者ではなく、プログラミング経験者が初めてAIを作る場合には、どのような方法をとるのがいいでしょうか。

ライブラリ・フレームワークを使ってAIを作る

まずは、機械学習のライブラリやフレームワークを使ってAIを動かしてみることから始めてみましょう。フレームワークは先ほども説明したように、一般的な機能をまとめたアプリケーションのひな形のことです。ライブラリもフレームワークとほとんど同じ意味です。

初心者がまず使い方を覚えるべきライブラリは、以下の3つです。

  • Numpy(ナンパイ。効率的な数値計算が可能)
  • Pandas(パンダズ。高速かつ簡単なデータ操作が可能)
  • Matplotlib(マットプロットリブ。様々なグラフ描画が可能)

また、この他によく使われているライブラリとしては以下のようなものがあります。

  • scikit-learn(サイキット・ラーン。Pythonの機械学習ライブラリで無料で利用可能)
  • Keras(ケラス。Pythonで書かれたオープンソースニューラルネットワークライブラリ)
  • TensorFlow(テンソルフロー。Googleが開発したライブラリ)
  • Chainer(チェイナー。日本国内の企業が中心となって開発)
  • PyTorch(パイトーチ。Facebook主導で開発されたPython向けのライブラリ)

などです。

こういったライブラリやフレームワークを利用することによって、一からロジックを作成することなく、画像認識、文字認識、需要予測などを効率的に実現していくことができます。

実現するための手法を選択する

先ほども簡単に説明しましたが、機械学習を行う際、いくつかの手法があります。どの手法をとれば目指す機能を実現できるのか、以下に紹介する手法の中から選択していく必要があります。

まずは教師あり学習の手法です。 教師あり学習とは、インプットと正解がセットになったデータを投入することで学習させる手法のことです。これは、たとえばAIに「猫」を覚えさせるときに、猫の画像と、その画像が猫であるという情報を与えることで、AIが「猫」を認識できるようにするというものです。

教師あり学習の手法にもいくつかの種類があります。

  • 回帰 (一般化)線形回帰 サポートベクターマシーン(SVM) など
  • 木 決定木(CART) 回帰木 ランダムフォレスト 勾配ブースティング木 など
  • ニューラルネットワーク(NN) パーセプトロン 畳み込みニューラルネットワーク(CNN) 再起型ニューラルネットワーク(RNN) 残差ネットワーク(ResNet) など
  • ベイズ 単純ベイズ(ナイーブベイズ) など
  • 時系列 AR,MA,(S)ARIMAモデル 状態空間モデル など
  • クラスタリング k近傍法(KNN) など
  • アンサンブル学習 ブースティング バギング など

教師あり学習に対して、教師なし学習の手法もあります。 教師なし学習は、正解なしのデータを投入し、プログラムが自らデータの特性などを学習します。たとえば、AIに「猫」を覚えさせるときに、膨大なデータのみを与えることで、AIが自動的に特徴を解析し「猫」という存在を認識するようになるというものです。

教師なし学習にもいくつかの種類があります。

  • クラスタリング 階層型クラスタリング(ユークリッド距離*ウォード法など) 非階層型クラスタリング(k-meansなど) トピックモデル(LDAなど) など
  • ニューラルネットワーク(NN) 自己組織化マップ(SOM)
  • その他 アソシエーション分析 協調フィルタリング(アイテムベース、ユーザベースなど) など

説明変数の予測値への寄与を大雑把に知りたい、可能な限り正確な予測値を知りたい、予測精度が実用的で因果関係の類推も行いたい、など目的に応じて様々な機械学習の手法から最適なものを選択する必要があります。

AIに学習させるデータを準備する

AIに学習させるデータを準備する

機械学習の手法が決まったら、AIに与えるデータも用意する必要があります。AIは、学習させる前の段階では全く何も知らないまっさらな状態です。この状態から何かを学習させていくためには、質のいい大量のデータが必要になります。

まずは、自社で保有しているデータを活用できないかを考えてみましょう。 小売業であれば何らかの商品の販売データ、製造業であれば品質不良品のデータなどが利用できる可能性があります。このとき注意するべき点は、データの質を確保するということです。人間でも判定に困るようなデータ、対象オブジェクトがあいまいなデータなどを除去し、誤ったラベル付けを行っていないかどうかに注意する必要があります。 このように、データを利用する前にデータの変換・整理・除去などの処理を行うことをデータのクレンジングと言います。

それでは、自社でデータを用意できない場合には、どのようにデータを用意すればいいでしょうか。手法としては、主に以下のふたつがあります。

  • 無料で利用できるAPI・データセットを活用する
  • インターネットから収集する(スクレイピング)

それぞれの手法について確認していきましょう。

無料で利用できるAPI・データセット

無料で利用できるAPIやデータセットもうまく活用していきましょう。

  • 動画
  • 画像
  • 医療関連
  • 金融

などのデータセットがWeb上で無料で公開されています。公開しているのは、一般企業、大学などの研究機関、政府など様々です。たとえば、国立情報学研究所では無料で日本のデータセットを提供しています。動画のデータセットは、Googleの研究チームが公開しているYouTube-8M DatasetやYouTube-BoundingBoxes Datasetなどがあります。 画像のデータセットは、機械学習に携わっていれば誰もが必ず一度は触れるであろうほど有名なデータセットMNISTがあります。顔のデータセットであれば、ワシントン大学主催のMegaFace、香港中文大学提供のCelebA Datasetなどを利用できます。

インターネットから収集する(スクレイピング)

インターネット上のサイトをクロールし、サイト上の情報を抽出するソフトウェア技術であるスクレイピングを利用してデータを収集する方法があります。このスクレイピングにも先ほど紹介したPythonの技術が利用でき、自らプログラムを組むことができます。ただ、無料のツールもWeb上で公開されていますので、取得したい情報からみて機能的に充分であれば、無料ツールを使った方が手間は少ないです。

準備したデータを処理する

プログラム、手法、データを用意することができたら、データの前処理を行います。用意したデータがAIが処理できるような綺麗に整ったものであるとは限らず、そのままでは利用できないことがほとんどです。たとえば単位が違ったり、不要な空白が入っていたりすると、AIはうまく処理することができず、本来のパフォーマンスを発揮することができません。

こういったデータの不揃いを正し、AIが処理できるような形にデータを整形する必要があるのです。

学習によりモデルの精度を高める

AIは学習させることによって、少しずつモデルの精度を高めていくことができます。 それでは、どのようにしてモデルの精度を高めていけばいいのでしょうか。

モデルのトレーニング

機械学習アルゴリズムを使い、ネットワークの重み付けを変えていくことをモデルのトレーニングといいます。このトレーニングと、学習は似て非なるものです。学習とは、機械学習アルゴリズムを使ってモデルのトレーニングを行いながらネットワークモデルを構築していくことです。

モデルの評価

モデルのトレーニングを行った後は、未知のテストデータに対するモデルのパフォーマンス評価を行います。トレーニング時の学習データの場合、データ慣れによるバイアスがかかっている可能性があります。全く新しいテストデータを使って評価することによって、実運用可能かどうかの最終チェックを行います。

手法の検討

モデルのトレーニング、評価を行った結果、どうしても高い精度がでなかった場合は、機械学習の手法を選択するところに戻って、手法の再選択を行います。

データの検討

トレーニング・評価の結果、高い精度が出ない理由としては、与えているデータが不適切な可能性もあります。手法の検討だけでなく、適切なデータが与えられているかどうか、データも検討も行いましょう。データが不適切であった場合、適切なデータを用意し直す必要があります。

AI技術をみにつける方法

最後に、AI技術を身に着けるための方法についてまとめておきます。

AIをスクールで学ぶ

AIはスクールで学ぶことができます。具体的にどのようなスクールがあるのかを見ていきましょう。

AIが学べるスクール3つ

おすすめのスクールとして、ここでは3つのスクールを紹介します。

ひとつめはTech Academyです。 Tech Academyは、現役のプロのサポートと独自の学習システムによって集中して学習できる環境を整えています。最短4週間で技術を習得できます。ぐるなびやDMMなど、数多くの企業の教育実績があります。

ふたつめはTech Boostで、最短3カ月でプログラミングを学ぶことができます。 オンライン・オフライン一体型のプログラミングスクールとなっており、メンターと二人三脚でオリジナルのWebアプリケーションを開発する実践講義もあります。

3つめのAidemyは、自動運転ソフトウェアの分野で有名な東京大学の加藤真平准教授がコンテンツ監修を行っていて、早稲田大学や大手上場企業などでも導入されているマンツーマンプログラミング学習サービスです。

理論よりも実践に重きをおいており、登録後すぐにインターネットブラウザ上でプログラミングの練習を開始することができます。それぞれのスクールには上に書いたような特徴がありますので、自分のニーズにもっとも合うスクールを選択しましょう。

AIジョブカレ
AIジョブカレ
 

AIジョブカレ

上記のようなスクールの他、AI関連の仕事紹介まで行っているスクールもあります。AIジョブカレは、Pythonなどのプログラミング言語から、データの前処理、アルゴリズム、パラメーターチューニングまで、AI開発に必要な知識を体系的に学べるスクールです。

実務経験がある専門家が講義を担当し、日本ディープラーニング協会のエンジニア資格(E検定)の認定講座であるため、修了認定試験に合格するとE検定の受験資格が得られます。仕事紹介に関しては、未経験の求人の紹介も可能。紹介した仕事で決まった場合、受講料が全額キャッシュバックされて無料になるという特典まで付いています。

AI技術を身につけ、次のキャリアステップを考えていくときには、AIジョブカレをご検討ください。

まとめ

いかがでしたでしょうか。初心者でも簡単なAIの作り方から、本格的に開発する方法までご紹介してきました。また初心者から本格的な開発をするために、開発言語であるPythonを学習するスクールについてもお話ししました。

AIは今後、注目される分野です。AIを少しでも作ってみようと興味を持たれた方は、お時間があるときに作ってみてください。さらに興味が湧いて、本格的なAIを開発してみようとAIについて学習するきっかけになる可能性もあります。本格的な開発ができなくてもPythonや機械学習に少しでも触れることで新しいキャリアが見えてくるかもしれません。

この記事があなたのAI開発の第一歩になれば幸いです。

関連記事Related Posts