AI開発するなら どのプログラミング

近年、AI(人工知能)という言葉をさまざまな場所で見聞きする機会が増えてきました。

人工知能と聞いてどのようなものを連想しますか?
映画「AI」や「ターミネーター」に出てくるような人のような人のような思考をするロボットを想像するでしょうか。それともスマートスピーカーやSiriを思い浮かべたでしょうか。

どちらもAIと呼ばれるものですが、その形や機能は全然違うものですよね。
ではAIとはいったい何者なのでしょうか。

この記事ではAIの概要と用途事例、AI開発に使われるプログラミング言語、学習方法について解説していきます。

人工知能(Artificial Intelligence)の概要

人工知能(AI)とは

人によって定義は異なりますが、大まかに言って「人間の知能(の一部)をコンピュータ上で実現する技術やソフトウェア、コンピュータシステム」と言えます。

AIプログラム

✓ 従来のプログラムは条件分岐など判断ロジックを作成する

✓ AIプログラムは計算モデルを定義し、データを与えると、自動的に推論を行う

このAIは現在のところ大きく2つに分けられます。

  • 強いAI(汎化型AI)

  →人間の知能に迫るAI(人間と同等あるいはそれ以上の認識能力をもつ)

  まだ実用化されていない

  e.g. ドラえもん、鉄腕アトム、C-3POなど

  • 弱いAI(特化型AI)  現在実現できているのはこちら

  →限定的な問題解決や推論(部分的には人間より優れている)

   e.g. チェスや将棋のAI、画像認識など

機械学習とは

✓ 人工知能の一分野(特化型AI手法の1つ)で、コンピュータプログラムが経験、学習を行う

✓ 人間が自然に行っている学習能力と同様の機能をコンピュータで実現しようとする技術

ニューラルネットワーク

✓ 機械学習の手法の1つ

✓ ヒトの神経ネットワークを模倣した数理モデルのこと

✓ 1943年にウォーレン・マカロックとウォルタービッツが発表した形式ニューロンが始まり

深層学習(ディープラーニング)

✓ ニューラルネットワークを基礎とした学習手法

✓ 畳込みニューラルネットワーク(CNN)、リカレントニューラルネットワーク(RNN)と呼ばれるアルゴリズムがある

✓ 専用フレームワークを使えば、用意にプログラミングができる

人工知能の用途事例(弱いAI)

事例1 ニュースを書く・読むAI

✓ 企業が開示した決算発表資料から業績データなどの要点を抽出し、記事を自動作成するAI

✓ 気象庁が公開する気象電文から、天気予報のニュース原稿を自動作成するAI

✓ 用意した原稿を自動的に読み上げるAIを利用し、ニュースを放送するFM局

事例2 業務を支援するAI

✓ 新卒採用の書類選考にAIを導入。10年分のエントリーシートと人事考課のデータを学習させる。活躍できそうな人材のみを抽出。

✓ コールセンターの問い合わせ内容を音声認識し、データベースから最も適した回答を抽出

事例3 街のパン屋さん

✓ トレーに載せられたパンを瞬時に識別し生産するAIを中小企業が開発

✓ 経験の浅いスタッフでもスピーディーにレジの対応ができる

✓ 全国約100店舗の街のパン屋さんで導入

事例4 農家

✓ 収穫したキュウリの選別にAIを活用

✓ まっすぐなキュウリと曲がっているキュウリをカメラで画像を取り、瞬時に認識して選別するAI

✓ 個人で開発、費用約10万円

今後のAIの活用分野

総合的な応用 サービス
●自動運転

●対話ロボット

●機械翻訳

●文章要約、文章生成

●手書き文字認識

●音声認識、対話

●適応学習

●株式取引・資産運用

●レコメンド

業務サポート 行動データ
●医療画像診断

●新薬開発

●設備の故障診断

●設備の劣化検知

●不審行動の発見

●信用リスク評価

●人材評価

●スパムの検出

自動化 マーケティング
●エネルギー制御効率化

●配送最適化

●配置最適化

●シフトスケジューリング

●栽培管理

●需要予測

●施策効果検証

●CRM分析

●価格予測

AI開発で使われるプログラミング言語は

AI(人工知能)の開発に使われる主なプログラミング言語をご紹介していきます。

Python

Pythonは、スクリプト言語なので、ライブラリを動的に呼び出して実行できます。アプリのプロトタイプ開発、プログラム学習などでコンパイルなしに実行できる点が優れています。ライブラリが大変多彩で充実しています。

機械学習アルゴリズムを試しながら修正を加える際にも、コンパイル処理が不要なので、開発時間の短縮につながります。ただし、Python自体の実行速度がそれほど高速でないため、CやC++で実装されたライブラリを用いて速度を向上させることがよくあります。

C/ C++

機械語のアルゴリズムが完成している場合には、CやC++で開発すると実行速度を向上できるだけでなく、コンパイルによって静的なライブラリ(実行ファイルなど)として出力できます。

決まった機械学習処理を実行することが目的であれば、静的なライブラリを使うとシステムに不具合が起きたときに切り分けがより簡単になります。

ライブラリは直接的に修正や変更を加えられません。誤ってプログラムを書き換えてしまうことを防止できます。

JavaScript

意外と忘れられがちなのがJavaScriptのための学習ライブラリです。JavaScriptはスクリプト言語ですので処理速度はCやJavaをコンパイルして作成したライブラリほど速くはありません

しかし、ウェブ・ブラウザ上で動作するライブラリがあれば、あらかじめ作成した学習モデルの実行だけなら簡単です。

一般的な機械学習と同じように学習モデルによって分類、推論、予測などに応用可能です。例えば、ウェブ・ゲーム、チャットボット、画像ファイルのタグ付け、アンケートの分類などがウェブ・ブラウザ上で実行できます。インタラクティブなウェブ・コンテンツを提供するのに欠かせない技術です。

人工知能に利用できるライブラリ、フレームワークは、多様な用途に合わせて開発されています。2016年からはモバイルやIoT端末向けのものが多数発表されています。

人工知能がより身近なツールとして発展していくでしょう。特定のライブラリ。フレームワークにこだわらず、目的に適したものを試してみてはいかがでしょうか。(Tensorflow Playground.jsやSynaptic.js

JAVA

JavaはJVMという仮想マシンの上で動く言語です。

JavaとJVMは非常に高速に動作するようにチューニングされており、その実効速度はCより少し遅いくらいです。

Deeplearning4jというDeep LearningのライブラリやJava-ML(Java Machine Learning Library)のような機械学習のライブラリも公開されています。

JavaはJVMを使ったシステムにAI技術を組み込むのには、もちろん適しています。

ですが、やはりPythonのAIライブラリの充実具合に比べると、物足りなさを感じると思います。

Javaを既に使っている、Javaを別の目的で勉強する必要がある人はJavaを使ったAI開発も選択肢の一つとしてあることを覚えておきましょう。

R

R言語は統計解析向けのプログラミング言語です。

この言語は近年のデータ解析、AI分野で必須の技能である統計学の分野でよく使われます。

Rでも便利なパッケージが公開されており、Pythonと同様、有名なアルゴリズムの多くがパッケージで簡単に使える点が強力です。

Rは統計解析に特化した言語であり、Pythonのような汎用的なプログラミング言語ではありません

データの解析、AIの特化したシステムをRで組むのときには、非常に頼りになる存在です。

ただ、RはPythonよりも更に高速な動作が苦手で、またコミュニティの特性からか、公開されているライブラリを使いこなすにも専門分野の基礎知識が必要です。

Julia

Julia は2009年に開発が始まり、2012年にオープンソースとして公開された比較的、新しいプログラミング言語です。

JITコンパイラと呼ばれる技術を使っているお陰で、スクリプト言語でありながらCに並ぶ高速動作を可能としています。

PythonやR言語のライブラリもJuliaから簡単に扱うことができ、言語の開発もすごい勢いで進んでいる様子です。

  • C
  • C++
  • Python

この3つが言語選択のベースとして考えるには適しているというのが結論です。

ディープラーニング用ライブラリ

ライブラリ名 何に向くか 特徴 供給元
Caffe 画像処理 画像処理の研究者の中ではデファクトスタンダード カリフォルニア大学バークレイ校
Chainer 自然言語処理や音声処理 あらゆるニューラル・ネットワークの構造に柔軟に対応できる Preferred Networks
CNTK 大規模なネットワーク マイクロソフトのクラウド(Azure)上で実行できる マイクロソフト
Keras 手軽にためしてみたいときにすぐに実装できる 拡張性が高く新しいモジュールの実装がが簡単に行える グーグルなど
MXNet 大規模なネットワーク アマゾンのクラウド(AWS)上で実行できる Apache Software Foundation
PyTorch 最新研究 研究向けに開発されている Facebook
TensorFlow 大規模なネットワーク ネット上に情報が多く勉強しやすい グーグル
Theano ディープラーニングの理論を勉強してゼロから実装したい人 Theanoをベースにした機械学習ライブラリが幾つか開発 モントリオール大学

AI時代にエンジニアに必要な能力

AIの知識

✓  AIのアルゴリズムの理解

  • 最低限の数学の知識が必要
  • 研究者ではないので、基本を押さえること

✓  AI向けフレームワークの利用法

データを整理・加工

✓ データ分析

✓ スクレイピング

✓ データベース技術

AI知識の学習方法

知識があれば、自社でAIに取り組んでいる部署に異動するか、AI企業への転職の道が見えてきます。過剰な人材不足のため、スキルさえあれば就職先の心配はありません。

1.本を買って独学する

AIのプログラミングに興味のある方にはこちらの2冊をオススメします。

Pythonではじめる機械学習

scikit-learnで学ぶ特徴量エンジニアリングと機械学習の基礎

Andreas C. Muller

オライリージャパン

2017-05-25

amazon へ

ゼロから作るDeep Learning

―Pythonで学ぶディープラーニングの理論と実装

斎藤 康毅

オライリージャパン

2016-09-24

amazon へ

2.オンライン動画で学習する

「本を読んで勉強することが苦手!」と思う方もいるかもしれません。本の他に、オンライン動画で学習する方法もあります。

Udemyを使って学ぶ

「Udemy」というオンライン動画で学習する方法もあります。受講者は1500万人程いるので名前くらいは聞いたことあるかもしれません。

Udemyの特徴は、「機械学習」や「データサイエンス」のコースがとても豊富なところです。また大学の先生や実務経験豊富な方が講師をされており、教材の品質も非常に高いです。費用は、コースの大半が2000円以下で受講できます。

オススメのコースはこちらです。

特におすすめのコースは、「【キカガク流】人工知能・機械学習 脱ブラックボックス講座 – 初級編 –」です。キカガクの吉崎先生の講義は、非常に分かりやすいことに定評があります。

機械学習のベースになっている、「偏微分」や「最小二乗法」などの知識に不安がある方は、受講されることをおすすめします。









Aidemyを使って学ぶ

AIに関する基礎技術は、Aidemyを使って学ぶのがよいです。特にPython、機械学習(教師あり学習、教師なし学習)、ディープラーニング、Pandas、Numpy、Matplolib等を学んでおくとよいでしょう。(無料コース・有料コースが有ります)
Aidemy へ



3.プログラミングスクールで学ぶ

どうしても挫折しそうだという方には、オンラインスクールの「AIコース」に通う方法もあります。

TechAcademy

TechAcademyの「AIコース」では、あなたの学習を現役AIエンジニアが支援してくれます。具体的には、週2回のメンタリング、毎日の質問チャットなどで、短期間で機械学習・ディープラーニングを学べるプログラムです。Pythonのライブラリを使い、機械学習の開発を実践的に学べます。

漠然とオンラインスクールを受講するのは、効果が薄いかもしれません。しかし、自分で設定した集中期間のサポートツールとして活用することで、学習効果を高めることが出来ます。現役AIエンジニアに質問できるので、バグで詰まったりしなくなり、学習効率が上がります。



TECH BOOST

TECH BOOSTでは、業界初となるAI、IoTなど最新技術を学べるコースも準備されています。「AIコース」では、Pythonとライブラリを用いて、「自然言語処理」「機械学習」「ディープランニング」 の基礎を演習を通じて学んでいきます。

Dive into Code

Dive into Codeも、機械学習を学ぶことができるコースとなっています。
(機械学習エンジニアコース)

4.AI企業に転職する

AIの知識を身に付けるために、AI企業に転職してしまう手もあります。立場が人を育てるという側面もあり、この方法はとても有効ですが、転職先企業から見ると、「なぜお金を払って素人にAIを教えなければならないんだ」と捉えられてしまいます。

なので、この方法は需要に供給が追い付いていない今しか取れない方法でしょう。例えばですが、Pythonを自分のパソコンに環境構築して、「Hello,world!」と表示できるようになったら、面接に申し込んで、「少しはPythonできます」と言ってみるのも一つの方法かもしれません。

まとめ

人工知能という言葉が日常の中に登場するようになりました。しかし、人工知能が一体何を示しているかは、逆にわかりにくくなってきたと言えるかもしれません。

この記事では、用途事例からどのような場面で使われているかと、開発に使われているプログラミング言語、さらに学習方法について見てきました。

機械学習のプログラミング自体は、ライブラリを使用すると驚くほど簡単で、数行で実装が終わっています。

現在注目されているAIがどのような仕組みで動いているのかを知りたい方は、まずはTensorflow Playgroundなどの教育コンテンツで感覚を掴むことをオススメします。(下記リンク)

A Neural Network Playground

シェアする

  • このエントリーをはてなブックマークに追加