チューリングテストとサールの反論と人工知能

Web技術 デジタルトランスフォーメーション技術 人工知能技術 自然言語処理技術 セマンティックウェブ技術 深層学習技術 オンライン学習&強化学習技術 チャットボットと質疑応答技術 ユーザーインターフェース技術 知識情報処理技術 推論技術 哲学と関連トピック 禅と人工知能 本ブログのナビ
チューリングテストとそれに対するサールの反論

機械が知能を持っていると判断するためのテストとして、”会話とAI(チューリングテストから考える)“で述べているチューリングテストがある。

このテストは、1950年にイギリスの数学者・計算機科学者であるアラン・チューリングによって提案されたもので、典型的なチューリングテストでは、テスター(人間)がコンピュータか人間の相手と対話し、コンピュータが人間と同様に振る舞って、テスターがコンピュータと人間を見分けることができなければ、そのコンピュータは「チューリングテストに合格した」と判断するものとなる。このチューリングテストの基本的なアイデアは、人間との対話においてAIが人間と区別できないほどの知能を持っていれば、そのAIは人間と同等の知能を持っていると見なせるのではないかという仮説に基づいている。

このチューリングテテストに対して、アメリカの哲学者ジョン・サールの「中国語の部屋」という思考実験を用いて批判を行っている。この「中国語の部屋」は以下のようなものとなる。

「ある小部屋の中に、漢字を理解できない人(以下Aとする)を閉じこめておく。この小部屋には外部と紙きれのやりとりをするための小さい穴がひとつ空いており、この穴を通してAに1枚の紙きれが差し入れられる。そこにはAが見たこともない文字が並んでいる。これは漢字の並びなのだが、Aにしてみれば、それは「★△◎∇☆□」といった記号の羅列にしか見えない。 Aの仕事はこの記号の列に対して、新たな記号を書き加えてから、紙きれを外に返すことである。どういう記号の列に、どういう記号を付け加えればいいのか、それは部屋の中にある1冊のマニュアルの中に全て書かれている。例えば

“「★△◎∇☆□」と書かれた紙片には「■@◎∇」と書き加えてから外に出せ”

などと書かれている。

Aはこの作業をただひたすら繰り返す。外から記号の羅列された紙きれを受け取り(実は部屋の外ではこの紙きれを”質問”と呼んでいる)、それに新たな記号を付け加えて外に返す(こちらの方は”回答”と呼ばれている)。すると、部屋の外にいる人間は「この小部屋の中には中国語を理解している人がいる」と考える。しかしながら、小部屋の中にはAがいるだけである。Aは全く漢字が読めず、作業の意味を全く理解しないまま、ただマニュアルどおりの作業を繰り返しているだけである。それでも部屋の外部から見ると、中国語による対話が成立している。」

この小部屋の人間は、現在のコンピューターそのものであり、形式的な統語論(言語について、意味を忘れて、どのような形の記号を並べると文になるとか、文を構成する記号をどのように並べ替えると別の文になるか、というもの、例えば「this is a pen」は文だが「pen a this is」は文ではないというもの)を持っているだけで、意味を理解はしていない、

このような考え方から、サールは「そもそもアルゴリズムに従って動く計算システムは知能をもてない。なぜなら、計算とは定義上形式的記号操作であり、そこに意味の理解はない」と結論づけている。

サールへの反論

このロジックは一見完璧に見えて、知能のある機械を作ることは不可能でいないかと思えてしまう。しかし、実際に「部屋の外にいる人間は”この小部屋の中には中国語を理解している人がいる”と考える」状況になるには、あらゆる状況の入力に対しても適切な出力を出す必要があり、すべての入力バリエーションに対応したマニュアルを作ることは不可能なため(そのようなマニュアルを作ることは”AIの歴史と深層学習“でも述べているように第二世代のAIの目標であったが、達成できていない)、”そもそも設定が不可能である”か”形式的操作であるため意味の理解はできない”というサールのロジックが間違っていると考えることができる。

そもそもチューリングは知能の話をしていたのに、サールの議論は意味の話に置き換えられており、そこにもロジックの飛躍がある。ただし、言語は知能を表現し、伝達するための主要な手段であり、言語を理解し、意味を把握して複雑なアイディアを共有できるのは、高度な認知機能と知性の結果とも言え、知能の機能の一部である論理的思考も意味の理解により実現されることから、全く関係のないロジックではないとも言える。

そもそも、”コンピューターでシンボルの意味を扱う“で述べているように意味は形式的記号操作の対象であるシンボルそのものではなく、シンボルに結び付けられたものとなり、以下のようなSemantic triangleを構成する関係であり

Semantic Triangleでは、現実の猫に対して”CAT”というシンボルが割り当てられ、”CAT”が意味するものが更にそれに紐づけられいてる構成となる。ここでのシンボルの”CAT”は猫を意味するものではなく、それが意味するものに紐付けされた記号に過ぎない。

意味を扱うということは、この記号に紐づけられた「隠れ情報」を扱うことであり、サールの形式的記号操作で行っていることは、シンボルへの操作に過ぎず、意味を直接は扱うものではないのである。

計算(形式的操作)により意味を扱う方法はあるのか

Python言語によるプログラミングイントロダクション(1)プログラミングとは“で述べているようにコンピューターが行っていることは、計算をしてそれを憶えておくことだけとなる。よって計算(形式的操作)により意味を扱うことができなければ人工知能はできないことになってしまう。

ここで、それらを実現するための考察を行ってみる。

まず前述のように意味を扱うということは、この記号に紐づけられた「隠れ情報」を扱うことであり、隠れ情報を機械で扱うことは”隠れマルコフモデルの概要と各種応用事例および実装例“等で述べられているようなモデルを工夫することで実現することができる。また”機械学習による自動生成“で述べている深層学習をベースとしたモデルも、系列情報をモデル化しているという観点で見ると隠れ情報的なものであると言える。

このような無限に生成する手段に加えて必要なものが”情報としての生命 – 目的と意味“で述べている「目的」の導入となる。具体的にはデイヴィッド・パピノーの考えた認知モデルのうち「ニーズを持つもの(deeder)」「もしCでDならRせよ」という認知モデルを導入することが一つのアプローチとなる。これは、従来の「機会主義者(opportunisy)」「もしCならRせよ」に従った認知モデルであるルールベースのエキスパートシステムに、ユーザーの状態を加えることで、無秩序な生成に方向性を与えるものとなる。

上記のものの具体例としてエキスパートシステムに有限状態マシン(Finite State Machine)を組み合わせたものを考えてみる。専門家の知識やルールをプログラムに組み込みエキスパートシステムを構築し、FSMを使って、システムがどの状態にあるかを追跡し、エキスパートシステムの動作を特定の状態と遷移でモデル化する。

pythonによる実装例だと以下のようになる。この例では、簡単な医学的な診断を行うエキスパートシステムと、患者の状態を管理するためのFSMを組み合わせたものとなっている。

class ExpertSystem:
    def __init__(self):
        # エキスパートシステムの知識ベース
        self.rules = {
            'Symptom1': 'Disease1',
            'Symptom2': 'Disease2',
            # ... 他のルール
        }

    def diagnose(self, symptoms):
        # 症状に基づいて疾患を診断するエキスパートシステムの部分
        for symptom in symptoms:
            if symptom in self.rules:
                return self.rules[symptom]
        return 'Unknown Disease'


class FSM:
    def __init__(self, initial_state):
        # 有限状態機械の初期状態
        self.state = initial_state

    def transition(self, action):
        # 状態遷移を制御するFSMの部分
        if action == 'Treatment1':
            self.state = 'State2'
        elif action == 'Treatment2':
            self.state = 'State3'
        # ... 他の遷移ルール

    def get_state(self):
        return self.state


# エキスパートシステムとFSMを組み合わせる
class MedicalSystem:
    def __init__(self):
        self.expert_system = ExpertSystem()
        self.fsm = FSM(initial_state='State1')

    def perform_diagnosis(self, symptoms):
        # エキスパートシステムで診断を行う
        disease = self.expert_system.diagnose(symptoms)
        
        # 状態遷移を実行
        self.fsm.transition('Treatment1' if disease == 'Disease1' else 'Treatment2')
        
        return disease, self.fsm.get_state()


# テスト
medical_system = MedicalSystem()
patient_symptoms = ['Symptom1', 'Symptom3']
diagnosis, current_state = medical_system.perform_diagnosis(patient_symptoms)

print(f'Diagnosis: {diagnosis}')
print(f'Current State: {current_state}')

この例では、ExpertSystem クラスがエキスパートシステムの部分を担当し、FSM クラスが有限状態機械の制御を担当しており最後に、MedicalSystem クラスがこれらを組み合わせて医学的な診断と患者の状態遷移を行うものとなっている。

これらをさらにフレキシブルに行うには”similarity(類似性)マッチング手法での戦略(7)アライメントの改善曖昧性解消“で述べている機械学習を用いた類似性を組み合わせたり、”Huggingfaceを使った文自動生成の概要“に述べている生成系の機械学習を用いるアプローチが考えられる。

MITのロドニー・ブルックスは、この世界で人間と共存し、それ自身の権利によって知的な存在であると人間に認められるような、完全に自律的なロボット(クリーチャー)を制作することを「学問上の動機」としており、クリーチャーの必要条件として「生存における何らかの目的をもつ」ことを挙げている。

これらのアプローチによる人工知能システム構築は有効な手段の一つであると考えられる。

コメント

  1. […] チューリングテストとサールの反論と人工知能 […]

  2. […] チューリングテストとサールの反論と人工知能 […]

  3. […] チューリングテストとサールの反論と人工知能 […]

タイトルとURLをコピーしました