アルゴリズムとは、コンピュータ分野における計算方法のことです。広く考えれば、何か物事を行うときのやり方だと言えます。そのやり方を試行錯誤して、より良い計算方法を見つけ出すのがアルゴリズムの研究です。
簡単な例を挙げてみます。一本のにんじんから星形の輪切りを30個作りたい場合の、効率良いやり方とは何でしょうか?一般的には、30個の輪切りを作ってから、一つひとつ星形に切っていきます。
その場合、包丁を入れる回数は輪切り30個作るために31回(両端を切り落とす回数を含む)、輪切り一つを星形にするために10回ずつ、これを30回繰り返すため[31+10×30]で合計331回も包丁を入れることになります。
これを少し工夫して、一本のにんじんにあらかじめ星形の切れ込みを入れ、それから輪切りにするとにんじんを星形にするために10回、輪切りを作るために31回なので、包丁を入れる回数は41回に減ります。331回が41回になるので、かなり効率が良くなりました。
アルゴリズムの本質はこのにんじんの例と同じであり、試行錯誤の末にもっとも効率の良いやり方を探すことにあります。
話は変わり、近年様々な分野で活躍しているコンピュータ技術といえば機械学習です。この機会学習にもアルゴリズムが使われています。そもそも機械学習とは、コンピュータにデータを読み込ませ、命令などを与えることで知能が向上していく技術です。この知能が向上していくという過程には複雑な計算が必要なため、アルゴリズムが組み込まれています。
今回紹介するのは、そんな機械学習のアルゴリズムについてです。インターネットショッピングのレコメンド機能やデジタルカメラの顔検出機能、スマートフォンの音声アシスタント機能などに活用されている機械学習。そこにはどのようなアルゴリズムがあるのでしょうか?
アルゴリズム解説参考:国立情報学研究所「アルゴリズムってなんでしょか」(http://research.nii.ac.jp/~uno/algo_3.htm)
機械学習のアルゴリズム
ディープラーニング
ディープラーニングはニュートラルネットワークと呼ばれる、人間の脳機能に似た回路を持つことで、自ら学習するアルゴリズムです。最近では、機械学習といえばディープラーニングというほどに注目されています。
通常の機械学習ではコンピュータに対し人間を、何を基準に学習するかを命令しなくてはなりません。一方ディープラーニングは、その基準をコンピュータ自ら見つけ出し、人間からの命令を待たずともどんどん知能を上げていきます。
2017年にはGoogle傘下の人工知能研究会社が、Alpha GOというコンピュータ囲碁で世界トップ棋士に勝利するなど、目覚ましい発展を遂げている分野です。
パーセプトロン
パーセプトロンはニュートラルネットワークの一種で、人間の神経細胞であるニューロンをモデル化したものとして知られています。人間の神経細胞は樹状突起という部位で他の細胞から複数の入力を受け取り、入力が一定値に達すると信号を出力します。これをモデル化したものとして形式ニューロンが提唱され、のちにパーセプトロンに発展します。
パーセプトロンは機械学習の基礎でもあり、受信したメールがスパムメールかを判断する、といったように与えられたデータを2つに分類する単純な機械学習に活用されています。
ロジスティック回帰
ロジスティック回帰は統計学や医学の分類で活用されるアルゴリズムです。パーセプトロンのように「0か1」かではなく、物事の発生確率を分析するために使用します。ロジスティック回帰を使用すると、データを分類する際に、分類に対する信頼を得られるというのが特徴です。
トピックモデル
トピックモデルは大量の文章の中から関連する事項や、話題になっているトピックを抽出する際に広く使用されています。いわば単語が発生する確率を分析するためのアルゴリズムなので、著作権違反を検査するためのコピペチェックツールなどにも活用されています。
ナイーブベイズ
こちらもテキストの分類に使用されるアルゴリズムです。例えばメールのスパム判定や、Webに投稿された記事内のタグ付けなどに活用されています。単純ベイズ分類器とも呼ばれます。
・バンディットアルゴリズム
バンディットアルゴリズムは目的とする変数の拡大に向けて、試行錯誤を繰り返していくというアルゴリズムです。いわば、答えのない状態から最良の選択を行うための機械学習だと言えます。
身近なところでは検索エンジンの結果表示において、最適なコンテンツを表示するための機械学習として活用されています。
・決定木学習
決定木学習とは、ある事象に至るまでの条件は何かを分析するための機械学習です。例えば、インターネットショッピングにてAという商品を購入するまでの条件を分析します。商品を購入した、購入しなかった消費者のデータ(性別、年齢、地域)をもとに条件を分岐していき、どういった条件ならばAという商品を購入するのかという知見を見出します。
条件ごとに枝分かれしていく樹木型のかたちをした図が完成するので、コンピュータも人間も理解しやすいアルゴリズムです。
・K-means
K-meansはクラスタリングと呼ばれる、性質の近いデータ同士をグループ分けするためのアルゴリズムです。事例としては、マーケティングにおける顧客のグループ分けなどが該当します。
データを分類するクラスタリングの中では古典的なアルゴリズムの一つなので、汎用さに富んでいます。
・Random Forest
Random Forestは先述した決定木学習を複数活用し、その結果を組み合わせることで分析精度を上げるためのアルゴリズムです。ただし、Random Forestでは大量のデータを活用するため、決定木学習より難易度が高くなる傾向があります。
機械学習の中では最近提唱され出したアルゴリズムであり、身近なところではMicrosoftのジェスチャー入力や音声認識に可能にするKinectというセンサーに活用されています。
・SVM
SVMはパーセプトロンを発展させたアルゴリズムで、基本的には与えられたデータを2つに分類するための活用します。他のアルゴリズムに比べて精度の高い結果を得られるのが特徴です。
機械学習を導入するために
いかがでしょうか?機械学習のアルゴリズムには実に様々な種類があり、用途によって使い分けるのが基本です。ただし、共通していえることは、どのアルゴリズムでも大量のデータをコンピュータに与えるため、それらのデータを高速に処理するためのシステムが必要になります。
たとえばインテリジェンスモデルが提供するODIPは、大規模なバッチ処理も高速に行えることで、機械学習の素早い知能向上を支援します。
機械学習は様々な分野で注目され、発展している技術です。しかし、その導入のためには複数のシステムを導入したりと負担が大きくなりがちです。こうした負担を少しでも軽減しつつ、適切な機械学習導入を目指すためには、ODIPのようにデータ処理を高速化するシステムの導入をおすすめします。
最後に、今回紹介したアルゴリズムの数々は、あくまで基本的な概要のみを記載しています。実際に機械学習として実装するには専門知識と技術が必要になるので、慎重な導入を行いましょう。