AIアプリケーション開発のITスキルについて

目次

 AIの全体を俯瞰できる構成としました。各論については別のページとして作成する予定です。

1.AIの定義
 人工知能またはAI(artificial intelligence)は計算とコンピュータを用いて知能を研究する計算機科学(computer science)の一分野です。
 人工知能は人間のように学習し言葉や物事を理解して課題をこなす能力を目指す汎用人工知能と、画像認識、音声認識、自然言語処理など限定された領域の課題に特化して自動的に学習、処理を行う特化型人工知能に分けられます。現在、人工知能として実用化されているのは後者の特化型人工知能に分類されるものです。

2.人工知能の要素
 人工知能の要素として以下のキーワードが登場します。
・機械学習:
 人工知能を実現するための技術の一つで、経験からの学習により自動で改善するコンピューターアルゴリズム。
・ニューラルネットワーク:
 人間の脳の神経回路の一部を模した数理モデル。
・CNN(畳み込みニューラルネットワーク):
入力の特徴(エッジ)の検知し、深い層でより高次の認識を行う数理モデル。フィルターの役割を担う畳み込み層(特徴を際立たせる役目)とプーリング層(特徴を割り出す)、全結合層、活性化関数、出力層から成るディープラーニングの数理モデルの一つ。
・RNN(再帰型ニューラルネットワーク):
 センサデータなどの多種多様な時系列データ(トレンドや周期をもつ)を扱えるようにしたディープラーニングの数理モデルの一つ。
・弱いAI/強いAI:
 人工知能の分類方法の一つで、汎用人工知能/特化型人工知能が扱う対象の範囲で分類するのに対して、推論の高度さによって分類するもの。
・自然言語処理:
 人間が日常でやり取りする「言葉」などから成る自然言語を処理・分析する技術です。
・画像認識:
 コンピュータが画像から特徴をつかみ対象物を識別する技術。
・音声認識:
 人間の声などをコンピューターに認識させて、話し言葉を文字列に変換したり、音声の特徴をとらえて人を識別する機能のこと。
・自動運転:
 自動車における自動運転は、人間が運転操作を行わなくとも自動で走行できる自動車で制御システムが「自律型」であること。人間による監視の必要有無、運転の条件によってレベル1からレベル5でレベル分けされる。
・データマイニング:
 大量のデータから知識を取り出す技術のこと。
・ビックデータ:
 データを利用して社会の問題解決や業務の付加価値向上を行うなどの目的で集められる様々な種類、形式が含まれる非構造化データ・非定型的データの集合。一般的にデータ規模は大きくなるが量的側面だけでなく、そのデータがどのように利用されるかという質的側面がある。
・深層学習(ディープラーニング):
 脳神経の構造を模したニューラルネットワークを使って人間が行うタスクをコンピューターに学習させる機械学習の手法のこと。
・AIで使う線形代数:
 代数学は、ある集合(実数など)に対して、集合の元とそれに作用する演算などが定義された集合の構造について考えます。その集合の構造によって、群・環・体など(代数系)あり、それらの対応関係で複雑な数の集合を抽象化した構造の集合へ置き換えを考えます。
 代数学の中でも線形代数は代数系(群、環、体、ブール代数、ベクトル空間など)の中のベクトル空間を扱う学問です。 
 ベクトルは大きさと向きを持つ量を表すときに使い、向きは必ずしも座標を表すものでなく抽象的な意味をもちます。
 元の数によって2次元、3次元、・・n次元のベクトルを考えることができ、空間でイメージすることが難しい計算式をn次元の線形代数として計算することが可能になります。この計算式を行列に置き換えることでコンピュータで計算し易くなり、特にPythonのライブラリを使うことで行列の計算が容易になります。
・AIで使う微分:
 微分は大きさの傾きを表すために用いられてますが、AIでは誤差の傾きを表し、この誤差が最小になるところを見つけるために使います。
・AIで使うベイズ統計学:
 ベイズ統計学では確率を導くために必ずしも標本を必要とせず、事前確率を設定して情報によって事後確率を求めて、事前確率を更新し、さらに情報を得て事後確率を更新していきプロセスで学習しながら確率を求めます。

上記のキーワードの関係を下図に示します。

3.機械学習
 機械学習は人工知能の一種で、経験からの学習により自動で改善するコンピューターアルゴリズム(ルールベースのプログラムアルゴリズムではない)です。機械学習は大きく次の3つに分類されます。
①教師あり学習
 入力とそれに対する結果(ラベル)のセットから傾向を学習して新しい入力に対する結果を分類、または回帰的方法で予測するものです。
 活用例としては、電子メールのスパム判定、機械の故障予測など。
②教師なし学習
 入力のみで結果(ラベル)が無いデータ内に存在する未知のパターン、傾向を見つけてモデル化するものです。ここでは大量のデータから知識を取り出すデータマイニングやデータ間の類似度に基づいてデータをグループ分けするクラスタリングの手法などがあります。
 活用例としては、自動運転AIの画像認識、画像の分類、消費者購買行動分析など。
③強化学習
 教師あり学習や教師なし学習のように明確な入力を基にするのではなく、コンピュータアルゴリズム自体が与えられた環境の観測を行い、行動によって環境に影響を及ぼし、その環境から得る報酬(価値)を最大化する行動を学習するものです。
 活用事例としては、ロボット制御など。

4.ディープラーニング(深層学習)
(1)概要
 ディープラーニングは機械学習の中の一つの手法でデータが持つ規則性や傾向、特徴を機械が自動的に見つけて学習します。前記の教師あり学習、教師なし学習、強化学習のすべてに適用できます。​

(2)仕組み 
 CNN(畳み込みニューラルネットワーク)を例にディープラーニングの仕組みを見ていきます。

①畳み込み層で入力されたデータの特徴を抽出する。
②プーリング層で抽出された特徴の圧縮と重要ではない部分の削除をして取り出す。
①、②を繰り返し、データ量を絞っていく
③全結合層では、上記で得られたデータの特徴(変数)の全て(ここでは5つ)を使った1次多項式(5次元ベクトル)から出力の2次元ベクトルに変換する。
④活性化関数は出力を決める役割があり、非線形関数が使われる。非線形関数によって学習の回数を重ねることで精度があがる。
⑤出力層は分類を扱うものでは出力の合計が1になるように調整する関数を使う。

5.人工知能の実装
 現在、人工知能は神経細胞を模した多層ニューラルネットワークによる機械学習(ディープラーニングまたは深層学習)を適用したものが実現されています。
(1)ディープラーニングフレームワーク
 上記の仕組みで作られ、データの用意と設定で利用できるディープラーニングのフレームワークとして下記のものがあります。
①TensorFlow
 GoogleのGoogle Brainチームによって2015年に開発
(公式サイト)
 https://www.tensorflow.org/

②PyTorch
 Facebookの人工知能グループによる開発からスタートし、2016年にリリース。
(公式サイト)
 https://pytorch.org/

③Keras
 Kerasは、Pythonで書かれたオープンソースニューラルネットワークライブラリでTensorFlowに取り込まれている。
(公式サイト)
 https://keras.io/

④Chainer
 日本のベンチャー企業であるPFN(Preferred Networks)によって開発。2019年12月にその開発を終了しPyTorchへ移行された。

(2)実行環境
 Pythonの環境構築をしなくてもWebブラウザからPythonソースコードを入力して実行できるGoogle Colaboratory(略称:Colab)のサービスがあります。また、GPU(Graphics Processing Unit)が使えます。
https://colab.research.google.com/notebooks/welcome.ipynb?hl=ja

(3)TensorFlow のチュートリアルの実行例
 Google Colabのサービスを使って、下記のチュートリアルを実行した結果を記載します。
初心者のための TensorFlow 2.0 入門
https://www.tensorflow.org/tutorials/quickstart/beginner?hl=ja

6.人工知能関係の研究機関、コミュニティーなど
(1)一般社団法人人工知能学会
 https://www.ai-gakkai.or.jp/

(2)一般社団法人 日本ディープラーニング協会
 https://www.jdla.org/
 ・G検定(ジェネラリスト向け)、E資格(エンジニア向け)試験の実施

The end