榎戸誠の情熱的読書のすすめ -3つの読書論・ことばのオアシス・国語力常識クイズ(一問一答!)-

アルゴリズムとは、こういうことだったのか・・・【山椒読書論(672)】

【読書クラブ 本好きですか? 2022年2月19日号】 山椒読書論(672)

図解まるわかり アルゴリズムのしくみ――データ構造、ソート、探索etc・・・基本から応用まで全部図解!』(増井敏克著、翔泳社)では、アルゴリズムの基礎から応用までが解説されている。私のようなITが苦手な人間には、アルゴリズムとは何かが分かっただけでOK だが、効率のよいプログラムを作成するには、どのアルゴリズムを選択すべきか悩んでいる人にも役立つだろう。

「『アルゴリズム』という言葉を聞くと、プログラミングについての専門知識が必要で、どうしてもハードルが高いものだと感じる人が多いでしょう。しかし、アルゴリズムはあくまでも計算の『手順』のことであり、コンピュータやプログラミング言語は必須ではありません。アルゴリズムを勉強する目的は『新しいアルゴリズムを考える』ことではなく、既存のアルゴリズムの特徴を知り、『それぞれにあった場面で使い分けられるようになる』ことです。実際に動かすときにはプログラムを作成し、コンピュータに実行させることが必要ですが、そこに使われている工夫を知るだけであれば、机上で手を動かして理解できるものもたくさんあるのです。最近では便利なライブラリが登場していて、プログラマがゼロからアルゴリズムを実装することはほとんどありません。このライブラリにはこれまでの先人が編み出した工夫が詰まっており、世の中で使われているソフトウェアにはその技術が使われています。大切なのは、どのような場面でどのアルゴリズムが有効なのかを知っておくことです」。

●プログラムは、ソースコードの書き方によって処理にかかる時間が変わります。私たちの身の回りにある問題でも、同じ答えが得られる複数の解き方があるように、プログラムでもさまざまな書き方があるのです。この手順や計算方法をアルゴリズムといいます。このとき、効率のよい方法を使えば、処理時間を大幅に短縮できるため、開発者はいくつかの候補の中から、よい方法を選ばなければなりません。

●Facebookでは、他の利用者の投稿が時間順に表示されるだけでなく、利用者が興味を持ちそうな順番に表示されます。このとき、『興味を持ちそう』だと判断するために、アクセス履歴などの利用者のそれまでの行動や、閲覧しているコンテンツの種類(動画、画像、テキストなど)、他の人による投稿の人気度などが利用されているといわれています。

●Twitterも、新しいツイートを優先して表示するだけでなく、利用者に最適だと思われる投稿が上位に表示されるようにもなっています。フォローしていない利用者の投稿であっても、他の人が『いいね』をしたり、リツイートしたりすると表示されます。また、『トピック』というカテゴリがあり、利用者が興味を持っている項目が表示されたりします。

●これらのアルゴリズムは公開されていないため、細かな部分はわかりません。しかし、これらのSNSをマーケティング目的で使う場合には、自社で作成したコンテンツが多く目に留まるように、さまざまな工夫が必要です。ただ投稿するだけでなく、広告など課金することによって優先順位を上げる方法もよく使われます。

●それぞれの人が持つ知り合いについて、その先の知り合いを考えると、世界中のすべての人が6ステップ以内でつながっている、という考え方を6次の隔たりといいます。例えば、Aさんの知り合いが23人いて、その知り合いも他の知り合いが23人いて、・・・ということを考えると、23⁶=148,035,889人となります。これは日本の人口を超えています。多くの人にとって、知り合いの数は23人より多いため、これが仮に45人になると、45⁶=83億人となり、世界の人口を超えるのです。

●引用されている論文の数のことを被引用数といいます。さらに、被引用数の多い論文から引用されている論文はより重要だと考えられます。このような考え方をWebサイトでも使った方法として、Googleで使われているページランクがあります。インターネット上に公開されているWebページにおいて、そのリンクを順にたどることでリンクされている数を集計したものとして被リンク数があり、この被リンク数をもとに重要なページだと判定するのです。利用者が検索エンジンでキーワードを入力したとき、そのキーワードを含むページのうち、このページランクが高いものを上位に表示することで、利用者の求める内容が見つけやすいことから注目されました。

●利用者が入力したキーワードがコンテンツに含まれていなくても、入力されたキーワードの意味を理解して、その意味にマッチしたコンテンツを含むページを表示する手法として使われているのがRankBrainという方法です。似たような言葉で検索するだけで自動的に検索結果に表示されるため、利用者はキーワードを変えながら試す必要がなくなり、便利に利用できます。この背景にあるのが、AIによる学習です。多くの利用者が入力した検索キーワードを自動的に学習し、自然言語処理を使うことで利用者が知りたい情報を認識し、最適な検索結果を表示してくれるのです。具体的な内部のアルゴリズムは不明ですが、あいまいな検索でも精度の高い結果が得られるように改善が続いていることがわかります。

このところ、私のamazonのレビュアー・ランキングが約600万人中、13~22位と上下しているので、このレビュアー・ランキングのアルゴリズムがどうなっているのか知りたいと思っているが、残念ながら不明である(涙)。