無駄なAI開発を防ぐ!目的に応じた強いAIと弱いAIの選び方

勉強がてら『食べログ』のレビューを「良いレビュー」と「クソレビュー」に分類するプロジェクトを立ち上げた

 機械学習の勉強がてら、そういうプロジェクトを始めた。データ集めのスクレイピングツールは以下の通りで、ここからいよいよ機械学習(クラスタリング=分類)に入る。

 このプロジェクトを通して、「AI」を実装するうえで検討すべきこと、について気づきがあったのでまとめてみる。

GitHub - og3/find_kuso_restaurant_from_tabelog: 食べログから評価の低い店を探して、そのリストを作るスクリプト
食べログから評価の低い店を探して、そのリストを作るスクリプト. Contribute to og3/find_kuso_restaurant_from_tabelog development by creating an account on GitHub.
GitHub - og3/find_kuso_review_from_tabelog: 『食べログ』に掲載されている店のURLを渡すとその店の口コミを取得するスクリプト
『食べログ』に掲載されている店のURLを渡すとその店の口コミを取得するスクリプト. Contribute to og3/find_kuso_review_from_tabelog development by creating an account on GitHub.

「強いAI」と「弱いAI」について

 一言に「AI」と言っても、その中身はさまざまである。さまざま過ぎて、「実はただのif分岐」なモノまで「AI」と言い張って商売をしているクソ企業もあるほどである。

 そういう「AI(笑)」は無視するとして、ここでは「強いAI」と「弱いAI」に分類してその特性をまとめる。機械学習を用いた実装目的に応じて、それに適した「AI」を目指さなければ「まともなモノ」が作れないので、何かを実装しようとするときは常にこれを意識する必要があると考えている。

「強いAI」と「弱いAI」の違い

強いAI 弱いAI
定義 文脈や目的を理解し、柔軟に思考・判断できるAI 特定のタスクやルールに基づいて動作するAI
思考の特徴 「目的は何か?」「最適な選択肢は?」と考えられる 「与えられた条件で最適解を出す」
ChatGPT、DeepMindのAlphaGo、汎用人工知能(AGI) ルールベースのチャットボット、クラスタリング、スパムフィルター
柔軟性 状況に応じて判断を変えられる 事前に決めたルールや学習データの範囲内でしか動けない
説明できるか? 判断の根拠を明確に説明しにくい(ブラックボックス) ルールが決まっているので説明しやすい
実装コスト 計算資源が必要でコストが高い 比較的軽量で低コスト
向いている用途 長期的な計画、創造的な問題解決、複雑な判断が必要な場面 明確なルールがある分類・検索・条件分岐

人間の思考は「強いAI」的な思考と「弱いAI」的な思考のハイブリット

 以上のように「AI」を分類してみると、その思考の特性は人間の思考とそれぞれ同じだということがわかる。例えば、将来の計画を立てるときは、いろんな要素を検討する「強いAI」的な思考で考えるけど、「近場で唐揚げ定食が500円で食べたい」みたいな明確な目的がある場合は「弱いAI」的な思考で考える。

 なので、「AI」を実装するうえで大事なのは、「自分が解決したい問題に対して、人間である自分はどういう思考のアプローチをしているのか、ということを振り返ること」、だと言える。そのうえで、実装しようとしている「AI」はそれを満たせる性能になりうるのか、ということを判断する必要がある。

 まぁ実際のところ、2025年時点では個人開発において「強いAI」を作ることは、お金やスキルなどのリソース的に無理なので、個人が考えることは「if分岐をより高度にすれば解決できる問題かどうか?またその問題を解決する価値は何なのか?」ということだと思う。

その問題は「弱いAI」で解決できるか?

 個人開発の場合は「弱いAI」を作るのが限界なので、その前提で問題に対して以下のフローチャートで考えると機械的に「その問題を解決できるか」を検討できる。便利。。

① 解決したい問題のゴールは具体的で明確か?
├─ いいえ → 強いAIが必要(というか、まずゴールを定めるべき)
└─ はい
↓
② 問題を解くためのルールを手で作れるか?
├─ はい → 弱いAI(または単なるアルゴリズム)で解決可能
└─ いいえ
↓
③ ルールを作るのが難しいが、特徴量(データのパターン)がある程度決まっているか?
├─ はい → 機械学習(弱いAI)で解決可能
└─ いいえ
↓
④ 状況に応じて解釈を変える必要があるか?
├─ はい → 強いAIが必要
└─ いいえ → 弱いAIで解決可能

 上記のフローチャートで具体的に解決したい問題を考えてみる。

例1:食べログのレビュー分類

  1. ゴールは明確か? → 「役に立つレビューとそうでないレビューを分けたい」→ YES
  2. ルールを作れるか? → 「『美味しい』が入っていたら高評価」では不十分 → NO
  3. 特徴量が決まっているか? → 「単語の出現頻度や評価スコアを使えば分類できそう」 → YES
  4. 状況に応じて解釈が変わるか? → 「この人の過去の好みや文脈を考慮する必要があるか?」→ NO

機械学習(弱いAI)で解決可能。

例2:キャリア相談AI

  1. ゴールは明確か? → 「この人にとって最適なキャリアを提案する」 → NO(相手によってはYES)
  2. ルールを作れるか? → 単純に「年収が高い仕事をすすめる」ではダメ → NO
  3. 特徴量が決まっているか? → 「過去のキャリアとスキルの関係性が曖昧」→ NO
  4. 状況に応じて解釈を変える必要があるか? → 「個人の価値観や将来の社会変化も考慮すべき」→ YES

強いAIが必要。

 ルールや特徴量については、実際にデータを集めてみないと何とも言えないところがあるので、少なくとも「開発を検討するフェーズ」と「データを集めてみたフェーズ」でそれぞれこのチャートで検討する必要がある。

実装に走る前によく検討するのが大事

 これは「AI」の実装に限った話じゃないけど、実装に走ると大きなコストがかかるので、事前の検討で無駄足を踏まないようにできれば、「作るべきモノ」の実装にリソースを集中できる。そんでもって人間のリソースは限られているので、無駄にしていると何も残らない。それでは困るので、よく検討したい。

コメント