実践型AIプログラミング特講 python #1

実践型AIプログラミング特講 python #1

今回はファイナンスと打って代わり、プログラミング特に機械学習やAIなど何かと世間を賑わすホットな話題について取り上げます。これから機械学習やAIについて業務上必要な方やプログラミングを触れてみたいけれど何から手をつければいいのか迷走している学生など必見のコンテンツになっております。

長編シリーズになると予想されるので気長にプログラミングを通してディープラーティングやAI分野に精通するプロフェッショナルになりましょう。また、今後当社にて実装予定のプログラミングコミュニティのご案内をさせていただいておりますのでプログラミングについてのノウハウやメソッドを深めたい、また共に研鑽するプログラミング仲間を探している方、プログラミングに対してどう着手すればいいのかわからない学生に向けたプログラミング促進コミュニティになっています。ぜひご興味がある方は専用googleformよりご案内致しますのでお時間に余裕がある際にご登録だけでもよろしく御願い致します。

機械学習/ディープラーニングについて

機械学習とは?

『機械学習(machine learning)』とは何でしょうか。一言で言うなら、人間の学習能力と同様の機能をコンピューター上で実現しようとする技術と言えます。そもそも、機械学習とは、人工知能における研究課題の1つです。そして『AI(人工知能)』とは、人間が本来持っている知的能力をコンピューター上で実現する技術です。人間は、多様な事柄を学習できます。見るもの、聞くもの、触るものなど、五感を用いてさまざまな事象を感じ、それを識別できます。

たとえば、目の前にリンゴとミカンがあれば、それを見たり、触ったり、時には食べて味わったりすることで識別しています。それは、経験から自然にリンゴとミカンを学習しているので識別できるのです。しかし、元来コンピューターにその識別能力は備わっていません。それでは、どのようにしたら、リンゴとミカンを識別できるでしょうか。ここでは、コンピューターでリンゴやミカンを判定するために、デジタルカメラで撮影した画像を用いることを考えてみましょう。一般的な識別プログラムを作る場合には、画像データの画素を調べて、赤色の要素が多い場合は「イチゴ」橙色の要素が多ければ「ミカン」と判定でさるでしょつ。このようなプログラムを作る場合には、画素の統計を調べ、赤色の要素が4割を超えていればリンゴと判定し、機色の要素が4割を超えていればミカンと判定するなど、人間がルールを決めることになります。これに対して、機械学習を用いて判定する場合には、人間が明確なルールを決めることはありません。

つまり、リンゴは赤色、ミカンは橙色という情報を与える必要はありません。機械学習の手法では、とにかくたくさんのリンゴとミカンの画像データを用意しておいて、それを識別器と呼ばれるプログラムにたくさん与えます。そうすることで、識別器が自動的にリンゴは赤色の要素が多く、ミカンは橙色の要素が多いということを学習するのです。つまり、機械学習では事前に与えた大量のデータにより、その特徴を学習します。そして、その特徴を利用して、識別器が自動的に新たなデータを判定します。

機械学習で何ができるのか?

機械学習でできることには、次の種類があります。

分類(classification)

与えられたデータを分類

回帰 (regression)

過去の実績から未来の値を予測

クラスタリング (clustering)

データを似たものの集合に分類

推薦 (recommendation)

データの関連情報を導き出す

次元数を削減(dimensionality reduction)

データの特徴を残して削減

異常検知 (anomaly detection)

データの中の異常を検知

1つずつ見ていきましょう。

「分類」とは、その名の通りで、先ほどの例にも出したように、リンゴとミカンがどちらなのかを判定することです。そのデータの特徴を調べ、リンゴとミカンのどちらに分類できるのかを判定します。

「回帰」とは、過去のデータを学習して、将来の数値の予測を行うことです。たとえば、過去の株価を学習して将来の株価を予想したり、過去の気象情報を学習して天気や気温を予測します。市場予測や、需要予測などいろいろな分野に応用できます。

「クラスタリング」は、たくさんのデータのなかで集まり(似たもの)を見つけて、グループ分けすることです。「分類」と似ていますが、区別されます。分類ではデータをあらかじめ決まった分類項目(クラス)に分けますが、クラスタリングではあらかじめ決まった項目に分けるのではなく、データを似たものに区分けする点が異なります。

「推薦」とは、与えられたデータから異なる情報を推薦するものです。ネットショッピングで、ユーザーの階好から別の商品の推薦を行う機能などに利用します。

「次元数を削減」とは、文字通りデータの次元数を減らすことです。さまざまな要素を含むデータを分析しないといけない状況はよくあります。そうしたデータを扱う場合、かなり大きな次元のデータを処理することになります。しかし、それらに備わっている特徴的なデータを特定して次元を削減すると、効率的に分析できます。たとえば、食品に合まれる、さまざまな成分を分析したデータを、二次元のグラフ上に表現するのは物理的に不可能ですが、次元削減することでデータの特徴を抽出し、グラフに描画できます。

「異常検知」とは期待されたパターンやデータ集合から外れたデータを検出する技術です。通常のパターンとは異なる挙動を検出することで、健康異常や機器の誤動作、またクレジットカードの不正利用などを検出することができます。具体的に機械学習を何に適用できるか?これらを具体的に、何に利用できるかと言うと、以下の処理に適用できます。

画像解析

画像に映っている物体を判定

音声解析

音声からテキストに変換、どんな音なのか判定

テキスト解析

文章のカテゴリー分け、特定表現の抽出·構文解析

画像解析は、画像や動画などのデータを対象にします。画像に映っている物体を判定したり、人の顔を検出したり、そこに書かれている文字を認識することもできます。音声解析は、犬と猫の鳴き声を判別したり、男性か女性のどちらの声なのかを判定したりできます。最近の機械学習のトレンドは、音声をテキストに変換することでしょう。スマートフォンに備わっている音声認識も十分実用化されていますし、Google Home や Amazon Echo などスマートスピーカーも話題になっています。テキスト解析は、文章の内容に基づいてカテゴリー分けしたり、構文を解析したりします。迷惑メールの判定を行ったり、ブログ記事を自動でカテゴリー分けすることも可能です。また、構文解析や自動翻訳などにも活用されています。

 

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

現在「第三次 AI ブーム」が到来しており、さまざまな分野で人工知能が利用されています。こうしたAIブームの火付け役ともなったのが、ディープラーニング(深層学習)です。そもそも、画像認識において、ディープラーニングの手法が大きな成果を収めたため、音声認識や、その他のいろいろな分野で実用化されるようになりました。しかし、ディープラーニングは突然登場したわけではありません。これは『ニューラルネットワーク』を改良したものと言えます。人間の脳の神経回路の構造を模倣した「ニューラルネットワーク」を多層に組み合わせることで実現したものです。

以上が記念すべきAIプログラミング特講の第一弾となります。今後は具体的なコーディングを踏まえた上であらゆる角度から可用性に富んだアルゴリズムをご紹介させていただくことが多くなると思うので次回以降の記事も一読していただけると幸いです。

プログラミングカテゴリの最新記事