43

私は学校でいくつかの AI アルゴリズムを扱っていますが、いくつかのケースで解決できる状況を説明するために人々がファジー ロジックという言葉を使用していることに気づきました。本に戻ると、状態がオンからオフになるのではなく、対角線であり、何かが両方の状態にあるが異なる「レベル」にある可能性があることについて読んだばかりです。

ウィキペディアのエントリといくつかのチュートリアルを読み、さらに「ファジー ロジックを使用する」プログラム (エッジ検出器と 1 輪自動制御ロボット) を読みましたが、それでも理論からコードに移行するのは非常に混乱していると思います.. . あなたにとって、より単純な定義では、ファジー ロジックとは何ですか?

4

11 に答える 11

39

ファジー ロジックは、状態のメンバーシップが、本質的に、int 0 または 1 ではなく、範囲 0..1 の float であるロジックです。そこから得られるマイレージは、たとえば、制御システムで行った変更のようなものです。単純なバイナリ ロジックで得られるものよりも自然に微調整されます。

たとえば、アクティブな TCP 接続に基づいてシステム アクティビティを抑制するロジックが考えられます。マシン上の「少し多すぎる」TCP 接続を 1000 と定義し、「多すぎる」を 2000 と定義するとします。任意の時点で、システムは 0 (<= 1000) から「TCP 接続が多すぎる」状態になります。から 1 (>= 2000) まで、利用可能なスロットリング メカニズムを適用する際の係数として使用できます。これは、「多すぎる」と判断して完全にスロットルするか、「多すぎない」と判断してスロットルをまったく行わない単純なバイナリ ロジックよりも、システムの動作に対してはるかに寛容で応答性があります。

于 2008-12-30T06:21:56.517 に答える
37

ファジーロジックを視覚化する良い方法は次のとおりです。

従来、バイナリ ロジックではメンバーシップ関数が true または false であるグラフがありましたが、ファジー ロジック システムではメンバーシップ関数はそうではありませんでした。

1|
 | | /\
 | | / \
 | | / \
0|/ \
 ------------
   あいうえお

関数が「ピーナッツが好き」であると仮定します。

a. ピーナッツがちょっと好き
b. ピーナッツが本当に好き
c. ピーナッツがちょっと好き
d. ピーナッツが嫌い

関数自体は三角形である必要はなく、多くの場合そうではありません (アスキー アートの方が簡単です)。

ファジーシステムには、これらの多くが含まれる可能性が高く、次のように重複する (反対の場合もある) ものもあります。

1| AB
 | | /\ /\ A = ピーナッツが好き
 | | / \/ \ B = ピーナッツが嫌い
 | | / /\ \
0|/ / \ \
 ------------
  あいうえお

したがって、c は「ちょっとピーナッツが好き、ちょっとピーナッツは好きではない」、d は「ピーナッツが本当に嫌い」です。

そして、その情報に基づいて適切にプログラムできます。

これが視覚学習者に役立つことを願っています。

于 2008-12-30T08:29:15.667 に答える
11

ファジー論理の最良の定義は、その発明者Lotfi Zadehによって与えられています。

「ファジー論理は、人間が問題を解決する方法に似た方法でコンピューターに問題を表現する手段であり、ファジー論理の本質は、すべてが程度の問題であるということです。」</p>

人間が解決するのと同じようにコンピューターで問題を解決することの意味は、バスケットボールの試合の簡単な例で簡単に説明できます。プレーヤーが他のプレーヤーをガードしたい場合は、まず自分の身長とプレースキルを考慮する必要があります。ガードしたいプレーヤーが背が高く、プレーが非常に遅い場合、彼は本能を使って、そのプレーヤーをガードする必要があるかどうかを判断します。この例で重要な点は、プロパティがプレイヤーに相対的であり、ライバル プレイヤーの身長とプレイ スキルに次数があることです。ファジー ロジックは、この不確実な状況に対して決定論的な方法を提供します。

ファジー ロジックを処理するには、いくつかの手順があります (図 1)。これらの手順は次のとおりです。最初に鮮明な入力がファジー入力に変換されるファジー化、次にこれらの入力がファジー ルールで処理されてファジー出力が作成され、最後にファジー ロジックのように結果の程度が異なる非ファジー化が行われます。異なる程度の複数の結果が存在する可能性があります。

image004

図 1 – ファジー プロセスのステップ (David M. Bourg P.192)

ファジー プロセスの手順を例証するために、以前のバスケットボールの試合の状況を使用できます。例で述べたように、ライバル プレーヤーは 1.87 メートルと背が高く、私たちのプレーヤーに比べてかなり背が高く、3 m/s でドリブルすることができます。これは私たちのプレーヤーに比べて遅いです。これらのデータに加えて、次のようなファジー ルールと呼ばれるいくつかのルールを考慮する必要があります。

if player is short but not fast then guard,
if player is fast but not short then don’t guard
If player is tall then don’t guard
If player is average tall and average fast guard

image005

図 2 – 身長

画像007

図 3 - 速さ

ルールと入力データに従って、次のようなファジー システムによって出力が作成されます。ガードの度数は 0.7、時々ガードの度数は 0.4、決してガードしない度数は 0.2 です。

画像009

図 4-出力ファジー セット

最後のステップであるdeuzzicationは、ゲーム中にプレーヤーをガードするために使用する必要があるエネルギーを決定する数値である鮮明な出力を作成するために使用されます。重心は、出力を作成する一般的な方法です。このフェーズでは、平均点を計算するための重みは完全に実装に依存します。このアプリケーションでは、ガードを重視するかガードしないかを重視しますが、場合によってはガードを重視します。 (デビッド・M・バーグ、2004年)

画像012

図 5- ファジー出力 (David M. Bourg P.204)

  Output = [0.7 * (-10) + 0.4 * 1 + 0.2 * 10] / (0.7 + 0.4 + 0.2) ≈ -3.5

その結果、ファジー ロジックは不確実性の下で決定を下し、決定の程度を調べるために使用されます。ファジー ロジックの問題は、入力の数が増加すると、ルールの数が指数関数的に増加することです。

詳細とゲームへの応用については、私が書いた短い記事を参照してください。

于 2011-10-25T20:31:21.990 に答える
6

カオスの答えから構築するために、形式論理は、文を評価にマッピングする帰納的に定義されたセットに他なりません。少なくとも、それがモデル理論家が論理を考える方法です。センテンシャル ブール論理の場合:

 (basis clause) For all A, v(A) in {0,1}
 (iterative) For the following connectives,
   v(!A) = 1 - v(A)
   v(A & B) = min{v(A), v(B)}
   v(A | B) = max{v(A), v(B)}
 (closure) All sentences in a boolean sentential logic are evaluated per above.

ファジー ロジックの変更は帰納的に定義されます。

 (basis clause) For all A, v(A) between [0,1]
 (iterative) For the following connectives,
   v(!A) = 1 - v(A)
   v(A & B) = min{v(A), v(B)}
   v(A | B) = max{v(A), v(B)}
 (closure) All sentences in a fuzzy sentential logic are evaluated per above.

基礎となるロジックの唯一の違いは、文を「真の値」が 0.5 であると評価する許可であることに注意してください。ファジー論理モデルの重要な問題は、真実の満足度のしきい値です。これは次のように問いかけることです: 評価 v(A) に対して、どのような値 D の場合、v(A) > D は A が満たされていることを意味します。

ファジー ロジックのような非古典的ロジックについて本当に知りたい場合は、非古典的ロジックの紹介: If から IsまたはPossibilities and Paradoxのいずれかをお勧めします。

コーダーの帽子をかぶって、現実世界のプログラミングでファジー ロジックを使用することに注意します。これは、ファジー ロジックが決定不能になる傾向があるためです。たぶん、ほとんど利益を得るには複雑すぎます。たとえば、過大評価ロジックは、プログラム モデルのあいまいさを助けるのにうまく機能する場合があります。または、確率で十分かもしれません。要するに、ドメイン モデルがファジー ロジックと一致することを確信する必要があります。

于 2008-12-30T06:54:12.397 に答える
4

たぶん、例は利点が何であるかを明確にします:

サーモスタットを作成し、それを 24 度にしたいとしましょう。


これは、ブール論理を使用して実装する方法です。

  • ルール1:21度より寒いときは全力で加熱する。
  • ルール2:27度以上になったら全力でクールダウン。

このようなシステムは、たまに 24 度になるだけで、非常に非効率的です。


さて、ファジー ロジックを使用すると、次のようになります。

  • ルール 1: 24 度よりも寒い 1 度ごとに、ヒーターを 1 段階上げます (24 で 0)。
  • ルール 2: 24 度よりも暖かい 1 度ごとに、クーラーを 1 ノッチ上げます (24 で 0)。

このシステムは常に約 24 度のどこかで、わずかな調整を行うのは 1 回だけです。また、エネルギー効率も高くなります。

于 2008-12-30T06:23:56.793 に答える
3

Fuzzy Logic Washing Machinesの助けを借りて、非常に良い説明です。

于 2008-12-30T07:25:53.317 に答える
3

さて、 「建国の父」の一人であるバート・コスコの作品を読むことができました。「Fuzzy Thinking: The New Science of Fuzzy Logic」(1994 年) は読むことができます (また、Amazon からかなり安く中古で入手できます)。どうやら、彼は 2006 年の新しい本「ノイズ」を持っているようですが、これも非常に親しみやすいものです。

ただし、基本的には (私の言い換えでは、これらの本の最初の本を数年間読んでいません)、ファジー ロジックとは、何かがおそらく 10% クールで、50% が暖かく、10% がホットである世界に対処する方法に関するものです。さまざまな状態がどの程度真であるかについて決定を下すことができます (いや、これらのパーセンテージの合計が 100% にならないのは完全に偶然ではありませんでしたが、必要に応じて修正を受け入れます)。

于 2008-12-30T06:20:32.497 に答える
2

コンセプトからコードに移行するのが難しいというあなたの言いたいことはわかります。私は、Linux システムで sysinfo と /proc の値を見て、0 から 10 の間の数値を計算するスコアリング システムを作成しています。10 は絶対的に最悪です。簡単な例:

3 つの負荷平均 (1 分、5 分、15 分) があり、(少なくとも) 3 つの可能な状態、良好、悪化、不良があります。それを拡張すると、平均あたり 6 つの可能な状態を持つことができ、先ほど述べた 3 つの状態に「~について」が追加されます。それでも、18 の可能性すべての結果は、スコアから 1 しか差し引くことができません。スワップが消費され、実際の VM が割り当てられた (コミットされた) メモリやその他のものでそれを繰り返します.. 条件付きスパゲッティの大きなボウルが 1 つあります :)

それは芸術であるのと同じくらい定義です。意思決定プロセスをどのように実装するかは、パラダイム自体よりも常に興味深いものです..一方、ブール値の世界では、かなりカットアンドドライです。

load1 < 2 から 1 を引くかどうかを言うのは非常に簡単ですが、まったく正確ではありません。

一連の状況を評価するときに行うことをプログラムに教え、コードを読みやすくすることができれば、ファジー ロジックの良い例を実装したことになります。

于 2008-12-30T06:44:43.820 に答える
1

Fuzzy Logic は、シンプルで小型の組み込みマイクロコントローラから、ネットワーク化された大規模なマルチチャネル PC またはワークステーションベースのデータ取得および制御システムまで、さまざまなシステムへの実装に役立つ問題解決方法論です。ハードウェア、ソフトウェア、または両方の組み合わせで実装できます。ファジー ロジックは、あいまい、あいまい、不正確、ノイズ、または不足している入力情報に基づいて、明確な結論に到達するための簡単な方法を提供します。問題を制御するためのファジー論理アプローチは、人が意思決定を行う方法を模倣しますが、はるかに高速です。

ファジー ロジックは、エキスパート システムやその他の人工知能アプリケーションで特に役立つことが証明されています。また、一部のスペル チェッカーで、スペル ミスのある単語を置換する可能性のある単語のリストを提案するためにも使用されます。

詳細については、http: //en.wikipedia.org/wiki/Fuzzy_logicをご覧ください。

于 2012-07-04T20:27:40.417 に答える
0

以下は一種の経験的な答えです。

単純な (おそらく単純な答え) は、「ファジー ロジック」とは、単純な true / false、または 1 / 0 以外の値を返す任意のロジックであるということです。これには多くのバリエーションがあり、非常にドメイン固有である傾向があります。

たとえば、前世では、当時の一般的な「ブール検索」とは対照的に、「コンテンツ類似検索」を使用する検索エンジンを作成していました。私たちの類似性システムは、クエリとドキュメントを表す加重属性ベクトルのコサイン係数を使用し、0..1 の範囲の値を生成しました。ユーザーは、クエリ ベクトルを望ましいドキュメントの方向にシフトするために使用される「関連性フィードバック」を提供します。これは、テスト実行の結果に対してロジックが「報酬」または「罰」を受ける、特定の AI システムで行われるトレーニングに多少関連しています。

現在、Netflix は自社にとってより良い提案アルゴリズムを見つけるためのコンペを実施しています。http://www.netflixprize.com/を参照してください。事実上、すべてのアルゴリズムは「ファジー ロジック」として特徴付けることができます。

于 2008-12-30T06:21:43.150 に答える
0

ファジー論理は、人間のような考え方に基づいた計算アルゴリズムです。これは、多数の入力変数がある場合に特に役立ちます。2 変数入力用の 1 つのオンライン ファジー論理計算機が提供されます。

http://www.cirvirlab.com/simulation/fuzzy_logic_calculator.php

于 2014-01-28T11:52:39.323 に答える