ファジー理論(Fuzzy論理)とは人工知能(AI)の元となる論理のことで、
コンピュータでは数値化できない、人間がもつ感性や表現の考え方のことを指します。
一言で言うと「あいまい性」ですね。
今回はAIエンジニア養成セミナーを開いたこともあるギークフィードのサミーラが
ファジー理論について、図の例を用いてわかりやすく、具体的に説明します。
目次
Fuzzy論理とは?
Fuzzy論理は、システムの予想される出力が「真」または「偽」だけではない場合に適用できる手法です。
つまり、Fuzzy論理は不確実性(真実度)に関するものです。別の意味では、Fuzzy論理は人間の推論、意思決定および人間のような思考の数学的モデリングです。
コンピュータは人間の「はい」または「いいえ」である「真」または「偽」の製品出力を理解することができますが、それだけではすべての問題を解決できるわけではありません。
わかりやすく説明します。
例えばあなたが誰かに以下のような質問をするとしましょう。
Q:今日の天気はどうですか?
ロボットの場合「暑い」「寒い」のよう2つの正確な返答をします。
しかし、人間の場合は「暑い、暑くない、暖かい、ちょっと寒い、寒い」のような答えが思い浮かびます。
続いて2つ目の質問。
Q:インターネットの速度はどうですか?
ロボットの場合「速い」「遅い」の2つの正確な返答をしますが、
人間の場合は「とても速い、速い、普通、遅い、とても遅い」のような答えが思い浮かびます。
上記のシナリオでは、バイナリロジックは上記の質問の出力に対処するのに十分ではありません。
Fuzzy論理である多値論理を使うべきです。
なぜFuzzy論理を使うのか?その理由
- 多値論理出力を必要とする機械の制御に使用できます。
- Fuzzy論理は、真偽のように明確な推論出力を与えることではありません。それは現実世界の多くのシステムで使うことができる推論出力を与えることです。
- それはソフトウェア工学の「不確実性」と呼ばれる真実度に対処するために使用することができます。簡単に言えば、それは出力が「真」または「偽」だけでない場合だけでない時です。
Fuzzy論理制御システム
一般の制御システムは一組の入力を取り、入力を処理しそして出力を提供する箱のようなものですが、Fuzzy論理制御システムは、人間のような思考が組み込まれている制御システムです。
なので出力値は「真」または「偽」だけではありません。Fuzzyシステムは、不確実性に対処し、それら知識ベースを使用して、が知っていることに基づいて結果を生成することができます。
アプリケーション
- 宇宙船と衛星の高度制御のための航空宇宙分野
- 速度制御、交通管制のための自動車システム
- 自動車分野 (例: – 自動プレッシャーブレーキシステム)
- pH、乾燥、化学蒸留プロセスを制御するための化学工業
- 意思決定システム
- 自然言語処理システム
Fuzzy論理アーキテクチャ
Fuzzy論理アーキテクチャは主に5つの部分を含みます。
-
Fuzzifier:-
これは「クリスプ入力」(温度、圧力、回転数、電圧、価格などのセンサーによって測定された正確な入力)を取り、それをFuzzy集合に変換します。入力を次のようないくつかのステップに分割します,
o 大陽性
o 小陽性
o 普通
o 小負性
o 大負性
o 等…
-
Rules (知識ベース):-
意思決定システムを導くために専門家によって提供されたIF-THEN規則のセット。正確で十分なルールセットを構築することが重要です。
-
Inference Engine (知能):-
現在のFuzzy入力を処理し、各ルールに関してFuzzy出力との関連度を判断し、出力を生成するためにどのルールを起動するかを決定します。
-
Defuzzifier:-
それはInference Engineの出力Fuzzy集合をクリスプ出力に変換します。
-
Membership function:-
Fuzzifier と Defuzzifierをする場合使用されます。入力を0と1の間のメンバーシップ値(メンバーシップの程度)に変換するグラフ(関数)です。Defuzzifierでは、0と1間の値が実際のクリスプな出力に変換されます。一つの入力値に多数のメンバーシップ関数が適用ができます。メンバー関数には3つの種類があります。
o Singleton
o Gaussian
o Triangular(よく使われる)
Fuzzy論理制御システムモデリング例(自動車ブレーキシステム)
レベル5のFuzzy集合の自動車ブレーキシステムについて考えてみましょう。これは、前方の車の間の距離に応じてブレーキに圧力をかけます。
ステップ 1:- 言語変数を定義します。言語変数は、単語または文の用語での入力変数および出力変数です。
Distance[距離]: {Far, Less Far, Normal, Less Close, Close}
Pressure[圧力]: {High pressure, Low pressure, No pressure}
ステップ 2:- メンバー関数を作成します。
ステップ 3:- 知識ベースの規則を作成します。
上記の表を使用して、IF-THEN構造の形式でInference Engine の知識ベースに一連の規則を作成します。このシステムの最終目標は、2台の車両間の標準(普通)距離を維持することです。そしてここで私達は車の破損の圧力についてだけ考慮する。
ステップ 4:- Defuzzifier用の出力変数のメンバーシップ関数を作成します。
上記の例は、MATLAB Fuzzy Logic Toolboxなどのツールを使用して実装できます。
システムへ2台の車間の距離を入力した場合、システムはブレーキにかけるべき圧力を出力します。
より多くの入力変数を含めることやメンバーシップ関数を変更することによって、システムの精度を向上させるために調査することができます。
Fuzzy論理についてのまとめ
AIエンジニアを目指す上でFuzzy論理への理解は不可欠です。
Fuzzy論理や最先端のIT技術について、ギークフィードでは豊富にコンテンツを揃えているので
興味ある方はギークブログの記事を覗いてみてください。
- SupervisorでLaravelのQueue worker管理 - 2021-07-27
- Laravelでバックグラウンド処理。。。 - 2021-03-22
- NATファイアウォール背後のサーバーをZabbixで監視するTips - 2020-09-09
- Laravelのパフォーマンスを向上しましょう - 2019-12-02
- Laravelのサービスプロバイダーの仕組みやメリットとは - 2019-09-04