支援対象地域:札幌、仙台、関東、愛知、関西、広島、福岡

  • TOP
  •   
  • コラム
  •   
  • 個人でもできるAIの作り方

1.はじめに

近年耳にするようになった人工知能(AI)は、我々人間の知的ふるまいの一部を、ソフトウェアを活用して再現したものです。
経験から学んで、新たな入力に順応することで、人間が行うように柔軟なタスクを実行します。人工知能を活用した事例のほとんどには、「ディープ・ラーニング」と呼ばれる、自然言語処理という手法に大きく依存しています。これは音声の認識、画像の特定、予測など人間が行うタスクを実行できるように学習させるものであり、人間は基本的なパラメーターの設定のみを行って、後は機械そのものが自己学習を得てできるようにします。
また、ビジネスや生活の一部にAIが導入できないかという、考えも現在では模索されています。しかし、AI開発や作り方となればまた話は大きく変わってきます。「AI」という単語を聞くだけでも難しく考え込んでしまいますし、ましてや、先端企業で取り組むことが難しいテーマの一つです。しかし、初歩的かつ簡単なAIを作り出すことは、難しくはありません。

2.作り方の前に知っておくべきこと

1.そもそも「AI」をゼロから作れるのか

プログラミングや開発経験のない方でも、一度は「AIを作ってみたい」と考え、じゃあまずは何から手を付けたらいいのか、そもそも「AI」を作れるのかということが前提になってきます。未経験者や初心者でも、複雑なAIを作るというのは非常に難しいですが、簡単なAIを作ることはできます。ただし、必要最低限のITリテラシーを知っておくことが前提となります。

2.完全オリジナルはハードルが高い

AIを作る際、誰しも唯一無二の完全オリジナルのAiを作りたいと、一度は考えます。しかし、完全オリジナルを1からすべて構築していくのは非常に難しいです。それこそ、何人もの開発エンジニアでプロジェクトチームを結成した後、最先端のAI技術を駆使して開発する一大プロジェクトになります。
1人でAIの開発をする場合、簡単なAIを作ることを検討すべきです。

3.AIの作り方として知っておくべきこと

1.開発の方法

いざ、AIを作ろうとしても「まずは何から手を出しらいいのか分からない」と思う方は、少なからずいます。AIの作り方として現実的な方法が3つあります。

  • ・無料ツールやWebサービスを活用する
  • AI開発の無料ツールの1例は、SONYがリリースしている「Neural Network Console」という、完全ノンプログラミングで深層学習(ディープラーニング)を行うことができるツールになります。他にもチャットボットを作成するWebサービスや、画面上インターフェースを操作して作れる等、手軽にAIを作れるツールが出回っています。

  • ・APIやフレームワークを活用する作り方
  • Web開発の経験やITエンジニアとして活躍しているけど、AI開発は初めてという方は「API」「フレームワーク」で、機械学習や深層学習が手軽に利用できてAIの作成ができます。APIを利用したAI開発ツールの1例としては「チャットボット」や「音声UI」といった自然言語処理に関して無料サービスを展開している「Wit.ai」があります。
    また、AI開発で必要となる「学習モデル・アルゴリズム」といった一般的な機能をフレームワーク・ライブラリを使用して開発する方法もあります。フレームワークの1例は「Python」を活用しており、深層学習(ディープラーニング)のプログラムが作成できる「PyTorch」を、機械学習の分野では、「TensoeFlow」を主に利用します。

2.開発に求められるプログラミングスキル

  • ・Python
  • 「Python」は機械学習を進めていく上で必須スキルであり、インタープリタ型の高水準汎用プログラミング言語です。
    機械学習は大量のデータを制作してAIに学習させる技術であります。そのため、「Python」でのデータ処理計算や統計処理を行います。この言語は、他のプログラミング言語と比べて、ライブラリが豊富であるため、AI開発の場では欠かせない存在です。身近なものでは、「Google」や「Facebook」でも利用している言語になります。また、初心者でもとっつきやすい言語になります。少ないコード量でプログラムを組むことが可能なため、非常に読みやすいという特長を持っています。

  • ・SQL
  • 「SQL」は、データベース言語であり、データベースを管理するソフトウェアを操作・制御することが目的の言語になります。AIに学習データを与えていくためにも、前処理としてデータを構造化して、抽出・加工する作業があります。データの前処理は、AI開発においては最重要な作業に当たります。そのため、SQLにあわせてデータベースに関する知識が必要不可欠なります。また、SQLで利用する構文は、「MySQL」や「Microsoft SQL Server」等のデータベースでも通用します。

3.開発したAIを公開するために必要な技術

  • ・フロントエンド技術
  • 個人開発したAIをWebサービスの一環として公開する場合、IT/Webでの開発においてユーザーの目に見える箇所で扱われる技術にあたる「フロントエンド技術」が必要となります。
    フロントエンドはUI(ユーザーインターフェース)と呼ばれるWebサイトやITシステムを指します。Web系であればHTML,CSS,JavaScript等のプログラミング言語を用いて開発します。また、音声認識技術もフロントエンドの技術に該当します。

  • ・バックエンド技術
  • ユーザーが入力した内容や情報をもとに結果を出したり、記憶する等の処理には「バックエンド技術」を活用します。これによりAIを活用したWebサービスや業務システムの開発が実現になります。
    たとえば、フロントエンド技術を用いた「音声認識」の処理をするのは、バックエンド技術です。この技術を用いることで、AIを支える中核といえる大量のデータを処理して最適解でユーザーに返信します。

4.準備として必要なこと

1.大量のデータ

AIを開発していく上で、「大量のデータ」を用意することは最重要なことです。
我々が長い年月を経て言葉を理解したり、様々な経験を経て成長したり、目に見えるものの判断をしていくように、AIもまた人間同様に大量のデータを基に学習をして行きます。大量のデータを集める方法は以下の方法があります。

  • ・有償or無償で公開されているデータセットを使用する
  • ・SNSを活用して収集
  • ・そのほか、ネット上にあるデータを収集

しかし、「大量のデータ」と一言でいってもどれほどの量が必要かは、開発するAIの用途・規模に応じて変わってきます。たとえば、社内でAIを導入したシステムを開発するとなれば、それに付随する顧客データ等の企業資産に当たるデータが必要不可欠になります。
また、データを集める段階で、学習するにはまったく関係のないデータが混ざることでノイズが発生したりもします。そのような事にならないためにも「データの前処理」が必要になります。たとえば、ネット上にある画像をスクレイピングした場合、まれに関係のないデータが混ざっていることがあります。AIに正しく意図したとおりに学習をさせるには、データの整形や修正・削除をしていく必要があります。

2.機械学習の手法を定めておく

AIを本格的に動かすためには、「機械学習」や「深層学習(ディープラーニング)」について知っておく必要があります。
「機械学習」は文字通り、AIに用途に応じたデータを与えて、反復学習させる考え方です。この学習方法でAIはあらゆるデータを学び、特徴やパターンを発見し、別データの分析や予測が行えるようになります。
「深層学習」こと「ディープラーニング」は、機械学習の一部であり、人間の神経細胞を模したニューラルネットワークのシステムから発展した考え方になります。これによりAIは、音声や画像の認識、予測や分析から最適解を導き出せる等、我々ができるような複雑なタスクを学習して実行できるようにします。
また「機械学習」はアルゴリズムの考え方より3つに分類することができます。

  • ・教師あり学習
  • この学習は、入力データそのデータの正解を与えること入力と出力の関係性を学習させるアルゴリズムになります。
    この手法では、「回帰」や「ニューラルネットワーク」「アンサンブル学習」「ベイズ」等があります。平たく言うなら「分類」や「予測」と呼ばれるような問題が該当します。

  • ・教師なし学習
  • この学習は、正解のないデータを与えて、プログラムが与えられたデータから特徴を導き出し、そのデータの構造や特長等を学習させるアルゴリズムになります。
    この手法では、「階層型クラスタリング」や「非階層型クラスタリング」といった「クラスタリング」。「ニューラルネットワーク」の1つである「自己組織化マップ(SOM)」といったデータの指定した次元をマッピングする手法等があります。平たく言うなら、「クラスタリング」や「次元消滅」と呼ばれる「正解となる出力が与えられない」問題が該当します。

  • ・強化学習
  • 強化学習は、プログラムが与えられた環境から情報を取得して、如何様にすればより多くの報酬が得られるかの選択肢を学習させるアルゴリズムになります。
    平たく言えば、「価値を最大化するような行動」を学習する考え方です。身近なもので例えると「テトリス」等、高いスコアを得るような問題や「株の売買」でより大きな利益を得るためにはどうするかといった問題が該当します。

5.まとめ

完全オリジナルのAIを1から開発するとなれば、それは何人ものエンジニアを集めて結成したプロジェクト規模の開発となります。しかし、個人レベルでAIを開発することは決して不可能ではありません。AIに与えるデータセットの規模からAIは学習をしていきます。そのため、得られる学習情報が多いほど、AIの精度は高くなります。とはいえ、制作者自身も最低限のITリテラシーや、プログラミング言語等、知っておくべきことが山ほどあります。本格的な開発ができなくても、「AI」という分野を通じて学んだことにより、新しいキャリアを見つけることもあります。