人工知能とは
人工知能と聞くと難しいイメージがありますが、今や小学生など子供向けに人工知能(AI) 教育を導入する時代となりました。エンジニアの皆さんの中にもAIに興味を持つ方は少なくないでしょう。
機械学習は分かるけれど、そもそもAIとは何かについては漠然として分からないという方もいるかもしれませんね。実は皆さんの多くは既にAIを利用しています。たとえば、iPhoneの「Siri」や、Androidスマホに搭載の「Googleアシスタント」もAIの1種です。
日々利用している天気予報でもAIが用いられています。このように、私たちの生活にAIは欠かせない存在になっています。これから、エンジニアとして最低限押さえておきたい人工知能(AI)に関する基本知識について解説をしていきます。
【参考】:AIエンジニアとは?仕事内容と求められるスキル・知識について|マイナビAGENT
人工知能の歴史
「人工知能(AI : Artificial Intelligence)」という言葉が生まれたのは、1956年のことです。アメリカ・ダートマス大学で行われたダートマス会議にて、計算機科学者で認知科学者のジョン・マッカーシーによって提唱されました。
初期のAI研究では、ゲームや数学問題など特定のルールのもとにある問題に対する解答を導き出せるようになりました。現実社会で起こり得る複雑な問題には対応できなかったものの、後のディープラーニングに用いられるニューラルネットワークの元となる「パーセプトロン」が考案されています。
1980年代になると、「エキスパートシステム」が誕生します。エキスパートシステムは自己学習はできませんが、特定分野の専門知識をルール化して取り込み、問題に対する対処方法や判断を導き出すことができます。
そして、2000年代初頭から現在にかけてAIは目覚ましい発展を遂げています。ビッグデータを用いた「機械学習」の研究や人間の脳をモデルにしたニューラルネットワークによる「ディープラーニング」が盛んになり、AIの性能はますます向上し、あらゆる分野に活用されるようになっています。
機械学習とディープラーニングの違い
「機械学習」も「ディープラーニング」もよく聞く言葉ですが、「機械学習」は人工知能(AI)の学習のこと、「ディープラーニング」はその内の1つの手法を指します。
機械学習には「教師あり学習」「教師なし学習」「強化学習」の3つの種類があります。いずれでもコンピュータがデータに基づいて学習し、より正確な予測や問題の検知ができるようになります。
機械学習では各データの特徴を抽出する必要がありますが、この特徴を人間が教えるのではなく、AI自身が抽出できるようにしたものが「ディープラーニング(深層学習)」です。
ディープラーニングに用いられる「ニューラルネットワーク」は多層構造になっており、それぞれの層が連携することで教わっていない部分に関しても判断や推理ができるようになります。
人工知能に対する誤解
人工知能は私たちの身近な存在になりつつありますが、意外に人工知能については正しく理解されていません。まず人工知能そのものの定義は定まっておらず、人工知能というよりは、多くの人にはAIという言葉で認識されています。
そもそもAIとは「Artificial Intelligence」の略称であり、「人の持つ知覚や知性などを人工的に再現するもの」として一般的に理解されています。AIはテクノロジーですが、学術分野としてはコンピューターサイエンス・認知科学・医学・哲学・心理学などさまざまな分野にまたがっており、いまだに議論や論争が続いています。
また、AIを全知全能と見る人もいますが、人間を超えるような汎用的AIはまだ存在していません。とはいえ、特定の領域では人の能力を遥かに超えるAIが登場し、それらが人の仕事を代わりに行うようになりつつあります。例えば、医療診断や金融取引などのさまざまな分野で活躍を始めています。
いずれにしても、AIが我々エンジニアにとっては避けて通れない分野であることは間違いありませんので、まずはAIに対する正しい認識と理解に努めておく必要があります。
人工知能と2045年問題
AIは進化を続けながら徐々に人間に近づきつつあり、2045年にはAIが人類を超えるシンギュラリティ「技術的特異点」がやってくるという2045年問題が話題を集めています。
シンギュラリティが起きると、大きな変化が訪れると見られています。例えば、仕事の概念が変わり、人の仕事がAIに置き換わると言われています。今でもその動きはありますが、スーパーマーケットや銀行は無人化され、レストランもAIが調理しロボットが配膳するようになるでしょう。
タクシー運転手や警備員の仕事もAIに置き換わります。またAIが暴走をする危険性も指摘されています。ただし、この2045年問題については賛否両論があり、シンギュラリティを否定的に受け止める専門家はAIの危険性やデメリットを懸念材料としています。
【参考】:人工知能の世界的権威が語る、テクノロジーがもたらす人類の未来 | マイナビニュース
人工知能(AI)とアルゴリズム
エンジニアの皆さんは日々アルゴリズムと関わっていると思いますが、特にAI分野でアルゴリズムは必須です。分かったようで分からないアルゴリズム、ここではAIとの関係について易しく解説していきます。
アルゴリズムとは
アルゴリズムとは、簡単にいえば手順や計算方法のことです。コンピューターが瞬時に計算やデータ処理をしてくれるのは、アルゴリズムがあるからです。
このアルゴリズムを組み込んだものがプログラムです。プログラマーは最適なアルゴリズムを編み出し、プログラミングという形でこれを具現化します。つまり、アルゴリズムはプログラミングを行う上での基礎なのです。
人工知能(AI)開発でアルゴリズムが重要な理由
AIは自ら学習を行いながら賢くなれるコンピューターを指します。このAIが行う学習が「機械学習」です。
「機械学習」ではコンピューターは膨大なデータを処理、分析する中でパターンや特徴を見つけます。そして見つけたパターンや特徴から答えを推測するのです。パターンや特徴などを表現するためのモデルを構築するのに必要なのがアルゴリズムです。
すなわち、AIが学習する過程においてアルゴリズムは非常に重要な役割を担う技術となっています。
アルゴリズムが処理できるもの
皆さんが普段利用しているスマホのSiriなどの音声アシストは、皆さんの声を認識して反応しています。それは音声認識アルゴリズムがあるからです。アルゴリズムが処理できるものとしては、数値以外に自然言語や音声、画像などがあります。
AIのアルゴリズムでは構造化データを扱うため、数値化されていない音声や画像データは一旦数値に置き換えられます。続いてAIによってその特徴が抽出され、パターンを発見し、モデル構築を行ってから自動的に認識処理を行います。
人工知能(AI)開発におけるアルゴリズムの種類
アルゴリズムにはさまざまな種類がありますが、AI開発において、アルゴリズムは大きくは3種類に分類できます。以下、3種類のアルゴリズムについて解説します。
分類アルゴリズム
教師あり学習(与える情報と正しい判断をセットにし、コンピュータにパターンを学習させる手法)の一部で、与えられたデータを種類や特徴によって分類をします。
犬の画像と猫の画像を学習させ、犬の画像を読み込んだ時にAIが犬だと認識して分類できるようにするアルゴリズムなどがその例です。皆さんの身近なところでは、スパムメールフィルターなどが分類アルゴリズムの典型的な例です。
回帰アルゴリズム
こちらも教師あり学習です。これは過去に学習したデータから、特定の結果を予測させるアルゴリズムです。例えば、天気予報では過去の気温から明日の気温を予測したり、企業においては過去の売り上げから未来の売上予測を行ったりするのが回帰に当てはまります。
クラスタリングアルゴリズム
教師なし学習アルゴリズムです。データから類似性を発見し、グルーピングを行います。例えば、ネットショッピングのレコメンド機能にクラスタリングアルゴリズムが活用されています。クラスタ分析とも呼ばれ、マーケティング分野ではよく利用されています。
人工知能(AI)の作り方
今や中学生が人工知能(AI)を利用したり、AIを開発したりする時代です。では、人工知能(AI)とはどのようにして作るのでしょうか?人工知能(AI)を作る際の大まかな流れを紹介しますので、イメージをつかんでください。
【参考】:AIを使ったプログラミングに挑戦!オンラインイベント【中学生限定】 | マイナビニュース
何をするのか、目的を決める
人工知能(AI)の開発に際しては、まずは目的を明確にすることです。何をしたいのか、AIによって何を解決したいのかが決まれば、AI開発に必要なアルゴリズム・データ・学習方法などが決まるからです。
機械学習に必要なデータを集める
人工知能(AI)開発では「機械学習」が欠かせませんが、機械学習を行うためには膨大なデータが必要です。今、さまざまな企業がビッグデータを集めているのも、AIに機械学習をさせてビジネスに必要な情報を得るためです。
AIに必要な「学習済みモデル」を作る
「学習済みモデル」とは、AIが画像認識や音声認識のパターンをすでに学習して覚えているモデルです。これを利用できれば、モデルを1から作らなくとも済みます。
学習済みモデルとして有名なのは、Googleの機械学習のソフトウェアライブラリ「TensorFlow」です。「TensorFlow」は学習済みモデルとして最も利用されているフレームワークで、Python・Java・C言語・C++・Juliaでの利用が可能です。
プログラミングによりAIを組み込む
機械学習を行うことで解析されたデータを活用し、ユーザーにAIサービスとして提供するためには、プログラミングを行う必要があります。
AIサービスの提供方法としては、Webアプリ・スマホアプリ・LINEのチャットボットなどを利用します。ここまでが、AIの作り方の大まかな流れです。
今はクラウドサービスとしてこれらを簡単に行える環境も整っていますので、クラウドサービスについてもぜひ研究してみてください。
人工知能(AI)開発に用いる言語
AIのサービスを開発するために用いるプログラミング言語について見ていきましょう。実際にAI分野で用いられている言語は数多くありますが、ここではAI開発でよく利用されている言語として4種類紹介します。AIエンジニアを目指す方はぜひ参考にしてください。
Python
AI(人工知能)のプログラミングで最もよく使われているプログラミング言語です。Pythonは文法構造がシンプルで理解しやすく、機械学習向けのライブラリが充実している点が評価をされています。他、PythonはWebアプリやゲーム開発などでも利用されるなど汎用性の高さも人気の理由です。
R言語
R言語もAI(人工知能)開発に適したプログラミング言語です。R言語はもともとは統計学やデータ解析などで使用され、特に学術分野では多く使われてきました。データサイエンティストを目指す方を中心に、民間企業などでもR言語が注目されています。
C++
プログラミング言語の元祖と言われるC言語にオブジェクト指向が追加され、プログラミングの効率が高いのが特徴の言語です。C++はAI開発でもよく使われ、C言語とも互換性が高く、同時に使うことが可能です。AI開発以外に、Webアプリやスマホアプリの開発にも利用されています。
Julia
AI開発用の言語として最近注目が集まっている言語です。Juliaはスクリプト言語でありながら高速処理が可能であり、かつ文法構造もシンプルで覚えやすく、扱いやすいという特徴を兼ね備えています。
しかも、PythonやR言語のライブラリもJuliaから扱えるため、今後はAIプログラミングの主流になる可能性を秘めています。
AIエンジニアは将来性が高い
ここまで人工知能(AI)に関して、エンジニアとして最低限知っておきたい知識を中心に解説してきました。AIビジネスはDXブームと相まって、急速に成長しており、一方でAIエンジニアの不足が指摘されるなど、将来性の高い分野としても期待が高まっています。
就職や転職において、AI開発に関するスキルを有する方は優遇される可能性が高いと見られます。この記事で人工知能(AI)に少しでも興味が湧いた方は是非、AI開発に適したプログラミング言語の勉強を始めてみてはいかがでしょう。
編集部オススメコンテンツ
アンドエンジニアへの取材依頼、情報提供などはこちらから