こんにちは、やまもとです。
創造性について、Runco教授がまとめた書籍「Creativity」を学習しつつ内容をまとめています。
書籍の中で、論理と創造性について軽く言及した部分があったので、論理についてまとめてみることにしました。
創造性の論理(あるいは創造性の論理的推論)といえばアブダクションが有名ですが、なぜ創造性と関係するのか、他の論理と何が異なるのか、といった部分を押さえたいと思います。
論理的推論
論理的推論は、次の3つが有名です。
- 演繹的推論
- 帰納的推論
- アブダクション
この3つの論理的推論は「前提(precondition)」「結論(conclusion)」「規則(rule)」の3要素を用いて説明されます。(Wikipedia「論理的推論」)
通常、各論理的推論は、3要素のうち2つが与えられたとして残り1つを推論します。
- 演繹的推論 :「前提」「規則」から、「結論」を推測する
- 帰納的推論 :「前提」「結論」から、「規則」を推測する
- アブダクション:「結論」「規則」から、「前提」を推測する
しかし、書籍「Creativity」では4つ目の推論方法としてTransductionが言及されており、このやり方では分類しきれません。
そこで、3要素の組み合わせではなく、3要素の順列で独自分類を考えてみました。もちろん、独自分類なので論理学的な正しさは保証できませんが、参考になれば幸いです。
以下が、その分類です。
向きの概念を導入したので、3の組み合わせ個数(=3)ではなく、順列の個数(=6)に分類されます。6個に分類されるため、論理的推論の4つに(無理矢理)類似的推論と経験的推論の2つを追加しました。
演繹的推論
演繹的推論とは、前提条件と規則をもとに結論を導く次のような論理です。
- 前提:Aである
- 規則:AならばBである
- 結論:よって、Bである
「前提が確定しないと、適用すべき規則が決まらない」と考えて、前提→規則→結論の順にしました。
例えば、「西の空が曇っている(前提)。西の空が曇っていると、数時間後に雨が降る(規則)。よって、数時間後に雨が降る(結論)」といった推論のことです。
あるいは、古典物理学であれば「物体の初期位置と初速度(前提)を、運動方程式(規則)に代入すると、t秒後の物体の位置と速度(結論)を予測できる」というのも演繹的推論(あるいは論理)になります。
そして、演繹的推論のみが、前提条件と規則が正しい場合、結論が必ず正しいものとなることが保証されています。
プログラミングの思考法
やまもとはIT業界にいるので、この論理的思考方法を使う場面として、ロジックあるいはアルゴリズムといった処理をプログラミングする場面でよく使いそうだと思いました。ここで、「前提」は入力データ、「規則」はロジックやアルゴリズム、「結論」は出力データと考えます。
ロジックやアルゴリズムといった処理の実装(プログラミングのこと)では、設計された通りに動作するようにプログラムを書く必要があります。しかし、多くの場合、設計書には入力データと出力データ、および処理内容だけが示されていて、処理を実現するアルゴリズムは自分で考えなければなりません。この時、プログラマーの脳内では、「データAが入力されたとき(前提)、〜というロジックorアルゴリズムをコーディングすれば(規則)、仕様通りの出力になるはず!(結論)」と考えていると思います。少なくとも、やまもとはそう考えていました。これは、演繹的思考ではないでしょうか?
帰納的推論
帰納的推論とは、前提条件と結論から規則を導く推論で、次のように考えていきます。
- 根拠1:前提A1から、結論Bが得られた
- 根拠2:前提A2から、結論Bが得られた
- 規則 :前提A(A1,A2を含む)からは、結論Bが得られる
厳密に言えば、帰納的推論には種類があり(参照:Wikipedia「帰納」)、これは枚挙的帰納法と呼ばれる推論方法です。枚挙的帰納法では、同じ結論が得られる複数の根拠を挙げ、根拠と結論の規則性を一般化します。上記は、2つの根拠に基づいていますが、根拠はさらに多くても構いません。
ただし、この推論方法から得られた規則には、例外があるかもしれません。そのため、この方法では規則性が正しいことは保証できません。
しかしながら、この推論方法は、科学全般で使われています。大抵の科学では、多くの実験を通して根拠を積み上げ、その根拠に基づいて規則性を一般化することで理論を作っていきます。これは、物理学や化学、生物学といった自然科学だけでなく、心理学や経済学、経営学といった社会科学でも同様です。
ソフトウェア設計の思考法
演繹的推論と同様に、帰納的推論がソフトウェア開発で使われているかどうか考えてみました。思いついたのは、帰納的推論は、ソフトウェア設計の段階で使っている思考法ではないかということでした。
顧客の要求を書き起こした要件定義が終わった段階だと、顧客の要求が「あれも」「これも」と列挙されています。これをソフトウェアにするには、入力→処理→出力といった形にまとめていかなければなりません。これが、ソフトウェア設計という作業になります。このとき、同じ規則性を持つ要件は1つの処理にまとめるように設計していきます。なぜなら、実装するプログラム数が少ない方がコストを抑えられるからです。
ここで、顧客の「要件」とは、「あ〜したら(前提)、こ〜なる(結論)」という「根拠(になるもの)」と見做すことができます。また、当然、要件を満たす「処理」を実現するロジックやアルゴリズムは、「規則」と見做すことができます。従って、ソフトウェア設計は、複数の要件(根拠)を抽象化した処理(規則)を推論する行為と考えることができます。そのため、実はソフトウェア設計では帰納的推論のような思考法を使っているのかもしれません。
洞察的推論
洞察的推論はやまもとの造語で、通常、この推論はアブダクションとか仮説形成とか呼ばれます。
洞察的と名付けたのは、前回のWallasの4ステージモデルの第3段階「照射」で使われる推論方法だからです。
この方法では、洞察によって得られた「結論」を出発点とし、その結論の確からしさを次のように推論していきます。
- 洞察:結論Bである
- 規則:結論Bをうまく説明できるのは、規則A→Bである
- 前提:よって、前提Aが存在する
つまり、結論を仮定して、それを説明する理論と、前提を推論していく方法です。そして、「論理が成立する」と確信すると、ただの閃きだった洞察が、論拠のある洞察的推論に変化します。
しかし、この方法も、いくら「結論」と「規則」が真であったとして、導かれた「前提」の正しさは保証されません。そのため、Wallasの4ステージモデルでは、第4ステージ「検証」があります。
「検証」では、推測された「前提」と「規則」が与えられたとき、洞察した「結論」が得られることを確かめることになります。すなわち、「検証」は、真性が保証されている演繹的推論で行われることになります。
実は、洞察的推論は、科学でもよく使われているのではないかと思います。少なくとも、やまもとが携わっていた素粒子物理学の理論研究ではよく見られたように思います。
遠い昔で記憶が曖昧ですが、やまもとの修士課程の当時、たしか「背景B場を含むDブレーン上の有効場の理論を作ると、可換性が成立しない場の理論が必要になる」という話がありました(意味は理解しなくて大丈夫です)。これは、「背景B場を含むDブレーン」(結論)をうまく説明できるのは、「非可換場の理論が、その有効場の理論になっているとき」(規則)、だから「非可換場の理論」が存在する、という洞察的推論になっているように見えます。
デバッグの思考法
前2つの推論方法と同様に、洞察的推論をソフトウェア開発の場面に当てはめてみると、洞察的推論はデバッグ作業で使っているように思いました。デバッグとは、ソフトウェアのエラーを修正していく作業のことです。ほとんどのソフトウェアは、いまだに開発者の手作業で作られているので、ほとんどの場合、人間のミスによるエラーがプログラムに入り込みます。そのため、ソフトウェア開発にとって、デバッグは必須作業です。
やまもとの場合、デバッグ作業をするとき、次のように考えていました。
- 洞察:エラーが発生を知り、状況(種類と場所)を確かめる
- 規則:このエラーが起きうる処理プロセスを想定する
- 前提:プロセスを逆算して、エラーを発生させる原因を予測する
この後、予測された原因を修正してみて、同じエラーが発生しないことを検証します。検証は、「前提」(エラー原因が修正済)と「規則」(プログラム処理)が与えられたとき、「結論」(エラーが発生しない)になることを確かめる行為です。すなわち、検証は演繹的推論に基づいて行います。
結果として、エラーの発生原因の予測は洞察的推論で考え、予測の検証は演繹的推論で行っていました。
さらに言えば、洞察的推論ができるかどうかは、ソフトウェア技術力を大きく左右すると思われます。
もし、デバッグ作業を演繹的推論でやろうとすると、「処理プロセスを細かく分けて、細分化されたプロセスの入力データと出力データを逐一チェックしていく」という膨大な量の作業を人海戦術で実施することになるでしょう。
すると、洞察的推論なら5分で解決できたことが、演繹的推論だと1週間の徹夜作業になる、といったことが起きる可能性があります。
拡張的推論
拡張的推論もやまもとの造語で、Transductionの良い訳語無かったため造りました。
Transductionは、2~7歳の子供に見られる論理的推論の方法で、「特定の事象aが事象bを引き起こすならば、事象タイプAは必ず事象タイプBを引き起こす」というものです。
日本語の説明はほとんどないですが、英語で検索すると次のような説明が見つかります。
the tendency of a child in the preoperational stage of cognitive development to see a connection between unrelated instances, using neither deductive nor inductive means to do so. For example, the child might say, I haven’t had my nap, so it isn’t afternoon. [proposed by Jean Piaget]
APA Dictionary for Psychology
According to Jean Piaget‘s theories on cognitive development, transductive reasoning or transductive logicis the primary form of reasoning used during the preoperational stage of development. This stage occurs approximately from the ages of 2-7. Transductive reasoning employs the following reasoning: “If A causes B today, then A always causes B.” As such it based on a generalization from instance to instance, so it is neither deductive or inductive in logical terms
Psychology Wiki
That sports car is really fast, and there is another sports car! It must be fast too!
「Creativity」(Runco, 2014)
この推論方法では、最初に「事象aが事象bを引き起こす」という「規則」を知っている必要があります。そして、「規則」を出発点として、次のように推論します。
- 規則:事象a1が事象b1を引き起こす
- 前提:事象タイプAの別の事象a2が起きた
- 結論:事象タイプBの事象b2が起きる
もちろん、冷静に考えれば「規則a1→b1」が成立したからといって「規則a2→b2」が成立するとは限りません。この推論は、「単称因果a→bを一般因果A→Bに拡大解釈をしている」(参考:単称因果と一般因果)ため、いわゆる「早まった一般化」の誤謬になる可能性が高いです(参考:Wikipedia「誤謬」)。
サンプリング調査の思考法
この拡大的推論は、2~7歳の子供の認知として研究されていましたが、実際には大人の社会で見られます。
特に、国勢調査などの公的調査、テレビ視聴率などの民間調査、選挙速報などのメディアの調査など、サンプリングを使った統計的調査では、一部の回答から全体傾向を掴む必要があるため、拡大的推論が必ず必要になります。
しかし、上記のように誤謬による罠があります。
実際、やまもとが大学生のころ、朝のニュース番組のとあるコーナーの内容にものすごく違和感を感じたのを覚えています。
その内容は、「渋谷にいた女子高生10人に、今流行っているものインタビューする」というものでした。その後、アナウンサーが「今の女子高生の間では、〜が流行っているんですね」とコメントして、コーナーが終わりました。
一見、何もおかしなことはないように聞こえますが、自分は「渋谷にいた女子高生10人」の話が「今の女子高生(全体)」の話にすり替えられていて、強烈な違和感を感じてしまいました。
この例を、拡大的推論の形にまとめておくと、次のようになります。
- 規則:渋谷にいた女子高生10人(事象a1)で、〜が流行っている(事象b1)
- 前提:女子高生(事象タイプA)は、全国各地に存在する(事象a2)
- 結論:全国で、〜が流行っている(事象b2)
このことから、サンプリング調査で統計的に正しくない方法で拡大的推論を使うと、統計を使った詭弁になってしまう可能性があります。
類似的推論
類似的推論(類推、アナロジー)は、広義の帰納的推論に分類されます(参考:Wikipedia「帰納」)。
しかし、狭義の帰納的推論と異なるのは、「AとBは似ている」という一種の洞察から推論が出発する点です。その意味で、洞察的推論の1つと考えることもできます。
類推的推論は、「類似」という洞察(結論)を出発点にして、次のように推論します。
- 洞察:AはBと似ている
- 前提:AならばCである
- 規則:であれば、BならばCであろう
類似的推論が導くものも「規則」であり、狭義の帰納的推論とこの点で一致します。ただし、「前提」の「AならばCである」も既知の規則なので、少し無理をした分類になっているかもしれません。しかし、洞察を起点として、規則性を導く推論であることは表せているかと思います。
フーリエ解析と類似的推論
やまもとが以前から思っていたことですが、類似的推論(アナロジーによる推論)は、数学におけるフーリエ解析に似ているように思えます。
フーリエ解析とはフーリエ変換を使った汎用的な問題解法ですが、最も簡単な場合として、2階の微分方程式の解を求める問題の場合を例にしましょう。2階の微分方程式についてのフーリエ解析は、次のようなステップで行われます。
- 実空間の2階の微分方程式を、フーリエ変換(類似)によって、波数空間の2次の代数方程式にする
- 2次の代数方程式に、解の公式(前提)を使って、厳密な解析解f(k)を導出する
- 波数空間の解析解f(k)を、逆フーリエ変換(類似)によって、実空間の解析解f(x)にする
- これにより、実空間の2階の微分方程式と解析解f(x)の間に新しい規則(規則)が判明する
ステップ3で解f(x)が得られているため、問題解法としてはステップ3までで十分です。しかし、アイデア発想法としては、ステップ4で判明する新しい規則性こそがアイデアになるため、ステップ4まで進む必要があります。
この解析ステップを可換図で書くと、次のようになります。類似(結論)と前提と規則が、ピッタリ当てはまることが分かるのではないでしょうか。
ここでのポイントは、実は2つの問題が全く同じ問題と見做すための「フーリエ変換」を、2つの事柄を結びつけた「類似」に置き換えたことで、問題解法からアイデア発想法に転用している点です。
経験的推論
経験的推論は、経験則に基づいて自動的に判断してしまうヒューリスティックスのことです。
この推論方法は、この6分類には、無理矢理当てはめました。「規則」を知っている状況で、「結論」を見たときに「前提」を推論するような場合を考える中で、ヒューリスティックスが当てはまるのではと思い至りました。
例えば、「体調が悪いと顔色が悪くなる」という経験則(規則)を知っている人は、「顔色が悪い人」(結論)をみると、「体調が悪いんだろうな」(前提)と考えます。すなわち、「規則」と「結論」をもとに「前提」を推論します。
- 規則:体調が悪い人は、顔色が悪い
- 結論:顔色が悪い人がいる
- 前提:その人は、体調が悪いのだろう
人間は生きているだけで経験を積み重ねていくので、経験的推論の力は年齢とともに自然に増加していきます。しかし、経験的推論は「規則」から「前提」を推論するため、新しい「規則」を創り出すことには向いていません。
論理的推論と創造性
では、論理的推論は、創造性とどう関わるのでしょうか?
ここで、Wallasの創造性の4ステージモデルを思い出して見ましょう。創造性が発揮される「照射」ステージは、無意識の思考の中で、突然、ある一貫した構造を捉えるステージでした。一貫した構造とは情報の論理的構造のことで、無意識下の論理的推論によって論理的構造が形になった瞬間が「閃き」「天啓」または「照射」と呼ばれる状態だと考えられます。簡単に言うと、論理的推論によって「閃き」が得られていると考えられます。
ただし、Guilfordの創造性の4要素の中で最も重要な「独創性」を導きやすい論理的推論は2つに絞られます。なぜなら、独創的であるためには、前提条件や既存の規則性に縛られないアイデアが必要だからです。
その視点で見ると、演繹的推論や帰納的推論は「前提」を出発点にしているため、大抵の場合は前提を覆すことができません。演繹的推論は、前提と既存の理論を使って結果を予測するため、前提は所与である必要があります。帰納的推論は、前提として根拠が必要なため、根拠を超えたアイデアを考え出すことができません。そのため、演繹的推論や帰納的推論では、「独創性」は生まれにくいでしょう。
一方、拡張的推論や経験的推論は、サンプリングによって少なくとも部分的に適用可能な「規則」や、これまでの経験によって形成された「規則」を土台として推論を組み立てているので、「規則」が適用できない物事については推論することができません。しかし、多くの場合、物事が独創的であるためには、「規則」の適用範囲から外れている必要があります。そのため、拡張的推論や経験的推論からは、「独創性」は生まれにくいでしょう。
結局のところ、「独創性」を生みやすいのは「結論」を出発点として組み立てる論理的推論です。洞察的推論は、洞察によって得られた「結論」を出発点にして「前提」を推論する思考方法です。「前提」を導出するので、既存の前提条件を超えた「前提」を生み出すことが可能になります。類似的推論は、類似という洞察によって得られた「結論」を出発点にして、「規則」を推論する思考方法です。こちらも、「規則」を導出するので、既存の規則や法則を超えた「規則」を編み出すことが可能になります。
まとめ
「前提」「規則」「結論」の3つの要素の関係性を使って、論理的推論を以下の6つに独自分類しました。
- 演繹的推論
- 帰納的推論
- 洞察的推論(アブダクション)
- 類似的推論(アナロジー)
- 拡張的推論(トランスダクション)
- 経験的推論(ヒューリスティクス)
ただし、創造性の最重要要素である「独創性」を生み出しやすいのは、「結論」から推論していく洞察的推論と類似的推論だと考えられます。
また、ソフトウェア開発では、演繹的推論、帰納的推論、洞察的推論の3つを駆使していました。特に、独創性と生みやすい洞察的推論を使う場面として、デバッグ作業がありました。
もしかすると、創造性を鍛えるためには、デバッグ作業を実施すればいいのかもしれません。