ランキングモデル:ランキングモデルとは何か?
さまざまなランキングアルゴリズム、その使用法、ベストプラクティスを探る。ランキングアルゴリズムの実際のサクセスストーリーとその変遷を明らかにする。
シリーズ全体を読む
- 筏か否か?クラウドネイティブデータベースにおけるデータ一貫性のベストソリューション
- Faiss(フェイスブックAI類似検索)を理解する
- 情報検索メトリクス
- ベクターデータベースにおける高度なクエリー技術
- ベクトル検索を支える人気の機械学習アルゴリズム
- ハイブリッド検索:テキストと画像を組み合わせて検索機能を強化
- ベクターデータベースの高可用性の確保
- ランキングモデル:ランキングモデルとは何か?
- Zillizでレキシカル検索とセマンティック検索を使いこなす
- バイナリ量子化とMilvusによるベクトル検索の効率化
- モデルプロバイダーオープンソースとクローズドソースの比較
- Milvusによる多言語言語の埋め込みとクエリー
- 構造化データのベクトル化とクエリの究極ガイド
- HNSWlibを理解する:高速近似最近傍探索のためのグラフベースライブラリ
- ScaNN(Scalable Nearest Neighbors)とは?
- ScaNNを始める
- 次世代検索:クロスエンコーダとスパース行列因子分解がk-NN検索を再定義する方法
- ボイジャーとは?
- 迷惑とは何か?
検索バーにクエリを入力すると、ブラウザは関連する結果を表示する。これは、複雑なアルゴリズムと機械学習(ML)を駆使したランキングモデルによって実現されている。これらのモデルは、キーワードの関連性、ドキュメントの新しさ、ユーザーの行動などの要素を考慮し、最も適切な検索結果をページの一番上に表示します。
より洗練されたモデルが登場する以前は、検索アルゴリズムはユーザーが定義した条件に基づいて結果をランク付けするブーリアンロジックに依存していた。このようなモデルは、時に過度に具体的な結果や広範な結果を出すこともあったが、適応性に制約があった。
ブーリアンモデルの課題を軽減するために、ベクトル空間モデルは関連性の概念を導入した。これらのモデルは、検索クエリと文書ベクトルの類似度を計算することで、関連文書を特定する。確率モデルはさらに、文書がユーザーの検索クエリに関連する可能性を計算する。
MLによって、高度な検索モデルは検索ランキングに革命をもたらした。人工知能(AI)駆動型検索は、ユーザーの意図、クリックスルー率、ユーザーインタラクションなどの複雑なパラメータを使用して、結果ページの文書をランク付けする。
この記事では、様々なランキングアルゴリズム、その機能性、落とし穴、最適なケース、成功事例を紹介する。
ランキングモデルの解明
ランキングモデルは、検索クエリに対して最も関連性の高い文書を見つけるために、情報の海をふるいにかける。最新のデータベースには何十億もの文書が含まれており、それをスキャンしなければならないため、この作業は特に困難である。関連性の高い結果を特定するには、クエリ分析、類似度計算、関連性スコアリングなどの洗練されたテクニックが欠かせない。以前とは異なり、最新のランキングモデルはこの膨大な量のデータを扱い、これらすべてのタスクを大幅に短時間で実行し、正確な結果をもたらします。
典型的なランキングモデルは、ユーザーの検索クエリに類似した文書を見つけるために、次のようなステップを踏む:
- クエリ分析**:モデルは検索クエリを分析し、キーワードを抽出し、ユーザーの意図を理解する。
- キーワードマッチング**:次にモデルはデータベースをスキャンし、類似したキーワードを含む文書を特定する。
- 特徴抽出**:このモデルは検索クエリとドキュメントの両方において、コンテンツの質、キーワードの頻度、そしてユーザーの意図のような他の要素を含む特徴抽出を行う。
- 文書ランキング次に、抽出された特徴にランキングアルゴリズムを適用し、検索クエリと文書の関連性を測定する。
ランキングモデルは、単純な計算から、機械学習やディープラーニングを使った高精度なモデルへと進化しており、ユーザーの要求に従って文書を検索し、ランク付けする。これらのモデルは以下のタイプに分類される:
**1.初期のヒューリスティック・モデル
これらは単純な計算と論理に依存した基本的なモデルである。ブールランキングやベクトル空間モデルのような初期の一般的なアルゴリズムはこのカテゴリーに属する。その特徴は以下の通りである:
- 単純な演算子(AND、OR、NOT)や距離メトリクスを使って関連文書を特定する。
- 複雑なクエリに対応できない。
ブーリアンモデルは、ユーザーが検索意図を特定のキーワードで表現できるような、小規模な文書のコレクションに適している。一方、ベクトル空間検索モデルは、情報検索システム、文書クラスタリング、類似性分析において、ニューラルネットワークとともに現在も使用されている。
**2.確率モデル
検索クエリと文書の関連性を推定するモデルである。アルゴリズムは入力クエリとデータベース文書から、キーワード頻度や文書の内容など様々な特徴を抽出し、これらを使って両者の関連性を計算する。
確率モデルの特徴は以下の通り:
- 類似文書を特定するために確率を計算する。
- 以前の手法に比べ、文書の関連性を微妙に識別できる。
- 不正確な場合もあり、大量の学習データを必要とする。
確率モデルはMLベースの検索アルゴリズムで今でも使われており、現代社会での妥当性を証明している。ユニバーサル検索、文書ランキング、信頼性スコアリング、スパムフィルタリングなどは確率的ランキングモデルの一般的な応用例である。
**3.機械学習とディープラーニングによるランキングアルゴリズム
現代において人気のあるこれらのモデルは、膨大な量のデータで学習され、ランキング能力を向上させる。MLとDLモデルは2つのアプローチ、すなわちベクトル空間モデルとランク付け学習(LTR)を用いて実装される。ベクトル空間モデルは、クエリと文書間の類似度を計算するために、埋め込みと距離メトリックを利用する。LTRは、クエリと文書との直接的な関連性を予測するために学習するMLモデルである。
最近のディープラーニング・モデルは、文脈を認識するため、周囲の用語を分析することで曖昧なクエリを処理することもできる。例えば、「アップル」と検索した場合、モデルは周囲の用語を分析し、アップルというブランドを指しているのか、果物のリンゴを指しているのかを識別する。
検索アルゴリズムにおけるMLの特徴は以下の通り:
- 精度の高い結果を提供し、改善し続ける。
- ユーザーの意図、インプレッション、クリックスルー率などの特徴を考慮する。
- 検索クエリに隠されたコンテキストを理解するためにニューラルネットワークを使用する。
機械学習とディープラーニングのランキングアルゴリズムは、常に進化し、ユーザーのニーズや環境の変化に適応することで、ユーザーエクスペリエンスを向上させる無限の機会を提供する。検索エンジン、レコメンダーシステム、スパムフィルター、ビジュアル検索は、これらのアルゴリズムのアプリケーションの一部です。
戦略的展開:いつ、どこでランキングモデルを活用するか
ランキングモデルは今日、様々なアプリケーションで使用されている。検索クエリに基づいた関連データの表示が必要なときはいつでも、ランキングモデルはこのタスクを実行するのに適している。ランキング・モデルの一般的な用途をいくつか見てみよう。
1.**デジタル・ライブラリー デジタル・ライブラリーは、ドキュメントやオブジェクトのコレクションである。検索中、ライブラリは検索クエリに類似したオブジェクトを見つけるためにコレクションをふるいにかける。検索用語、ユーザーの履歴や嗜好、ユーザーの意図などの要素が、ランキング・モデルがデジタル・ライブラリー内の類似オブジェクトを特定するのに役立つ。
2.**オンライン・マーケットプレイス ランキング・モデルは、オンライン・マーケットプレイスが提供するシームレスな体験のヒーローである。商品リスティングからレコメンデーション、パーソナライズされたホームページまで、ランキングアルゴリズムはユーザーの好みに応じて結果を調整します。オンラインマーケットプレイスのランキングアルゴリズムは、キーワード、ユーザーの意図、購入履歴、価格、リスティングの品質などの要素を評価し、ユーザーがクエリを検索したときに関連する商品を特定し、フェッチします。
3.**パーソナライズされたコンテンツフィード オンライン・マーケットプレイスのように、ニュース・プラットフォーム、ストリーミング・アプリケーション、ソーシャルメディアは、ユーザーの好みに応じてユーザー・フィードをパーソナライズする。ランキングモデルは、ユーザーの履歴、検索意図、ブラウザの履歴を考慮し、最も関連性の高いコンテンツをユーザーフィードに表示する。
4.**検索エンジン 検索エンジンは、ユーザーのクエリとの関連性に応じて、結果ページのウェブページをランク付けする。ユーザーの意図、キーワードの関連性と頻度、内部リンクと外部リンク、ウェブページの人気度、ドメインのオーソリティは、ここで類似した結果を特定する上で重要な役割を果たします。これらの要素は、ウェブサイトが検索ページでランク付けされ、ニッチな分野で権威を築くのに役立ちます。
ランキングモデルの選択
適切なランキングモデルの選択は様々な要因に左右される。プロジェクトのニーズや望ましい結果を分析する前にランキングモデルを採用すると、非効率的なランキングアプリケーションになってしまいます。適切なモデルを選ぶために重要な要素には、次のようなものがある:
1.**データ形式 異なるランキングモデルは、異なるデータ形式に適している。確率モデルのような単純なモデルは、構造化されたデータ、つまり明確に定義された属性を持つデータに適している。ウェブページやオーディオファイルのような非構造化で複雑なデータには、機械学習やディープラーニングのランキングモデルが適している。
2.**ユーザー・エンゲージメント・メトリクス 分析に利用可能な明示的なユーザー・エンゲージメント・メトリクスを持つアプリケーションは、ユーザー体験をパーソナライズするためにこれらのメトリクスを使用することができます。明示的なメトリクスとは、ユーザー・フィードバック・データ、クリック数、評価数、ダウンロード数、滞在時間などを含む定量化可能な指標です。 明示的なメトリクスが利用できないアプリケーションでは、ユーザーインタラクションやクリックスルー率などの暗黙的なメトリクスがランキング結果に影響します。
3.**計算上の制約 検索エンジンやソーシャルメディアサイトのように、多数のユーザーを抱えるアプリケーションでは、より高速な処理時間と正確な出力を持つモデルが必要です。 オフラインのデータ分析が適しているアプリケーションでは、処理速度は遅いが複雑なランキングモデルが有効です。
ランキングアルゴリズムは、ユーザーが関連する結果を検索し、ランク付けすることを可能にするが、効率的なモデルを開発するためには、ドメインの専門知識が依然として必要である。モデルの透明性と公平性もまた、満足のいくユーザー・エクスペリエンスにおいて重要な役割を果たす。
ランキングモデルの実装:ベストプラクティス
ランキングモデルの実装には、ポイントランキング、ペアワイズランキング、リストワイズランキングの3つのアプローチがある。どのアプローチにせよ、ランキングモデルの実装には明確なプロセスがある。検索インフラにおけるランキングモデルの実装には、以下のステップが含まれる:
1.**データの準備 データの準備は、ユーザーのインタラクションやクリックスルー率などの関連データを収集することから始まる。データが収集されると、モデルは欠損値、一貫性のない値、異常値などのエラーがないかスキャンする。データ準備段階では、これらのエラーを検出して修正します。
2.**特徴抽出 データが準備されると、モデルはさらなる処理のために有用な特徴、すなわちキーワード頻度、コンテンツタイプ、ユーザーインタラクションメトリクスを抽出する。この段階では、既存の特徴を操作して新しい特徴を作成することもある。
3.**モデルの選択とトレーニング 次のステップは、データフォーマット、ユーザーエンゲージメントメトリクス、計算上の制約など、モデルのパフォーマンスに影響を与える要因に基づいて、適切なランキングアルゴリズムを選択することです。モデルが選択されると、データパターンを特定するために、前処理されたデータでトレーニングされる。学習段階により、ランキング・アルゴリズムがユーザーのクエリに対して関連性の高い結果を予測し、得られるようになる。
4.**性能評価 モデルは訓練データで訓練された後、未見のデータに対する性能を評価するために評価される。平均平均精度(MAP)、割引累積ゲイン(DCG)、精度、リコールなどの評価指標は、ランキングモデルの精度を測定するために使用される。評価メトリクスの出力は、モデルのパラメータを微調整したり、あるいは別のランキング・アルゴリズムをトレーニングすることによって、モデル開発者がモデルを最適化するための指針となります。
ランキングモデル実装の課題
ランキングアルゴリズムの実装プロセスは簡単ですが、いくつかのハードルがあります。 タイムリーかつ効果的に処理すれば、これらのハードルはモデルのパフォーマンスに影響を与えない。しかし、それらを無視することは、無関係な結果につながります。ランキングアルゴリズムの実装中によくあるハードルには、以下のようなものがある:
1.**データの希少性
新しい、あるいはニッチなランキングアプリケーションは、しばしば限られたデータを扱わなければならない。限られたデータでは、学習段階でモデルが効果的なパターンを識別できない。
**解決策データ補強技術により、データの希少性の課題を軽減することができる。これらの技術には、既存の学習データを操作して合成データを作成することが含まれる。転移学習、つまり類似のニッチ分野で事前に訓練されたモデルを使用することで、より優れたモデル性能を達成することができる。
2.**モデルのスケーラビリティ
ランキング・アプリケーションが成長するにつれ、そのデータと操作の要件も大きくなる。膨大な量のデータを扱い、類似したオブジェクトを識別するためにそれらを処理することは、計算量が膨大になる可能性があります。計算コストはモデルのパフォーマンスを低下させ、その精度に影響を与える可能性さえある。
**解決策効率的なモデルアーキテクチャや分散コンピューティングフレームワークを使用することで、検索精度の向上とともにランキングモデルのスケーラビリティが向上します。
3.**解釈可能性
ディープラーニングモデルには、しばしば隠された基本的なロジックがあるため、ランキングモデルが類似のオブジェクトをどのようにランク付けしているのか、なぜあるオブジェクトが他のオブジェクトより上位にランク付けされているのかをユーザーが解釈することは困難である。これは、公平性についての懸念を引き起こし、モデルのデバッグを困難にする。
**解決策モデルのランキングロジックを分解するために、Local Interpretable Model-Agnostic Explanations (LIME)のようなExplainable AIを実装することで、モデルの解釈可能性が高まります。確率モデルのような固有の解釈可能性を持つ、より単純なモデルを可能な限り使用することも、透明性を維持するのに役立ちます。
このような技術的な複雑さだけでなく、分野の専門知識は、ニッチな要件に基づいて適切なランキングアルゴリズムを設計するのに役立つ。ランキングモデルの適応性とパフォーマンスを評価するために定期的にモニタリングすることで、潜在的な落とし穴に対処することができる。
ランキングモデルの評価と強化
ユーザーエクスペリエンスはランキングモデルの性能に依存する。より良いユーザーエクスペリエンスのためには、ランキングモデルの最適なパフォーマンスが必要です。ランキング・モデルの有効性を評価するために、いくつかのメトリクスとテクニックが利用可能です。そのいくつかを紹介しよう:
1.**精度@k
Precision(精度)とは、ユーザーのクエリに対する検索結果の関連性を測る指標である。検索された結果のうち、いくつが実際にクエリに関連しているかを測定します。例えば、precision@10は、受信した結果のトップ10を分析し、クエリに関連する結果がいくつあるかをチェックします。
2.**リコール
Recallは、ランキングモデルがデータベースから検索したすべての関連文書またはオブジェクトの数を測定します。例えば、リコール0.8は、モデルが関連文書の80%を検索することを示す。したがって、1に近い値は良いモデル性能を示す。
3.正規化割引累積利得(NDCG)。
NDCGは、検索されたオブジェクトのランキング順序を理想的な順序と比較するランキング指標である。例えば、ユーザーが映画を検索した場合、モデルは映画の検索結果を理想的な検索結果と比較する。NDCGメトリックは0から1の間の値を取り、1は正確な一致を示し、より低い値はより正確でない一致を示す。これらの値は、モデルのパフォーマンスを最適化するためにモデルのパラメータを調整するのに役立ちます。
メトリクスはランキングモデルを微調整するための良い手始めを提供するが、高度なテクニックは包括的な評価につながる。A/Bテストと多様なパラメータに対する評価は、モデル評価の公平性を確保する要因の2つです。
モデルの性能が測定されると、典型的な次のステップはモデルの性能を微調整することである。効率的なモデル性能を得るためには、何度も繰り返しが必要です。モデル性能を微調整するための主な手法には、以下のようなものがあります:
1.パラメータの微調整。
複数のハイパーパラメータがランキング・モデルの振る舞いを形成する。精度メトリクスに従ってハイパーパラメータを調整することで、モデルの性能が向上する。モデル・パラメータの微調整には、グリッド探索、ランダム探索、ベイズ最適化などの手法が用いられる。
2.**フィーチャーエンジニアリング
モデルの性能を改良するもう一つの方法は、既存の特徴を操作して新しい特徴を作り出すことである。このアプローチは、特定の特徴の組み合わせがモデルのパフォーマンスを向上させる場合や、特定の特徴がモデルの予測に悪影響を与える場合に有効です。このような特徴を微調整することで、性能が向上します。
3.**アンサンブル技法
アンサンブル技法は、2つ以上のMLモデルを組み合わせて、その力を利用する。1つのモデルに依存するのではなく、複数のモデルを組み合わせることで、より良いパフォーマンスを得ることができる。
4.**フィードバックループ
フィードバックループとは、AIが生成したアウトプットと外部のエンドユーザーのアクションを比較するプロセスである。外部のエンドユーザーの行動には、モデルの理解を評価するためのユーザーの評価やクリックスルー率が含まれるかもしれない。これは、人間のようなフィードバックサイクルを提供することで、時間の経過とともにモデルのパフォーマンスを向上させます。
5.モデル適応性の育成。
モデルの適応性は、ランキングモデルが進化し続ける検索環境に対応するために極めて重要である。ランキングモデルが新しいユーザーデータやランキングプラクティスに適応できるようにするテクニックは、モデルの適応性を確保する一つの方法である。アクティブラーニングを使用して最も重要な機能を選択することも、時代遅れのモデルに対処するのに役立つ。
卓越したランキングモデルのスポットライト
ある種のランキングモデルは、データベース内の類似オブジェクトをランキング精度で効果的に識別する。高い精度からスケーラビリティ、膨大なユースケースに至るまで、これらのモデルはAmazon、Google、Netflixのような定評ある企業で使用されている。一般的に使用されているランキング・モデルには、ランク付け学習アルゴリズム、BERTベースのランカー、ニューラル・ランキング・モデルなどがあります。
1.ランク付け学習(LTR)アルゴリズム。
LTRアルゴリズムは、ユーザークエリに対するアイテムリストの関連性スコアリングを目的としている。これらのモデルは、人間が注釈を付けたり、暗黙的に収集したデータで学習される。LTRは様々なデータ形式を扱うことができ、通常モデルの最適化には確率的勾配降下を使用する。LTRアルゴリズムには多くのベストフィットのユースケースがあり、その中には以下のようなものがある:
- 検索エンジン
- 推薦システム
- 情報検索システム
ランキング学習成功事例
アマゾンはLTRアルゴリズムを使って、ユーザーがアマゾンの検索でキーワードを入力したときに、最も関連性の高い商品を表示する。このアルゴリズムは、キーワードの関連性、コンバージョン率、販売履歴、商品画像、インプレッション、在庫状況、価格、レビュー、クリック率を追跡し、検索結果ページの商品をランク付けする。
2.**BERTベースのランカー BERTはBidirectional Encoder Representations from Transformersの略です。BERTは事前に訓練されたトランスフォーマーであり、自然言語の文脈を理解することに優れたディープラーニングモデルである。BERTベースのランカーは、検索クエリのより細かい詳細を捕捉し、より正確な結果をもたらし、キーワードマッチングを超えます。BERTベースのランカーの実世界での応用例には、以下のようなものがあります:
- 検索エンジン
- 音声検索
- 会話インターフェース
BERTベースのランカー成功事例
Google Assistant は、BERT ベースのランカーを使用してユーザーのクエリを理解し、正確な検索結果を返します。BERT はまた、検索結果でウェブページの関連する文章や一節をハイライトします。 さらに、Google Assistantがユーザーの発音を学習し、自然な会話を行うこともできます。
3.**ニューラル・ランキング・モデル ニューラル・ランキング・モデルは、ニューラル・ネットワークを使用して、隠れたパターンを識別し、データ・ポイント間のつながりを学習する。これらのモデルは、膨大な量のデータを処理し、複雑な計算を実行し、変化するニーズに適応するスケーラビリティを提供することができる。ニューラル・ランキング・モデルの実世界での応用例には次のようなものがある:
- 大規模検索エンジン
- 高度にパーソナライズされた推薦システム
ニューラル・ランキング・モデルの成功例
Netflixは、ユーザーにパーソナライズされた映画を推薦するために、ニューラル・ランキング・モデルを使用している。ネットフリックスのニューラル・ランキング・モデルは、ユーザーの意図、嗜好、視聴時間、視聴履歴、ユーザー・プロファイルを考慮し、レコメンデーションを生成する。Netflixのパーソナライゼーションは、パーソナライズされたメッセージングや魅力的なアプリ内通知もユーザーに提供している。
適切なモデルの選択は、アプリケーションの要件に依存する。これには、プロジェクトの目標や、計算上の制約やデータの可用性などの要素が含まれます。
将来の地平を切り開く
ブーリアン検索システムから始まり、ランキングモデルは今日まで革新的な変貌を遂げてきた。革命はまだ止まっておらず、ランキングモデルはより強固なアルゴリズムへと進化し続けている。これらの進歩は、ユーザーエクスペリエンスと倫理的配慮を最前線に置くことで、無限の機会を提供している。新しいランキングモデルは、以下のような様々なテクニックを採用しています:
1.**セマンティック・ランキング ランキングモデルは、オブジェクトのリスト間の関係を捕捉するために知識グラフを使用することで、既存のアルゴリズムを凌駕している。知識グラフはランキングモデルに文脈を認識させ、ユーザーのクエリに対する人間のような理解と正確なランキングをもたらす。BERTやGPT-3のようなトランスフォーマーアーキテクチャは、ランキングモデルがより深いレベルでユーザーの意図を理解することを可能にする。
2.**ユーザー中心のパーソナライゼーション コンテキスト理解のためにMLを使うことで、企業は高度にパーソナライズされたシステムをユーザーに提供することができる。XAI技術を採用することも重要であり、ランキングモデルが特定の結果をもたらす理由をユーザーが理解できるようにする。これはAIに対するユーザーの信頼を高め、より安全なAIの実践につながる。
セマンティック検索やユーザー中心アプローチのような高度な技術は、高度なランキングシステムの開発を可能にする。ランキングシステムで自然言語処理(NLP)を使用するようになると、音声検索や多言語検索のようなアプリケーションがランキングモデルの上に構築されるようになる。
様々なドメインにおけるランキングモデルの台頭は、ユーザーや一般大衆に倫理的な懸念を抱かせる。偏りのない適切なデータを使用することで、ランキングモデルが差別的な結果を生成しないことを保証する。さらに、XAIの実践は、ユーザーの信頼性、透明性、明確性をさらに高めます。
ユーザーデータを保護し、公正な慣行を使用するデータプライバシーポリシーも、ユーザーの信頼を高め、企業の評判を向上させ、金銭的な罰則のリスクを軽減する上で重要な役割を果たします。
結論
今日、検索エンジンはキーワードの頻度だけでなく、ユーザーの意図や行動にも依存しており、検索ランキングのアルゴリズムに革命をもたらしている。洗練されたAI技術と倫理的配慮は、様々なドメインや言語において高度にパーソナライズされたランキングを提供する、より高度なランキングアルゴリズムへの道を約束する。
最新のランキングアルゴリズムListMLEやLambdaRankを含む、ランキングアルゴリズムとその実装について詳しく学びます。 さまざまなランキングアルゴリズムをテストし、サイドプロジェクトやオープンソースへの貢献を通じてその実装に参加することで、多様で貴重な経験を得ることができます。
読み続けて

バイナリ量子化とMilvusによるベクトル検索の効率化
バイナリ量子化は、Milvusにおけるベクトルデータの管理および検索に対する革新的なアプローチであり、パフォーマンスと効率の両方において大幅な向上をもたらします。ベクトル表現をバイナリコードに単純化することで、ビット演算の速度を活用し、検索操作を大幅に高速化し、計算オーバーヘッドを削減します。

ScaNN(Scalable Nearest Neighbors)とは?
ScaNNはGoogleによって開発されたオープンソースライブラリで、大規模なデータセットにおける近似最近傍探索を高速に行うことができる。

次世代検索:クロスエンコーダとスパース行列因子分解がk-NN検索を再定義する方法
AXN(Adaptive Cross-Encoder Nearest Neighbor Search)は、CEスコアの疎な行列を使用してk-NNの結果を近似し、高い精度を維持しながら計算量を削減する。
