【エンジニア向け!】人工知能の作り方を徹底解説

こんにちは!

ITエンジニア・webディレクター・webデザイナーなどのIT人材の自立・キャリアを支援するITプロパートナーズの木村です。

弊社では、独立精神旺盛な優秀なエンジニアの方々の独立・起業サポートや、フリーランス支援を行っています。
こちらでは、日々の現場でサポートさせていただいている中での、プロの目線で、エンジニアに役立つお話をしてまいります。

近年、ニュースなどで見かけない日は無いといっても過言ではない「人工知能(Artificial Intelligence)」、略称AI。
実は、この人工知能は1つではなくいくつか種類があること、また歴史は非常に長く始まりは1950年代後半というのはご存知でしょうか?

それだけ歴史が長く、いくつも種類がある人工知能、実は皆さんが思っているよりも、意外と簡単に作れてしまうんです!

そこで今回は、人工知能や作り方について徹底的に解説していきたいと思います。

そもそも人工知能とは?

タイピングするロボットの手

まず、人工知能とは人間の考え方や判断力など知的な動作をソフトウェアを用いて再現したプログラムのことをいいます。

例えば、人間は動物を見た時に「何の動物か?」を瞬時に判断することができます。それは、目などから得た情報を過去の知識や経験と照らし合わせて判断をしているからです。

これと同じことをAIでも行わせ、人間の脳で起こっている「推測」をコンピューターで実際に再現しています。

しかし、現状、人工知能については研究者の解釈が千差万別のため、厳密な定義は定められておりません。一般的な解釈をすると「人間の脳を模して作られた概念および技術」と理解すれば十分です。

そんな人口知能に種類があるって皆さんご存知でしたか?。

強いAIと弱いAI

shutterstock_566808703-min

AIには用途によって「特化型人工知能」「汎用型人工知能」に分けられます。

特化型人工知能といえば、2016年に囲碁のプロ棋士に勝利した囲碁AI「AlphaGo」などが有名です。

さらに、SF映画に出てくるような汎用性が高く人間のように考え行動するものを「強いAI」と呼びます。
それに対し、人間のような自意識や汎用性はないが1つの行動に特化しているものを「弱いAI」と呼びます。

現在実現されているAIは、この弱いAIだけです。

そんなAIは、現在第3次AIブームで成長を遂げようとしています。

人工知能と機械学習の関係性

shutterstock_246197914

第3次AIブームの火付け役となったのが、機械学習からさらに進化した手法ディープラーニングによるAIの進化です。

これらの関係性ですが、人工知能を研究している過程で生まれた手法が機械学習であり、
この機械学習から生まれた新しい手法の1つがディープラーニングです。

ディープランニングについては後ほど触れようと思います。

そもそも、機械学習とは、人工知能に人間と同等の学習機能をコンピューターで実現させる技術・手法のことです。

人間と同じように、膨大なデータを入力し特徴を見つけ出せるようにします。機械学習は大きく分けて以下の3種類があります。

①教師あり学習

②教師なし学習

③強化学習

① 教師あり学習

まず、「教師あり学習」とはあらかじめデータと特徴を紐づけておくことにより、新しいデータの分類先を予測する手法です。

過去のデータから、特徴を学習することで新しいデータとの関連性を見つけ出し判別します。

一般的に「過去のデータから将来的に起こりそうなことを予測する」場合に使え、「迷惑メールの判別」「天気予報」などに用いられています。

② 教師なし学習

次に、「教師なし学習」とは、あらかじめ正解を与えずにコンピューターに答えを導き出させます。

ある程度の基準データを与え、そこから新しいデータがどのグループの特徴に近いかを判別し精度を上げていきます。

用途として、おすすめ商品を紹介する「レコメンド機能」などに使われています。

③ 強化学習

最後に、「強化学習」では、固定的で明確な答え(データ)を元に学習はしません。

プログラム自体が自分の与えられた環境を観測し、連続した行動の結果、最も報酬が多く得られる行動を自ら学習し選択していきます。

また、その度に行動についての評価も更新します。

有名なものですと、囲碁のプロ棋士に勝った「AlphaGo」、自動車の自動運転などに応用されています。

わかりにくいと思うので、もっと身近な活用例を見てみましょう。

身近な機能にも機械学習は使われている

shutterstock_409305979-min

例えば、顔認識なども機械学習により学習したデータが使われています。

ディープラーニングの主要アルゴリズムには、畳込みニューラルネットワーク(CNN)というものがあり、これを使うことで画像認識の精度はかなり向上しました。

Googleでは、画像に写っている人の表情分析、画像の文字認識までできるほどの高性能になっています。

次に、機械学習は自然言語の分野でも応用されています。

話し言葉を理解し、適切な回答を出すバーチャルアシスタントやチャットボットなども応用例です。

また、Google翻訳にも使われているなど、いまや人工知能と機械学習はあらゆる分野で応用されています。

以上、簡単に人工知能について説明しました。

すでにある程度の人工知能を作れるという方は、今後様々な業界で人工知能に携わる仕事を行うことで
社会的に価値のあるエンジニアになることができるでしょう。

ITプロパートナーズへの詳細はこちら

一方で、人工知能初心者が、人工知能を作るのに必要なスキルとは何なのでしょうか?

 人工知能を作るのに最低限必要なスキルって?

shutterstock_575090047 (2)

まず、人工知能を作るために最低限必要なスキルに数学の「線形代数」「微分積分」「統計」という3つの分野を理解する必要があります。

線形代数は、複数の値を1つの式で扱う際に使い、機械学習をする上で最も重要な知識です。

微分・積分は、機械学習の学習をする際に必要になります。数多くあるデータから境界線を作り、その境界線から分類分けしたり未来のデータを予測したりする際に必要になります。

統計学ですが、これは今までのデータから考えられる目標を設定する際に使用します。

特に、線形代数の膨大な数字を扱うことができる「行列」という分野が、大量のデータを処理し分類する際に機械学習で役に立つため、必ず理解しておくようにしましょう。

最低でも、それぞれ情報系の大学1.2年生で習う必修科目レベルで、以上の数学や統計を理解しておくと、人工知能の学習は楽になります。

次に、人工知能に必要なプログラミング言語について触れようと思います。

Pythonとライブラリ

shutterstock_366126065

現在、機械学習で人気なプログラミング言語といえば、Pythonを利用したライブラリです。

海外では教育用として非常にメジャーな言語ですが、日本ではRubyやPHPが強いためマイナーな部類になります。

Pythonが人気な理由に、これまで科学計算や機械学習ではR言語の方がパッケージの充実、機能の豊富さと有利な点が数多くありました。

しかし、Pythonを教育言語として採用する大学が増えたこと、また敷居が低いことも魅力の1つだと思います。

もちろん、いまだにマニアックな統計処理や多変量解析のライブラリはR言語の方が充実しているといえます。

以上の知識を身につけ、人工知能を理解するには何をすればいいのでしょうか?

人工知能を理解するには?

Fotolia_101960875_Subscription_Monthly_M-min

基礎知識については上記に記した通りです。

それでは、人工知能を理解するためにどのように勉強をしていけばいいのか?

それは、要となる「機械学習」「ディープラーニング」について深く理解する必要があります。

機械学習は「大量のデータからそこに潜むパターン(特徴)を見つける」こと、

そしてディープラーニングは「学習したデータから事象の認識や分類を行う」ことです。

そしてこれらを理解するためには、数学の知識の他に、人間の脳を模した「ニューラルネットワーク」というアルゴリズムの知識が必要です。

現在、AIブームの中、こうした知識を身に着けるのは以前より簡単になってきています。

ライブラリやフレームワークの活用

現在、AIブームの影響もあり、さまざまなディープラーニング関連のライブラリが作られています。

これらのライブラリは無償で利用することができ、簡単なチュートリアルも用意されています。

本来、機械学習を理解するのには十分な勉強が必要になり、一朝一夕で完全に理解できるものでもありません。

現在ではさまざまな勉強の仕方がありますが、やはり「習うよりも慣れろ」という気持ちでネット上の実施レポートを元に、ライブラリやフレームワークを活用しプログラムを組んでみるのが、一番理解が早いかもしれません。

最後に、機械学習を独学で勉強するうえでおすすめのライブラリ・フレームワークをご紹介します。

おすすめのライブラリ・フレームワーク

これからご紹介するライブラリ・フレームワークは、利用者の方も多くインターネット上に実施レポートがよく掲載されているため、初心者の方でもそれを見ながら簡単に利用することができます。

①Keras

KerasはPythonで書かれており、TensorFlowまたはCNTKなどで実行可能な高水準のニューラルネットワークライブラリです。

Kerasを使用することにより、ディープラーニングのベースとなる数学的理論を比較的短いソースコードで実装することが可能です。

また、アルゴリズムの多くを実装しているのもKerasの特徴といえます。

文書の自動生成や、画像認識、botに応用することができます。

また、Kerasは特別な専門知識がなくてもコードを書くことができる点は、大きな魅力だと思います。

②Kaggle

世界中から、40万人以上のデータサイエンティストが集まるプラットフォームがKaggleです。

企業がコンペ形式で課題を提示し、最も精度の高い分析モデルを制作した人に賞金を提供します。

AmazonやFacebookといった、世界的企業もコンペを実施し話題になっています。

これだけ聞くと初心者は場違いな気がするかもしれませんが、初心者だからこそKaggleを始めることで、データ分析の一連の流れを経験し理解を早めることができます。

データ分析のほとんどは、統計解析や機械学習をするためのデータの準備に使います。

つまり、データを読み取る力を付けるためにも、データを見ることから始めるのが最適な勉強になるといえます。

③Numpy

Pythonの数値計算を効率的に行うためのライブラリであるNumpyですが、
これを使うことによりベクトルや行列などを必要とするデータの処理を、簡単に行うことができるようになります。

また、Pythonで行うよりも非常に高速で処理していくことが可能です。

多次元配列に対して行われる演算を効率的に行えるようになるため、Pythonの機械学習では必須のライブラリといえます。

④pandas

Pandasは、データを効率的に扱うために開発されたPythonのライブラリの1つです。

データ分析を効率的に行うことができるようになり、データの読み込みや統計量の表示、データ分析に関する作業を簡単に行うことができます。

また、主要なコードはCython、もしくはC言語のため、Pythonだけでデータ分析を行うよりも高速で処理をすることができます。

機械学習を行うまでの重要な前処理に、pandasを使うことで効率的に進めることができるようになるライブラリです。

まとめ

shutterstock_431991460 (1)

いかがでしたでしょうか?

現段階ではまだまだ課題が多い人工知能ですが、特化的に、既に人間を超えている部分もあります。

今後は、さらに新しい手法が発見されAIはまだまだ進化していくことでしょう。

時代の波に乗り遅れという意味でも、興味のある方はまず、人工知能関連の仕事に携わってみるというのも一つの手かもしれませんね。

ITプロパートナーズへのご登録はこちら

bn04

もし、今あなたが

・フリーランスになるか悩んでる
・自分に合った案件があるのか不安
・そもそも何から始めればいいのか分からない

などお困りであれば、ぜひ弊社ITプロパートナーズの案件を確認してみてください!

専属エージェントに無料相談もできますよ!

※週2日 / 30万〜のフリーランス案件を紹介中です
※ご経験やご希望によっては案件を紹介できない場合がございますのでご了承ください。


よく見られてる関連案件

b80c977483d024c14549510e194361fe 2_anken 3_anken
The following two tabs change content below.
株式会社ITプロパートナーズ

株式会社ITプロパートナーズ

「IT起業家・フリーランスの自立を支える」というビジョンの元、「週2日からの業務委託案件を紹介する、ITプロパートナーズ」を運営。 ■BestVenture100に創業初年度で選出 ■取材記事:自立する覚悟が、働き方を変える
株式会社ITプロパートナーズ

最新記事 by 株式会社ITプロパートナーズ (全て見る)

freelance