その他のアルゴリズム

現在用いられている様々なアルゴリズム

ここまで、基本編、応用編を通して様々なアルゴリズムを紹介してきました。しかし、世の中にはもっとたくさんのアルゴリズムが存在し、日々様々な状況で使用されていますが、残念ながらここではすべてを紹介しきれません。そこで、ここではその中から、現在とくによく用いられているものをいくつかピックアップし、紹介していきたいと思います。

検索エンジンアルゴリズム

検索エンジンとは

おそらく、現在、世界中でインターネットを使う人が最も多くの使っているのが、ここで紹介する検索エンジンのアルゴリズムでしょう。検索エンジンとは、googleなどのような検索サイトで、キーワードなどを基にウェブサイトを検索するシステムのことです。検索エンジンは、サイトの情報を収集し、独自の方法でランキングをつけて、検索結果を出力します。この時にランキングに用いられるのが、検索エンジンのアルゴリズムなのです。

アルゴリズムについて説明する前に、検索エンジンの仕組みを説明します。検索エンジンは、以下のような仕組みでウェブサイトの検索を実現しています。

  1. クロール…検索キーワードが入力される前に、独自に世界中のWebページを収集します。これをクロールと言います。
  2. インデックス…クロールによって検索したデータを登録・整理します。
  3. キーワードの解析…ユーザーからのキーワードを解析し、その内容を把握します。
  4. スコアリング…ランキングアルゴリズムを用いて、インデックスされているWebページを評価し、点数をつけ(スコアリング)します。
  5. 結果の出力…点数の高い順にランキングを付け、最終的な調整がなされて検索結果に表示されます。

ランキングアルゴリズム

以上の要素のうち、googleなどのような検索エンジンが独自性を持っているのが、4.のスコアリングで出てきたランキングアルゴリズムです。このアルゴリズムは、様々な検索キーワードと、それに関連したWebページの順位づけをするアルゴリズムです。その評価方法は、ページ内のキーワードの出現率は、使われ方、外部からのリンクの数など様々です。

このアルゴリズムは非公開であり、大小さまざまな更新が日々なされています。このアルゴリズムを予想し、Webサイトの検索ランキングをなるべく高くしようとすることを、SEO(search engine optimization:検索エンジン最適化)と言います。

レコメンドアルゴリズム

関連する商品の推薦

インターネットの通販サイトで買い物をすると、「この商品を買ったユーザーは、以下の商品も購入しています」というメッセージとともにおすすめ商品を表示したり、過去の購入履歴から、おすすめの商品を紹介してくるような仕組みが存在します。

このように、ユーザーの様々な情報を基に商品やサービスなどを推薦するようなアルゴリズムのことを、レコメンドアルゴリズムと呼びます。

集合知

レコメンドアルゴリズムに必要となるのが、集合知(しゅうごうち)と言われるものです。集合知とは、多くの人による大量の情報の寄せ集めの集計のことを指します。より具体的に説明するのなら、たとえばリンゴの好きな人がいたとしたら、リンゴのみならず、リンゴで作ったジュース、リンゴの入ったお菓子なども好きなはずです。

そのため、そういった人たちは、日ごろ、何らかの「リンゴに関連するもの」を買ったり、消費したりしていることでしょう。リンゴ好きの人たちは、たとえお互いのことを知らなくても、そういった情報を集めると、「リンゴに関連したものを多く買う傾向にある」という情報がわかるはずです。これが、集合知です。

強調フィルタリング

レコメンドアルゴリズムは、こういった集合知の性質を利用しています。レコメンドアルゴリズムには、いくつか種類がありますが、ここでは、一番ポピュラーな、強調フィルタリングについて紹介します。レコメンドアルゴリズムで一番話題に登るのはこのアルゴリズムです。これは、ユーザーの行動履歴からお勧めのアイテムを決めるあるごりずむです。

前述のリンゴの例でたとえるのなら、Aさんがリンゴのジュースを買ったとします。この商品を買った人の中には、リンゴのお菓子を買う傾向が強ければ、Aさんに、そういった商品の購入を勧めます。このように、商品間の関連性が強いものを進めるタイプをこれを、アイテムベース協調フィルタリングと言います。

Aさんの年齢・性別などがわかっている場合、近い年齢・性別のユーザーが買う傾向の強い商品を推薦するような仕組みを、ユーザーベース協調フィルタリングと言います。

ビッグデータとレコメンドアルゴリズム

スーパーやコンビニ、ネット通販などといった流通業は、実に膨大な顧客データを保持しています。それは、ユーザ自身の属性(年齢・性別・職業など)から、製品の購入履歴など実に様々です。こういった、膨大に蓄積したデータのことを、ビッグデータと呼びます。このビッグデータこそ、実は集合知の宝庫なのです。

そこで、現在では、流通業者は、こういったビッグデータを活用するために、様々なレコメンドアルゴリズムを活用して、ユーザーにお勧めの商品を推薦したり、マーケティングでユーザーの好みの製品を販売する手助けにしたりしています。

顔認識アルゴリズム

顔認識アルゴリズムとは

近年、デジタルカメラやスマートフォンのカメラ、さらにはプリクラなどのような機器にほぼ標準的に組み込まれるようになったのが、この顔認識アルゴリズムです。このアルゴリズムは、画像認識のアルゴリズムの一種で、写真の中から人の顔を検出するものです。

このアルゴリズムを利用することにより、写真に写っている人物を特定したり、様々な画僧処理を行って、面白い顔にしたりといった使い方がされるようになりました。

Viola-Jones法

このアルゴリズムを実現しているのが、Viola-Jones法と呼ばれるアルゴリズムです。ViolaとJonesの2人が考案したためこの名前がついています。

この方法は、顔を検出したい画像1枚に対してある一定の領域(8×8ピクセルなど)の探索窓と呼ばれる領域を左上から走査させ、この探索窓の領域ごとにその画像が顔画像かどうかを判定します。

顔検出に限らず、画像処理で、その画像が何かを検出するためには、人間がそうであるように、同じもののサンプルをたくさん見て記憶しておく必要があります。私たちが、「りんご」を見て、認識できるのは、過去、無数のリンゴを見てきているからです。そのおかげで、本物のリンゴだけではなく、絵に描いたリンゴや、リンゴのマークなどを見て、「これはリンゴだ」と感じることができるのです。

顔検出にかんしても同様で、実際にある画像に顔が写っているかどうかを識別するためには、「人の顔とはどういうものか」ということを学習しておく必要がありますこの処理は、Boosting(強化学習)という機械学習アルゴリズムによって行われます。

その結果、顔を判断するための判断材料が出来上がります。これを、Cascade構造の識別器と言い、その画像が顔画像かどうかを判別するために利用します。

AdaBoosting

Boostingとは、精度の低い識別器の集合から、精度の高い識別器を作る手法のことで、様々な手法があります。顔認識で用いられるBoostingのことを、特にAdaBoostingと言います。AdaBoostingとは、一種の「多数決」のアルゴリズムで、多数ある識別器の中から、最も信頼度の高い物のデータを、重視するというアルゴリズムです。

つまり、われわれがデジタルカメラやスマートフォンで使っている顔認識のアルゴリズムは、こういった学習の結果、出来上がったものなのです。

その他のアルゴリズム

現在用いられている様々なアルゴリズム

現在使われているアルゴリズムはこれだけではありません。将棋やチェスのようなゲームで対戦するアルゴリズム、暗号でデータを保護するアルゴリズム、人間の音声を認識させるためのアルゴリズムなど、世の中には実に様々なアルゴリズムが存在します。

しかし、これらのアルゴリズムも、実は今まで開発されてきた大小さまざまなアルゴリズムを改良し、組み合わせてきたものの集大成であることには変わりありません。今後もいろいろなアルゴリズムが開発されるでしょうが、その流れは今後も変わらないでしょう。

今後のアルゴリズム

コンピュータが安価になり、高速なインターネットで接続されるようになったため、今後は、複数のコンピュータを組み合わせ、同時並行させて計算させる、並列計算のアルゴリズムが発展していくことが予想されます。

現に、将棋でプロを破ったコンピュータのアルゴリズムも、こういった複数のコンピュータを同時並行で動かし、大量の計算を行ったアルゴリズムを用いた結果出来上がったものです。今後アルゴリズムを学習するのなら、こういった領域に注目すると、面白いでしょう。

2045年問題

こういったコンピュータおよびアルゴリズムの進化は、世の中で必ずしも肯定的に受け止められているとは限りません。中には「いずれ、コンピュータがに人間より賢くなるのではないか」という器具を抱いている人たちがいます。そこで提唱されているのが、2045年問題と呼ばれるものです。

これは、このままコンピュータの進歩が続けば、2045年にはコンピューターの性能が人間の脳を超てしまうだろう、という予測のことを言います。これは予測はコンピューターチップの性能が18ヶ月(1.5年)毎に2倍になると予測した「ムーアの法則」に基づいて予測されています。

つまり、将来的にはもしかしたら、映画「ターミネーター」や「マトリックス」のように、人間が進化したコンピュータに支配されたり脅かされたりするような世の中が来てしまうのではないか、という心配がされているのです。