.net column
.NET開発者のためのブログメディア

人工知能の開発で用いられるプログラミング言語9つ|必要なその他のことも紹介

2020年04月20日
SE
AIの開発をするときって、なにが必要になりますか?
PM
ハードウェアやライブラリが必要です。この記事で詳しく説明しますね。

目次

人工知能とは?


AIとは「Artificial Intelligence」の略で、人工知能のことです。「AI」という言葉の定義は様々ですが、人間が行う思考・判断・学習などといった知的行動が出来るコンピュータープログラムのことを言い、学習を進めることで人間が行っていた仕事を代替できる能力もあります。

人工知能は近年いろいろな場面で役立っている

近年AIは幅広い分野で活躍しており、これまで人間が手作業で行っていた業務を代替したり、より速く・より正確に定型業務をこなしたりすることで、人間の業務効率を向上させています。具体的には、企業内の書類作成・許認可業務・検索エンジンの検索結果の最適化・倉庫業務など、一般人の目に触れる部分からサプライチェーンに関わる部分まで、幅広い分野に活躍の幅を広げています。

人工知能の開発は誰でもできる?

人工知能の開発は、必要な知識やハードウェアがあれば誰でも開発が可能です。AIの開発に必要なものは、作成するための「ハードウェア」・AI開発に必要とされる様々なプログラムが格納された「ライブラリ」・開発に用いる「プログラミング言語」の3つです。この3つがあれば誰でも開発が可能です。初心者にとってはハードルが高い印象を受けますが、必要な環境と知識があれば誰でも開発ができるということです。

人工知能の開発を行う代表的な職種3選


人工知能の開発に携わる職種はたくさんありますが、その中で特に代表的な職種は機械学習エンジニア・AIエンジニア・データサイエンティストの3つです。いずれも似たイメージを持たれることが多く、それぞれの違いがよく分からない方も少なくありません。

人工知能開発のためにコンピューターに向かって作業する姿は確かによく似ていますが、その状態で行なっている作業内容は異なります。各業種の特徴や仕事の内容を把握し、どんな職種なのか、どのような違いがあるのかなどを確認しておきましょう。

代表的な職種1:機械学習エンジニア

人工知能の開発を行う代表的な職種1つ目は、機械学習エンジニアです。人工知能における機械学習の開発と実装に携わるエンジニアで、人工知能が特定の処理や予測などを行う上で必要なデータを反復的に学習させます。

人工知能に学ばせる(解析させる)データを読み解き、開発の目的(特定の処理や予測など)に沿うアルゴリズムを採用して、解析結果の評価と調整を繰り返す作業が基本の仕事になります。

上記の他、人工知能の動作システムの設計や構築・データの前処理やクレンジング・API・基盤設備・追加機能開発なども行います。また、機械学習の派生であるディープラーニングの実装時にも機械学習エンジニアが活躍します。

代表的な職種2:AIエンジニア

人工知能の開発を行う代表的な職種2つ目は、AIエンジニアです。人工知能の機械学習には数理モデルが必要になりますが、AIエンジニアはこの数理モデルのコーディングを行います。

作業を行う上では、プラットフォームの知識も必要です。また、数理モデルのコーディングに際しては、状況に応じたやり方を考える必要があります。そのため、AIエンジニアとして働く上では常に情報のキャッチアップが求められます。

代表的な職種3:データサイエンティスト

人工知能の開発を行う代表的な職種3つ目は、データサイエンティストです。データ分析における仮説検証をコンサルティングする存在で、統計スキル・ビズネス・DBAなど多様なスキルが求められます。

データサイエンティストはコンサルタントとして仕事の幅が広く、データ取得・AIエンジニアに似た作業・データ分析・見立て・クライアントなどに向けてビジネスに関する意思決定の提案までを行います。

携わる作業内容の多さに伴い、求められるスキルも豊富です。たとえば、データアナリスト(データの統計分析者)的なスキル・データベース構築のスキル・構築したものをビジネスに実装するスキルなどが必要になります。

人工知能の開発で用いられるプログラミング言語9つ


次に、AIの作成でよく使われるプログラミング言語を紹介します。プログラミング言語は数百以上の種類があり、それぞれの言語に特徴があります。目的に応じたものを選ぶ必要があるでしょう。ここでは、AIのプログラミングによく使われるプログラミング言語を9つ紹介します。

プログラミング言語1:Python

Pythonは組み込むコードの量が少なくてもプログラムを構築でき、コード自体の読み安さからもプログラマーに人気の高い言語です。YoutubeやEvernoteといったサービスでも使われている言語で、プログラミングやAI作成初心者には「入門編」とも言える言語でしょう。

プログラミング言語2:JavaScript

Pythonは組み込むコードの量が少なくてもプログラムを構築でき、コード自体の読み安さからもプログラマーに人気の高い言語です。YoutubeやEvernoteといったサービスでも使われている言語で、プログラミングやAI作成初心者には「入門編」とも言える言語でしょう。

プログラミング言語3:C++

「C++」は保守性が高く、製品やサービスのシステムの拡張・改善に重宝されるプログラミング言語です。C++は企業内の管理システムやスマホアプリ、Webサービスの開発・改善などに使われることが多い言語です。また、公共機関のサービスを含め幅広い分野で使われていた「C言語」との互換性も高く、大規模なシステム改善の現場でも使われることが多いでしょう。

プログラミング言語4:R言語

「R言語」はデータの解析や統計処理のために開発されたプログラミング言語です。他のプログラミング言語の中には、汎用的なプログラムの作成のために開発されたものもありますが、R言語はデータ解析や統計処理に特化して作られた言語のため、この分野における利便性が高いのが特徴です。また、データの可視化も容易なため、研究分野で多く使われる言語でもあります。

プログラミング言語5:Julia

人工知能の開発で用いられるプログラミング言語5つ目は、Juliaです。Pythonにおける動作の遅さを克服する目的で開発されたプログラミング言語で、その高速性と複雑な数式を簡易的に記述できる点が特徴に挙げられます。

その他にも、動的な型付けを採用・外部モジュールPackageにより多様な拡張が可能・レベルの高い記述ができるといった特徴があります。また、エディター(Visual Studio Codeなど)を通すとインタラクティブな実行が可能です。

2012年にオープンソースとして公開されて以降、データサイエンティストに向くプログラミング言語として徐々にシェアを伸ばしています。そのシェア率はPythonの次に高いと言われており、今後の需要も見込まれているプログラミング言語の1つです。

プログラミング言語6:Haskell

人工知能の開発で用いられるプログラミング言語6つ目は、Haskellです。ラムダ計算に基づく関数型のプログラミング言語で、コードは単一の式になります。その式を遅延評価して、静的型付けを行うことで実行されます。

Haskellの大きな特徴は、高いメンテナンス性と優れた機能性を持つコードが作成できることです。また、他プログラミング言語との統合性・並行性や並列性の組み込み・ライブラリの多さ・コミュニティやサポートの良さなども特徴に挙げられます。

簡潔で明確かつ信用性の高いコードを記述できるため、生産が効率化します。構造解析処理や捜索処理などにおけるコードの作成も、他のプログラミング言語と比べて簡単です。ちなみに、名称の由来は論理学者Haskell B. Curryに由来します。

プログラミング言語7:Matlab

人工知能の開発で用いられるプログラミング言語7つ目は、Matlab(Matrix Laboratory)です。データ解析向けのプログラミング言語で、行列や配列全体を処理します。通常のプログラミング言語は1つの数値を処理するため、特徴的な処理方法と言えます。

また、基本操作には変数作成・配列インデックス付け・算術演算・データ型なども含まれています。標準機能として付属されている分析用ツールが豊富で、拡張パッケージ(Toolbox)も初めから用意されています。

データ解析の際に有用なプログラミング言語として、人工知能の他、工学・理学・経済学などの分野で用いられることも多くあります。ディープラーニングの開発にも関わることが多いプログラミング言語で、ロボット工学における開発でもよく用いられています。

プログラミング言語8:Java

人工知能の開発で用いられるプログラミング言語8つ目は、Javaです。汎用性に富むプログラミング言語で、古くから高い人気を誇ります。人工知能開発の他、システム・Web・アプリケーションの開発に向いており、大規模なシステム開発も行えます。

大きな特徴として挙げられるのは、仮想マシンの存在です。JavaはJava仮想マシン(JVM)上で動作するプログラミング言語のため、この仮想マシンの動作に対応しているコンピューターであれば利用OSを問いません。iOS以外なら、基本的に動作可能です。

プログラミング言語9:C言語

人工知能の開発で用いられるプログラミング言語9つ目は、C言語です。高い汎用性と実行速度の速さが利点のプログラミング言語で、多量なデータによって処理が重くなりやすい人工知能の開発に最適な言語と言われています。

OSのUNIXを簡易的に移植する目的で作られたプログラミング言語のため、メモリ領域管理・ポインター演算・ビットごとの論理演算などハードウェア系の処理を得意とします。人工知能の開発にもハードウェアが関わるので、便利なプログラミング言語となるでしょう。

プログラムの基礎から実用的な応用力までを学ぶことができ、C#やC++といった派生型の言語も多いため、最初に習うプログラミング言語に選ばれやすい言語です。しかし、扱うにはPythonより高いプログラミングスキルが必要になります。

人工知能を開発するために学ぶべきこと3つ


では、実際にAIを開発するためには何を知る必要があるのでしょうか。この見出しでは、AIの開発に必須とされる「プログラミング」「機械学習」「ディープラーニング」という3つの知識を紹介します。耳にしたことがある人もいるかと思いますが、AI開発が出来る能力を身に付けるためには、それぞれがどのようなものなのかを正しく理解している必要があります。

人工知能を開発するために学ぶべきこと1:プログラミング

1つ目のAI開発に必要な知識は、プログラミングです。プログラミングとは、人間が意図した行動をコンピューターが出来るようにプログラミング言語で指示を与える作業です。人間が作成したプログラムに応じて、コンピューターは行動出来るようになります。AIの開発にはプログラミングは必ず学ぶ必要があり、幅広いプログラミング言語を学ぶことでより多くの分野のAIを作成することができるようになります。

人工知能を開発するために学ぶべきこと2:機械学習

2つ目のAI開発に必要な知識は、機械学習です。機械学習とは、人間が作成したプログラムに完全に従うのではなく、提供された情報などをAIが自分で認識し、必要な判断・動作ができるようになることです。つまり、人間がゼロから全て構築するのではなく、ある程度学習が完了したら自走できるプログラムのことです。機械学習のプログラムを作成できたら、動作や判断の精度を上げるために「学習」を積み重ねる必要があります。

人工知能を開発するために学ぶべきこと3:ディープラーニング

3つ目のAI開発に必要な知識は、ディープラーニングです。ディープラーニングは機械学習に似ていますが、ディープラーニングの場合には「ニューラルネットワーク」という、人間の脳神経に似た構造を用いて機械学習よりも、より高度な判断ができるようになります。機械学習では人間が判断基準を与えなければいけませんでしたが、ディープラーニングでは与えられたデータの判断基準も自分で判断し、自走できます。

人工知能を開発するために必要なもの


では、上記のような知識を得た上で、AIを作成するためにはどのような環境を構築すればよいのでしょうか。ここからは、実際にAIを作成するために必要なものを2つ紹介します。AI作成に興味がある方は下記の2つの環境を作成して、自ら判断・行動できるAIを設計しましょう。

人工知能を開発するために必要なもの1:ハードウェア

AI作成に必要な1つ目のものは、ハードウェアです。AIの作成に必要なハードウェアには、PC端末のほかに画像処理や単純作業の処理能力が高い「GPU」、GPU程の高度な処理能力は無いものの省エネできる「FPGA」、Googleが独自に作成した「TPU」などがあります。AIを作成する目的や意図などに応じてこれらのハードウェアを準備する必要があります。

入力装置

入力装置は、コンピューター外部から内部にデータを取り込む装置です。コンピューターの外部にあるデータは、入力装置を介してコンピューター内部に取り込まれます。入力装置に該当するハードウェア本体に、その指令や動作を与える役割もあります。

入力装置に該当するハードウェアは、キーボード・マウス・タッチパネルなどです。キーボードは指でタイピングして画面上に文字を入力し、マウスやタッチパネルは手でポインターを動かして画面上での決定など判断を行います。

制御装置

制御装置は、コンピューター内部のデータについて出力装置を介して外部に送り出す際に、命令を読み解いて装置制御を行う装置です。主記憶装置にあるプログラムの命令を取り出した後に解読し、各装置に対して制御を行います。

つまり、コンピューターの内部にあるデータをコンピューター外部に出す時には、出力装置・記憶装置・制御装置が関係しています。また、制御装置に該当するハードウェアはディスプレイやプリンターなどです。

記憶装置

記憶装置は、入力されたデータやプログラムを記憶する装置です。該当のハードウェアは、ハードディスク・フロッピーディスク・CD-ROM・USBなどです。役割に応じて、主記憶装置と補助記憶装置に区別されています。

主記憶装置は実行されたデータを一時的に保持し、CPUとデータのやり取りを行います。補助記憶装置は長期的に保持し、必要な時に主記憶装置とやり取りします。アクセス速度は主記憶装置の方が良好で、容量は補助の方が大きくなります。

演算装置

演算装置は、データの計算や判断を行う装置です。制御装置から指示を受けて主記憶装置の中から演算データを取り出し、演算を実行します。データの計算や判断を専門とするため、その指示を受けない限りは動作しません。

該当のハードウェアはCPUです。指示を受けない限り動作しないと言っても、データの計算や判断はプログラムやシステムを動作させるたびに行われています。コンピューターが動作に伴い自動的に行なうため、基本的には裏で稼働しています。

出力装置

出力装置は、上記までの各装置をコントロールする装置です。コンピューター内部で処理されたデータやプログラムを、人が認識できる形にしてコンピューター外部へ送り出します。

該当のハードウェアは、キーボード・ディスプレイ・プリンター・スピーカー・イヤホンなどです。キーボード入力された文字の表示やコンピューター上の音源を流すなど、コンピューター内部に取り込まれたデータを人が視覚や聴覚などで認識できる形で出力します。

人工知能を開発するために必要なもの2:ライブラリ

AI作成に必要な2つ目のものは、ライブラリです。ライブラリとは、AIを作成する時に使える各種機能を持った「テンプレート」のことで、辞書(ライブラリ)のように様々なプログラムが用意されているツールボックスのようなものです。ライブラリを使用することで、自分でゼロからAIを作成する必要がなくなり、基本的な動作・判断についてはライブラリにあるテンプレートを使えば短時間でAIを作れます。

教師あり学習

ライブラリには3つの種類がありますが、その1つは「教師あり学習」です。「教師あり学習」とは、AIがデータ判断の練習をする際に、人間がその情報と答えを合わせて教える必要がある学習のことです。正しく判断されたデータ(教師)を元に、新たに与えられたデータを「認識・予測」しながら、判断の精度を上げていくことが可能です。人間が逐一AIの判断の正誤を修正するため、より人間が意図する行動をしやすくなるでしょう。

教師なし学習

2つ目は「教師なし学習」です。「教師なし学習」では、「教師あり学習」のように正解となるパターンは無く、与えられたデータからAIが独自にパターンを見つけます。「教師なし学習」では、自動的にデータをグループ分けする「クラスタリング」、データ内の異常値を自動で判断する「異常検知」、一緒に購入される商品を分析する「アソシエーションマイニング」、一般的なデータ処理に使う「潜在的変数モデル」などがあります。

強化学習

3つ目は、「強化学習」です。「強化学習」とは、AIの行動を改善(強化)するために行う学習で、AIが行った行動が望ましいものである場合に「報酬」を与えて、行動の精度を高めます。強化学習のライブラリには、「ChainerRL」「OpenAI Baselines」「Coach」「Dopamine」「rllab」など、様々な種類があります。

人工知能の開発に必要なその他のこと3選


人工知能の開発には、学習させるデータ・GPU・数学的知識も必要になります。学習に使うデータは量と質が重要で、GPUに関しては数と質に注目する必要があります。

数学的知識では線形代数・微分・積分・統計・確率などの分野が人工知能の開発に関係しており、これら知識があることで人工知能に関わるデータの扱いが楽になります。それでは以下に、各自の詳細について紹介していきます。

人工知能の開発に必要なその他のこと1:学習させるデータの質や量

人工知能の開発に必要なその他のこと1つ目は、学習させるデータの質や量です。自分で考えて実行するシステムを作るためには、機械学習が必要になります。そして、その学習を行うために必要なデータを用意しなければなりません。

必要な学習データの量は、解決したい問題の種類および開発の目的によります。参考になるのは、問題の種類や開発目的に合うデータセット(必要データをワンセットにしたもの)です。具体的な量を考えたい時には、データセットを参考にしましょう。

また、データの質も重要です。必要のないデータを選別したり、統一性の確保を行うことが必要になる場合もあります。これらの作業は人の目で見て判断する必要があるため、質の良い(価値のある)データの集まりにするためには人の手がかかります。

人工知能の開発に必要なその他のこと2:GPUの数と質

人工知能の開発に必要なその他のこと2つ目は、GPUの数と質です。GPUは多量データの処理速度が重要な画像や動画を専門的に処理するパーツで、人工知能において制御装置に徹する存在となりますが情報の迅速な処理に役立てられます。

GPUはCPUと混同されがちですが、GPUには処理速度を向上させる仕組みが搭載されているため、CPUとは本質的に異なります。人工知能はGPUの数と質に依存すると言われているため、開発の際はその辺りにも注意を向けましょう。

人工知能の開発に必要なその他のこと3:微分・積分・線型代数・統計・確率の数学的知識

人工知能の開発に必要なその他のこと3つ目は、微分・積分・線型代数・統計・確率といった数学的知識です。まず必要と言われる数学的知識は線形代数で、多量なデータを素早く処理して分類する時に役立ちます。

次に、微分・積分です。応用することで、多量なデータから法則性を導き出す時にその正確性を高めることができます。他の数学的知識も線形代数・微分・積分のように、人工知能に関わるデータを扱う時に役立つ知識となります。

人工知能の開発スキルを学ぶ方法3つ


最後に、AI開発スキルを学ぶ3つの方法を紹介します。現在は数多くのプログラミングスクールが開講されているため、お金を払えば誰でもプロからプログラミングを習うことができます。また、スクールに通う他にも各スクールが提供しているオンライン講義や参考書を読みながらの学習方法もありますので、それぞれの方法について紹介します。

人工知能の開発スキルを学ぶ方法1:スクールに通ってみる

AI開発を学ぶ1つ目の方法は、通学型のスクールに通ってみることです。通学型のスクールは安いものであれば3〜5万円程度から受講することができ、Webサイトの作成などの簡単なものであれば、すぐに受講できます。しかし、AIの開発やプログラミングの学習後に就職を目指す場合には30万円近くする講座もあるので、目的に応じて最適なスクールを選びましょう。

人工知能の開発スキルを学ぶ方法2:オンラインサービスを使ってみる

2つ目の方法は、オンラインサービスを使ってみることです。上記の通学型のスクールと同じ運営会社が行っているオンラインスクールもあれば、オンラインのみで授業を行っているスクールもあります。一般的にオンラインスクールの方が金額は安いです。チャットや通信電話などで質問も可能ですが、通学型のスクールのようにその場で疑問を解消することは難しいでしょう。また、通学型スクールでは可能な、チームによる開発実習などもない場合がほとんどです。

人工知能の開発スキルを学ぶ方法3:参考書を読む

3つ目の方法は、参考書を読むことです。参考書を読む方法は、金額的に安く抑えられる方法であるため、手軽にAI開発やプログラミングを学ぶことができます。しかし、上記の2つの方法のように、疑問点を誰かに質問することはできず、全て自分で試行錯誤する必要があります。こうした学習方法でもスキルを身に付けられる方は参考書による学習がおすすめです。

SE
AIは必要なものと知識があれば、誰でも開発ができるということですね。
PM
そうですね。環境を整えて、AIの開発に挑戦してみましょう!

実際に人工知能を開発してみよう!


この記事ではAIの開発について、学ぶべきことや必要なもの、さらに学ぶべきプログラミング言語とその学習方法について紹介しました。一見難しそうな印象があるAI開発ですが、プログラミングの方法さえ学べば誰でもオリジナルのAIを作ることができます。また、プログラミングはAI開発に限らず幅広い分野で需要が高まっているので、転職を考えている方は、一度学んでみることをおすすめします。


.NET分野でのキャリアアップをお考えの方は、現在募集中の求人情報をご覧ください。

また、直接のエントリーも受け付けております。

エントリー(応募フォーム)

Search

Popular

reccomended

Categories

Tags