競プロ始めて半月経った

4月だし新しいことをやろうと思い、学生時代に少しだけかじった競プロを再開すべく4/10にatcoderのBeginnersSelectionというのを解いてみた。2時間半ほどで全て解くことが出来て、(今思い返すとこれは勘違いなのだが)「お、割といけるじゃん!」って思って本格的に趣味の競プロをやることにした。

平日夜と週末、atcoderの過去問をひたすら解く。普段の仕事でのコーディングとは別の数学パズルっぽい考察が必要で、なかなか楽しい。毎週末やってるABC(ビギナーズコンテスト)にも2回でてみたりした。現時点の実力はレーティング1200点前後(緑と水色の間)のようだ。

書籍は二冊、とくに鉄則本は読み通して、演習問題も結構解いた。 book.mynavi.jp

蟻本も持っているが、こちらは半分も読めてない。蟻本を何周もしてきっちり自分のものにするだけで青コーダーは行ける気がする。 book.mynavi.jp

それにしても自分が学生時代のときよりも練習サイトやノウハウ資料などが整備されていて、非常に取り組みやすい。 練習の達成度を可視化してくれるAtcoder Problemsという有志サイトもあって、これがまたモチベーションをアゲてくれる。こういうゲーミフィケーション大事ですね。

本エントリ書いてる時点で完答136問. 難易度は色々混じってるので目安ではあるが数字で見れるのは嬉しい。

最近はそのAtcoderProblemsにあるBootCampという初級+αくらいの問題集と、Atcoderで常設コンテストとして出ている典型90問という問題集(こちらは中級レベル)を解いている。

週末よく一人で部屋で酒を飲む習慣があったが、この半月で酒量がものすごく減った。なので競プロが何の役にも立たなかったとしても、これはこれで凄く良い気がする。

小さなジャンプ

最近、自分の強みって何だろう?というのを改めて考えた。

私は色んなことに興味があって世間一般のエンジニアと比べると新しいことを学び取るのが多分かなり速いほうで、だから知識はいっぱい持ってると思うのだが、知識それ自体は仕事のアウトプットに直接結びつくものではない。 実際、知識ってありすぎると逆に頭でっかちになって行動力を削ぐような副作用も実際あると思う。

じゃあ肝心のエンジニアとしてのスキルは?と自問すると、そんなに強い方でもないと思う。 バグなく機能を実装したり、込み入った問題やバグを素早く原因究明して直したり、というソフトエンジニアの実務上の能力は低くはないと思うが(今の会社の同僚のエンジニアと比べると)取り立てて高くもない。

じゃあ新しいものを生み出す研究や発明的な能力は?と考えると、それも国際学会で賞を取ったり有用な特許技術を考案したりとかいう実績もないから、そういう領分でもない。

そうやって今までの経験を棚卸しして思ったのは、

自分は「小さなジャンプ」が得意だな。

ということだった。それについて、以下にちょっと詳しく書いてみる。

スキルの高いエンジニアと会話してると良く感じるのが、「これは出来る」「これは試行錯誤が必要」「これは出来ない」という判断を取り組む前にかなり正確に見積もることが出来て、実際そのとおりなことが多いという点だ。研究と違ってプロダクト開発では試行錯誤には時間的な「期限」があるから、確実に出来ることを積み上げて何かを作り上げようとする。それは合理的だし、それを確実にやりきれる優秀さは大事だ。

でも、僕は言ってみれば「ロマン派」というか「ちょっとそれは期間内にやると言い切っちゃうのは出来なかったら信用失いそう」みたいなところのギリギリのところをどうしてもやりたくて、期間が決まってるなかでそういうテーマをつい入れてしまう。で、それを数日間(他の作業やったりしながら)「良い答えがパッと思いつかないものを、ずーっと考え続ける苦しいマゾ時間」として浴びつづけると、何か最後にはシンプルなウマい方法を思いつくのだ。思いついたら実際にそれを形にする。

その、最終的に出来上がったものは「ぱっと見、すぐに思いつきそうなごく当たり前の単純な感じ」のものであることが多く、なのでそれが「うぉーすごいね!」とはならないことが多く、少し悲しくもあるのだが「自分はそういうことが出来るのが当たり前」なんだから「別に褒められなくてもそれが当たり前の人として平然と生きていれば神様がこの能力をどんどん強くしてくれるだろう」みたいな心の処理をして今までやってきた(今回、そういえばそういう風にいつからか心がけてきたな、と改めて思った)。

これが僕にとっての「小さなジャンプが得意」という強みだなと思った。

ググっても出てこないし、どこの本にもどこの論文にも書いて無くて、ちょっとした発想のジャンプが必要になるのだけど、いったん飛び越えてしまうと「誰でも思いつきそうな感じ」の単純な解決策になるようなものを見出すのが得意

AIの新しい方法(TransformerとかNeRFとか)を生み出すとかいうレベルではないのだけど、どこにも答えが書いてない小さな課題を前にして小さなジャンプが出来ること、これは「あなたの仕事の上での強みは何ですか?」と聞かれてぱっと説明するのが難しいけど、仕事する上で重要な能力の一つだと自負してよいだろう、と思ったのだった。

論文の気になるところだけを短時間で読む方法

先日、ビット量子化の手法でBitNetの論文がでてSNSで話題になりました。私も気になったので論文(とその参照論文)を1時間ほど確認して自分なりの要約をツイートしたところ、結構多くのリツイートやいいねをもらいました。

僕みたいなソフトウェアエンジニア職ではあるけどプロの研究者ではない人が最新の技術や論文を読む際に、「気になるところだけに絞って読む」ことが出来ると都合が良いです。

それについて人それぞれ色んなやり方あると思いますが、本エントリでは私の読み方を説明し、それに基づいた具体的な論文読み例を書いてみます。

その論文から得たいことを明確にする

論文には概要(アブストラクト)が付いているので、まずそれを読んで「その論文から得たいこと」を明確にします。アブストラクトに加えて、本文の最後の結論(コンクルージョン)も併せて確認すると良いこともあります。

例えば、BitNetの論文でしたら、

  • どの部分をビットで計算してるのか?DNNモデル全体か?それとも一部か?
  • 4bitや8bit量子化と比べて何が優り何が劣るのか?性能的に完全に上位互換なのか?
  • 蒸留(学習時は普通の数値を使い、学習済みモデルをbitに変換する)と比べて(以下同様)

が私にとって「気になること」でした。なので「これらの問いの答えを論文の中から探す」という読み方をすることになります。

しかしそれだと、もし仮に論文の中でこれらの問い以外の重要なことが書かれていてもそれに気づけない可能性はあります。そうだとしても、割り切ってそれを諦めるのが重要です。そもそも、論文の内容をくまなく読もうとしたら短時間で読むのは(その分野のプロの研究者とかじゃない限り)困難だと思います。

「問い」の答えになりうる「自分の仮説」をでっち上げる

前節で述べたとおり、論文から得たいことを「問い」のリストとして明確にしました。そうしたら早速本文の確認に入る、、、のは得策ではないと私は思っています。

その前に各「問い」の「答え」が「論文中にどのように書かれているだろうか?」というのを考えます。そして「こういう答えが書かれているのではないか?」という仮説を自分なりにでっち上げます。

例えば、BitNetの論文でしたら、以下のとおりです。

  • 「どの部分がビット計算か?」および「蒸留と比べてどうか?」についての仮説

学習フェーズと推論フェーズでいうと、既に蒸留という手法があるから推論フェーズだけでビット計算するというのではインパクトが薄そう。NVIDIAのハードは特に学習時に掛かる大量の計算負荷をさばけるという点で市場で圧倒的優位に立っていて、この論文はマイクロソフト系の研究室のものだからそれに対抗する技術開発のはずで、だから特に学習時の計算を軽くする話に違いない。

DNNのモデル全体をビットでやるものかどうかはよくわからない。積和演算と活性化関数の全てをビットでやるとしたら、それは決定的な論理回路になってしまってAI的ではない気もするから一部だけビットでやるという話かもしれない。でも全てをビットで計算しながらAI的な振る舞いを可能にする手法なのかもしれない、そこは注意してみよう。

  • 「4bitや8bit量子化と比べてどうか?」についての仮説

素朴に考えれば、ビット数の少なさとモデルの性能は原理的にトレードオフの関係にあるはず。その原理を打ち破る性質があるとしたらどんなものだろう?情報が少ないほうが過学習を避けて汎化能力があがるドロップアウト正則化みたいな話と関連してるのだろうか? しかしそれだと逆にバイアスが掛かりにくくて学習が進みにくそう。モデルの表現力を維持しつつ少ビット化による正則化の効果が相まって性能があがりましたという話になりそうだ。だから、特にビット計算でありながら表現力を維持するためのキーポイントが何かという点が問題であり、そこに注目して読む必要がありそう。例えば最終レイヤは通常ビット数のDenseネットがあるとか、あるいは活性化関数はビット演算じゃないとか?だろうか。

このように、仮説を立てると論文に対する読みが「オープンクエスチョン」ではなく「クローズドクエスチョン」になります。友人と食事にいくときに「今日何食べたい?」って聞くよりも「今日カレー食べたくない?」って聞いたほうがお店が決まるまでスムーズであることが多いのと同じです。また、仮説を立てることによって、たとえ仮説が外れた時に「仮説とどう違っていたのか」という情報が読みに加わり、同じ時間で論文を読んだときに得られる情報が増えます。「カレーは今日はいいかなぁ」「どうして?」「もう少しさっぱりしたものが食べたい」という風に、「カレーに対する反論としての情報」が得られるわけです。

仮説を立てにくい時

前節で、仮説を立てるのが大事、と書きましたが土地勘がない分野の論文の場合、その仮説を立てようにも糸口すらみえないこともあると思います。そういうときは「ガード下の居酒屋で飲んでるおっちゃんとの対話」法という方法を僕はよく使います。

これは、めちゃくちゃ素人の相手、すなわち話を聞いた範囲だけから率直にツッコミや感想を述べる相手論文読みの相談相手として想像するという方法です。「飲んでるおっちゃん」はいわばそのモデル像です。

BitNetの論文の例でやってみましょう。

(Q) 最近流行りのAIで、深層学習っていうのがあって、いわば脳みそを真似た仕組みなんですけど、脳みその中の神経回路って電気信号で動いてるんで何ボルトみたいな電圧の高いところ電圧の低いところという感じで電圧の計算をしてるんです。 電圧って3.5ボルトみたいな小数点以下の微妙な数もちゃんと加味しないと正確な計算ができないから、脳の仕組みを真似しようとしたら小数点の計算をしないといけないんですけど、最近、少数じゃなくて整数、それも0から255までの数で計算するという方法が出てきて、少数の計算よりもコンピュータの回路が小さくて済むのでお得だということで注目されてるんです。

(A おっちゃん). それは、255だったら2.55ボルトってことにすれば少数と同じじゃねーの?

(Q) そうなんですけど、本当の脳みその神経は厳密に3.1415926535ボルトとかあるわけで、それを少数2桁にちょんぎってしまうという方法がAI研究の世界で流行ってるって話なんですよ。

(A) ふーん. で、君は今日オレに何を聞きたいわけ?

(Q) で、今日僕が読もうと思ってる論文、0から255じゃなくて「0か1」という極端な方法でも結構上手く行くよ!っていう方法らしいんです。結構中身が難しいので読む前に中身を想像してから読もうと思って話し相手になってもらいたくて。

(A) 0か1ってスイッチみたいなものか。電気つけるつけない、ってことかな。それじゃ、スイッチとAIは何が違うのよ?

(Q) えーと、コンピュータの集積回路はスイッチの集まりなんですけど今のAIはスイッチだけじゃなくて、学習が出来るためにはパラメータの勾配を計算する仕組みがあって、、ってあれ?「パラメータがビット表現なのか計算結果がビット表現なのか」というのはビット量子化においてどういう分類になるんだろう?…。それと、もしスイッチの仕組みだけでAIやるとしたら…決定木みたいな感じしか思いつかないな…。

(A) 何言ってるか全然わかんねーよ。簡単に説明しろ。

(Q) あ、、すみません。でも、話し相手になってもらって結構自分なりに掘り下げることが出来たんで、家に帰ってその論文読もうと思います。あ、これ、飲み代です。

(A) お、サンキュー!

みたいな感じです。(ふざけてるように思われるかもしれませんが、「最先端の論文を素人目線で考える」のはめちゃくちゃ大事なことだと思ってます。何事も「本質的な理解は常に素人目線に帰着する」って僕は信じています。

本文も2段階読み「目星を付ける→入念に理解する」

さて、仮説を何らか立てたので、本文を確認する準備ができました。本文を確認しましょう。

ここでのコツは、「読むべき箇所をピックアップする」と「実際にその箇所を読む」とで2段階でやるということです。「目星を付けてから読みに入る」ということです。

具体的にはまず本文を上から下までざーっと眺めたり拾い見たりしつつ「自分なりに立てた仮説に関係ありそうなところ」をピックアップします。繰り返しになりますが「論文を読んで」はいけません。でも「読まなくても目に入って分かってしまった」というときもあり、それはそれで良いです。

そうやって目星をつけて大体全体見たかな、と思ったらピックアップした箇所とその周辺を入念に読み込みます。そこで書いてあることが、その論文の別の箇所や、ときには別の論文(特に、同じ著者による従前の研究)を参照しているケースもあります。どうしてもそれを参照しないと明確に分からなそうだと思ったら、それもちゃんと参照しに行きます。参照論文の読みに移る際も「いま何を読もうとしてるのか」を明確にし、目星を付けてから読むという風に徹底します。けっして上から下まで全部を読み込んではいけません。

そうやって読んでいくと、最初に目星をつけたところが大体読めてきます。それで、当初の目的である「問いのリスト」が消化できたら、それで論文を読み終えたことにして、自分なりに問に対する答えをまとめて終わり、ですし、「新たな問い」や「新たな仮説」が浮かんできたら引き続き論文を同様の方法で読んでいくことになります。

というわけで

論文読みに関する自分なりの方法を書いてみました。 実際に、BitNetの論文はこのような方法で1時間ほどで読みました(なのでもしかしたら読んだ結果の私の理解は厳密には正しくないかもしれませんが、少なくとも自分にとって得るものはありました)。

特にポイントとなるのは、「仮説を立てる」部分で、仮説の巧拙は「もともと自分が持っている知識の幅や量」に依存していることも分かります。なので、最先端の技術確認と同じく既存の知識を体系的に理解(それは論文ではなく書籍であることが多いでしょう)することも大事でしょう。

ではまた!

位相空間の連続写像や測度空間の可測関数が「逆」写像を使って定義される理由

当日投稿でもう一つ adventar.org の記事を書いてみました。

突然ですが、数学を勉強してると、以下のような疑問に突き当たるのは僕だけでしょうか?

これは分かってしまえばとても簡単なので、説明します。

結論をいうと、逆写像は集合の演算(AND, OR = 共通部分、合併)を保つけど、写像(を集合関数と見たもの)は保たない、からです。

それぞれ見ていきましょう。

写像と集合演算

例えば集合をX,YとしてXからYへの写像Fがあるとします。 Xの部分集合X1,X2に対してAND,ORしたものと、それらのFによる像 F(X1),F(X2) (=Yの部分集合) に対してAND,ORしたものを比較してみましょう。

  • F(X1 and X2) ⊆ F(X1) and F(X2)
  • F(X1 or X2) = F(X1) or F(X2) (これはOK)

像はAND演算を保ちません。写像は「行き先が一つに定まってれば良い」、つまり異なる入力に対して同じ出力があってもよいです。これは直感的には「写像を通すと情報が減る」という風に私はイメージしています。

写像と集合演算

同様のことを、今度はYの部分集合Y1,Y2を使って逆写像F^{-1}について考えてみましょう。逆写像写像と違ってもともと集合関数です。

  • F^{-1} (Y1 and Y2) = F^{-1} (Y1) and F^{-1} (Y2)
  • F^{-1} (Y1 or Y2) = F^{-1} (Y1) or F^{-1} (Y2)

こちらはイコールになります!「逆写像を通しても、情報は減らない」し、「増えもしない(なぜなら入力よりも情報量が減ってるのだから当然)」から、「情報は同じ」です。それが「逆像が集合演算と可換」になることの直感的なイメージです。

つまりは、

位相空間における開集合や、測度空間における可測集合は、集合演算に対して閉じていることが要請されるので、well-definedな理論を作るにはその要請をキープするような写像を考える必要があるので、集合関数が集合演算と可換になってる必要があるので、逆写像で定義されるわけです。

余談: コホモロジーホモロジーよりも重要になる理由

また、これと直接同じ理屈ではないのですが、「ホモロジーよりもコホモロジーの方が自然で使い勝手が良い」という、似た話があるので余談ですが紹介しておきます。

集合XとYがあり、X上で定義された関数F1と、Y上の定義された関数F2があるとします。値域はF1、F2とも例えば自然数だとしましょう。 (別に自然数じゃなくても連続値でもTrue/Falseの2値でも{男、女}でも{英語,日本語,中国語,ドイツ語,..}とかでも、なんでも良いです。機械学習の特徴量抽出とかのイメージでも良いです。)

それと、XからYへの写像fがあるとします。このときに、fとの合成を使って「新しい関数」を作る方法を考えてみましょう。

まず、F1とfの合成を考えてみましょう。F1はX上の関数ですが、x∊Xに対してF1(x)は自然数(値域の要素)になってしまい、写像fと合成が出来ません。またx∊Xに対して先に写像fを適用してしまうと集合Yのほうに舞台が移ってしまい関数F1は置いてけぼりです。なので合成が出来ません。

では、F2とfの合成はどうでしょうか?F2はY上の関数ですが、 x∊X に対して写像fで写すとf(x)∊Yとなり、関数F2を適用でき、F2(f(x))は自然数(値域の要素)となります。めでたく、Y上の関数F2からfとの合成によって新しい(X上で定義された、値域が自然数の)関数を作り出すことができました!!

(まだ私も勉強し始めたばかりですが)ホモロジーよりもコホモロジーのほうが出来ることが多い、っていう話はこういう理由から来てるようで、一見違いがないように見える部分にも「本質的な違い」が秘められてるという面白い例だと思います。

参考ページ

汎用人工知能の観点で「新実存主義」を読んでみた(前編)

本記事は

adventar.org

の 12/10当番分の記事です。

はじめに

ドイツ、ボン大学のM.ガブリエル教授をご存じでしょうか?「哲学界のロックスター」の異名を持ち、現代の気鋭の哲学者と評される氏は、メディアに露出する機会も最近多いです。

そんな彼の著書の中で、岩波新書に邦訳がある「新実存主義」という本を、汎用人工知能の観点で読んでみた私の個人的な感想を書くのが本記事の主題です。

www.iwanami.co.jp

それと、予めお断りになりますが、私自身は哲学の専門的素養はなく、新書や選書を20~30冊程度読んでいるくらいの、所謂「趣味の哲学徒」です。 もちろん、本記事に対する支持・批判等のツッコミは大歓迎です。

実存主義」とは?

まず大まかに、新実存主義というのがどんな思想なのか、私の理解を述べてみます。

「新」実存主義と銘打ってるので実存主義と関連があります。実存主義というのは、1900年代前半に隆盛を誇った思想で、その時代背景からも推測されるとおり、「全体より自分を生きよう」みたいな思想です。

もうちょっとちゃんと書くなら、国や企業や民族といった広い意味でのコミュニティや、宗教や文化といった、社会を作りあげている要素が我々の間で「真実性」「真理性」について見解を共有する源になっているのだけど、それが「あたりまえ」だと思い込みすぎると個々の人々が望んでない戦争を国同士が起こすことになってしまったり、価値規範の下で社会的な階級が固定されてしまって「差別」が起きたり、もっといえば本当に人間がもっている創造性や多様性をフル発揮できない社会になってしまう、その呪縛から逃れるために個々の人々が生きている「実存」を大事にしよう、という考え方です。

実存と似た言葉に「実在」がありますが、実在はどちらかというと個々の人間の人生から離れて、「社会の側」あるいはもっと広く「自然の側」にあるものを指す言葉です。対して実存という言葉は、人間が持つ感情や価値観といった客観的/物理的な物事に還元できないもののほうを第一に考えるようなニュアンスもあります。

さらに、いまここで私が使った「感情」という言葉さえも、例えば「悲しい気持ち」という言葉には「意味」がありますが、この言葉を発した人間の「本当の悲しさ」が言葉で表現しきれるわけでなく、その人間の人生そのものというのは「言葉よりも先」に存在しているわけです。こうした、言葉に先立つ個々の人間の生に目を向けるのが「実存主義」です。

実存主義は原理的に考えるととても厳しい考え方です。言葉よりも先に、どこかから「人生の考え方・生き方」を借りてくることよりも先に、自分の人生に目を向けるという思想なのですから。

仮にある人が身体だけ大人になってから、何も知らない赤ん坊の状態に戻されて意識だけが継続し、目の前にある「人生の原体験」にさらされ続けるとしたら、とてつもない不安に駆られるでしょう。しかも、その体験してる「現実」すら、その人間が「その現実にするか」を選ぶことが人間には原理的に可能なのです。

「新実在論」とは?

M.ガブリエルは、新実存主義の前に「新実在論」ともいうべき、「実在」という概念にも新しい見方を与えています。彼は「『世界』は存在しない」と言っています。我々は「世界」といった言葉を聞いたとき、何か我々がいま住んでいる「この世の全体」というイメージを思い浮かべますが、そういうものは実際には「存在しない」つまり「実在ではない」と言っています。

もちろんガブリエル教授よりも前にも、こうした「客観的な世界なんてものは無いのだ」といったことを主張した哲学者はたくさんいました。というか、科学者との対比でいうと、哲学者というのはむしろそういう主張の方が「メジャー」かもしれません。では、「新実在論」はそうしたこれまでの哲学者の主張と何が違うのでしょうか?

例えば、ドイツの哲学者カントは客観的な実在はあるかもしれないがそれを完全にとらえきることは人間にはできないのだ、それでも部分的に認識できるのは人間が「悟性」を持っているからだ、そんな「人間の根本的な限界」を踏まえたうえで客観的な実在を正しく認識しようとする「理性」を我々はもっている、みたいな感じのことを主張しました。つまり「世界は実在してるけど、我々には全部みえない」ってことですよね。

またイギリスのヒュームなど17~18世紀のイギリスの経験主義的な思想は、我々の認識する物事は世界の側に始めからそれをそれとして成り立たせてるものが存在してるわけではなく(リンゴがリンゴとして存在してるわけではなく)、我々が経験から「目の前にあるのはリンゴだ」という風に経験則で実在を認識しているのだという見方を徹底したような思想ですが、「世界の側にある、(我々が認識する対象であるところの)実在」を所与としてるようなところがあります。世界があるから、経験できるのだし、経験則で「リンゴ」という概念を持つことが出来る、というわけです。

ライプニッツモナド論に似てる?

でもそうしたら、ガブリエル教授の「世界が実在しない」ということになると、いったい我々は何を経験しているのだ?という疑問が生じてきます。

これについてのガブリエル教授の主張を、実は私はあまり把握してないのですが、似たような考え方としてかつてライプニッツが提唱した「モナド論」というのがあるのでそれを紹介しておきます。

モナド論は、世界の実在性はさておき、個々の人間(動物)が経験する現実というのはまったく独立であり、それにもかかわらず「たまたま」その個々の人間どうしが経験を共有する機会(=チャネル)を持てているだけに過ぎないのだ、という考え方です。そんな「偶然」に依存する世界観だなんて哲学と呼べるのか!とツッコミを入れたくなりますが、モナド論では「そうなのだ、すべては偶然であり、その偶然が世界に『予定調和』的に組み込まれてるゆえに我々は経験を共有できているのだ」と平然と主張します。かなりラディカルな思想ですね(なので、このモナド論というのはあんまり流行してないと思います)。

哲学の歴史には、このモナド論のように「実在の有無以前の問題」とも言えるような思想もあるくらいなので、ガブリエル教授の「新実在論」もこれから色々と思想が補完されて洗練されていくのかもしれません。

で、「新実在論」では「世界は存在しないが、『個々の人間による経験』は存在する」と言っています。これだとちょっとモナド論っぽい主張に思えますが、つづきがあります。それは、「自然物(物理的なモノ)」は存在するし、「個々の人間の感情」とか「個々の人間がおかれた立場や環境によって変わる経験像」も存在する、と言っているのです。

つまり「世界」は実在してないけど、「個々の客観的な実在」はあるし、「個々の主観的な実存」も存在するという話なのです。ここが、ヒュームのような徹底的な経験主義と異なる点だと私は解釈しています。また、「世界という実在は無いけど個々の実在はある」というのは西洋的な1神教の世界から東洋的な多神教八百万の神)の世界への転換、みたいな感じもしますね。

「世界=宇宙」への批判としての「新実存主義

さて、ここまでの話をまとめると「新実在論」というのは、「世界は存在しない」けれども、「物理的なモノ」は存在するし「感情」とか「経験」とか「主観的な印象」といった「精神的なコト」も存在する、という主張なのでした。

そうすると、

「物理的なモノの実在性」=「精神的なコトの実在性」

という主張なのだろうか?

という疑問が浮かんできます。結論からいうと、Yes、です。というか、両者は同じ「実在性のグラデーション」の中で「同じ土俵の上で考えるべき対象」であるというのが新実在論の主張だと思います。物理的なモノと精神的なコトは「実在性のレベル」としては「グラデーションの上で異なるポジション」かもしれないが、「グラデーションは共有されてる」し「その2つを分けるものは何もない」すなわち「同様の実在性を持つ」というのが新実在論のキーポイントです。

この考え方に立つと、面白い疑問が浮かんできます。

「宇宙は存在しているのか?」

です。新実在論は「世界は存在しない」とは言ってますが、「宇宙は存在しない」とは言ってません。これまでの話を踏まえると「宇宙」は実在性を主張できる「物理的なモノ」の範疇にあることは明かでしょう。

でも、普段我々は、「世界」という言葉と「宇宙」という言葉に、けっこう「似たニュアンス」を感じちゃってませんか?普段のたわいのない雑談でも、「世界で一番」という話題が出ると「それは地球で一番なのか?」「それは宇宙で一番なのか?」みたいな話に、屁理屈とは分かっていても結構なったりしますよね?

ガブリエル教授の主張を踏まえるとこれは、科学的なものの見方が、哲学的に言いかえると「極端な自然主義」的なものの見方が、我々一般人の「常識」の中にまで浸透しきっているせいだ、ってことになります。

そこで「新実在論」の延長線上の議論として、「実存」についても新しい視点を持ち込むべきだという話として、「新実存主義」につながってゆきます。

ちょっと脱線: 営利企業に哲学倫理が重要になって来てる理由

余談ですが、ここまで述べたような話を聞くと、「哲学者というのは簡単に思いつきそうなことを主張してスターとか呼ばれちゃって甘い商売だなー」みたいに思わなくもないですが、実際にこれを哲学の世界できちんと主張するためには、これまでの哲学者の主張を全部踏まえて、それらに関連付けたうえで主張の新しさと重要性を述べないといけないので大変な作業です。実際、ガブリエル教授は10か国語くらいをマスターしていて、これまでの主要な哲学者の著書の多くを原典で読み解いたうえで自身の哲学を展開しているため、そう簡単に真似できる作業ではないでしょう。それにも関わらず、ガブリエル教授の主張は我々一般の社会人にとっても「けっこう分かりやすい」のが特長です。そんなこともあって、グーグルをはじめ昨今の企業倫理やガバナンス体制面で哲学・思想の重要性への認識が高まる中で、ガブリエル教授はグローバル大企業の哲学倫理顧問としていま引っ張りだこなのだそうです。

どうして哲学や倫理が営利追及組織の代表格でもあるグローバル資本企業において重要になりつつあるのか?これは簡単にいうと資本主義というのはお金や数字で眼に見えるものを資産・資本として追及する経済原理のため、短期的なバイアスがかかりやすく、50年・100年つづく企業にしてゆきたい大企業にとってそうしたお金や数字で測れない経営方針を見定める際に哲学や倫理を参考にせざるを得ないという事情があります。おっと、この話はまた記事を改めて書きたいと思います。閑話休題

「新実存主義」≒「条件主義」

さて、本記事は汎用人工知能の観点で「新実存主義」を読むという趣向なのでした。この観点でガブリエル教授が「新実存主義」の本の中で述べている重要な考え方があります。それは、「条件主義」というものです。

例えば我々の「感情」について脳科学的に研究するときよく行われるような、被験者の身体に計測装置をつないで脳波や血流といった物理的なデータを観測することにより、被験者の「主観的な経験(コト)」と計測装置の「物理的なデータ(モノ)」を対応づけるような実験は、どのように捉えたらよいだろうか?という問題があります。

この問題に対して「条件主義」は、「この脳科学の実験によって得られる『科学的な対応づけ』は実在の『必要条件』である」と回答するのです。

つまり、脳科学の実験は客観的で重要なデータであるからそれは「踏まえなければならないこと」だけど、それで「人間が経験するコト」を全てとらえきれるわけではないということです。

これは、上述した「モノとコトが同じグラデーションの中にある」という話と関連しています。繰り返しになりますが、我々人間が経験するコト、抱く感情、感じる印象、そうしたものは「物理的なモノ」と同じ土俵の上にあるのだけれども、とはいえ「物理的で客観的なモノ」で全て説明できるわけではなく、物理法則や実験事実は「尊重すべき条件」に過ぎないのだ、というのが「条件主義」なのです。

平たく言うと「科学は実在の必要条件だけど、十分条件ではない」、また別の言葉で言い換えるなら「実存の舞台は、宇宙だけじゃない」ってことです。こう書いてしまうと「実存の舞台」=「世界」のようなニュアンスになってしまうので、あんまり良い表現ではないかもしれませんが、まぁ大体そういうことです。

この「条件主義」は、とても「現代的なバランスのよい思想」だと私は感じます。

これまでの古典的な哲学は、現代の科学の進歩の前に考案されたものが多く、伝統的で権威のある哲学的思想だとしても、そのある一部では現代科学に照らすと疑問視されかねない部分があったりするので、科学的なことを「必要条件として重視する、ただし、科学が全てじゃないから十分条件とは考えない」というこの「条件主義」は科学の進歩のスピードの目まぐるしい現代にありながら、じっくりと哲学的に思想を創り上げる上でふさわしい態度であるように私は思います。

ではこの現代的なバランス感覚を備えた思想である「新実存主義」「条件主義」の観点で、我々が汎用人工知能の未来について抱いてるイメージ、期待、不安といったものはどのように捉えることができるのでしょうか?

次回の記事でその本題に入りたいと思います。

つづきは

記事を分けます。 前置きが長くなり一番の本題が後回しになるのは私のいつもの悪いクセなのですが、、もう少々お待ちを。

マティス展に行ってきた ~なぜ切り絵に至ったのか~

GPTの考察記事執筆、遅れに遅れちゃってますが、また少し脱線。

 

ゴールデンウィーク中、上野にある東京都美術館で開催されているマティス展を観に行ってきました。

 

マティスという画家のことは、名前だけ聞いたことがあって「切り絵の人だっけ?」というくらいの程度。*1

 

僕が美術展に行くのはほぼ専ら、巨匠ひとりをメインテーマに据える展示会のときばかりです。最近だと岡本太郎展ゲルハルトリヒター展がまさにそれで、それらの「ハズレが無い」感じがとても好き。*2

 

今回は、感銘を受けたテーマをいくつか書き並べていく形にしてみます。

 

絵画と輪郭

展示スペースに入ってまず目を惹かれたのはクッキリと黒ぶちの輪郭が多くの絵に描かれていることでした。

 

我々人間が、普段生活のなかで眼を通して周囲の環境や物を「視る」とき、輪郭というものは意識しません。そんなものは存在さえしていません。しかし視るのではなく絵を「描く」ときになると、なぜか輪郭なるものが描き手の意識に立ち上ってきます。

 

これはとても面白いことです。

 

小さな子供が絵をかくときも、まず輪郭から描き始めることが多いでしょう。そのくらい、絵画にとって輪郭というのは本質的なものだと言えます。幼児のその段階において、既に絵画制作は写実性の追求とは方向を異にすることが見て取れると言えます。

 

しかし僕は、今回マティスの絵をじっくり見るまで、「子供が輪郭を描くのは絵が下手だからだ」と思っていました。あるいは漫画やアニメのように「モチーフをデフォルメする表現が相応しいメディアに特有のテイストだ」と思っていました。

 

しかし、マティスは輪郭をハッキリとクッキリと描いていました。「それが絵画だから」と言わんばかりに。大人の画家が、人生を掛けて制作する作品に、本気で輪郭を描いていた。そして、マティスの絵をみていると、輪郭にも色んな役割が存在することが分かってきます。

 

  • 同系色の並びでオブジェクトの境目があいまいになりそうなとき、マティスはそこに輪郭を描きます。
  • モチーフを鑑賞者にどう印象付けるかをコントロールするため、例えばオブジェクトの前景と背景を際立たせるため、輪郭の太さを場所によって変える
  • 例え色彩的に補色の関係にある境界線上にも、輪郭を描くときがある(ひとつながりの輪郭によって切り取られるオブジェクトの主題性を強調したい場合)

マティスの絵を見るときの一つの楽しみ方として、そこに描かれた輪郭の部分部分に注目し、なぜそれがそう描かれてるのかを想像してみるというのは大いにアリだと思います。

 

モチーフではなく表現手段の追求

マティスという画家は、絵画とは何か?を深く考えた画家だったのだと思います。

 

例えば、印象派絵画の時代を代表するクロード・モネという巨匠がいますが、モネは絵画そのものというよりは光をどう捉えるかというモチーフのほうに大きな動機を感じさせます。

 

しかし、マティスの絵は何かモチーフを追求するというよりは、絵画とは何なのか。絵で何かを表現するとはどういうことなのか。そこにどんな可能性があって、その可能性の中で自分は何が出来るのか。そういったことをひたすら考えながら絵を描き続けたことが伺えます。点描画のようなものもあるし、キュビズムっぽい絵もあるし、抽象画に近づくような方向性も色濃い(特に後述する切り絵)。二次元では飽きたらず、3次元すなわち造形(粘土彫刻)作品も多数遺しています。

 

そして、それぞれの表現手段の要素、すなわち色や装飾(例えば模様とか)、形態といった要素を組み合わせることで絵画が制作されていくわけですが、その際に組み合わせ方によってそれぞれの要素の意味が変わるということをかなり模索しているように見える作品がとても多いです。ちょっと飛躍した言い方をすると絵の文法を模索していたのかもしれません。

 

例えば、部屋の中を描いた絵において、絨毯の装飾とテーブルの色の対比が、その絵全体の緊張度を支配するという組み合わせの効果をテーマとした作品がいくつもあります。

 

また、ゆったりとソファーに腰かけた貴婦人の姿を描くときに、表情をギリギリまで省略したり、着てる服の丸みや厚みを限りなくシンプルにしたり、そうした表現の冗長性を削ぎ落とすことで、もともと表現したかったその貴婦人が画家の視覚に与える情報を過不足なく表現しようと試みている絵があったりします。

 

画家の中にある主観的な動機を忠実に絵画に表そうとするその姿勢は、写実的モチーフから離れようとした先の印象派に通ずるものがありますが、その発展の方向性がキュビズム的な理性的なモチーフ化とは全く違っていて、フォービズム(野獣派)と呼ばれているそうです。

 

アンリ・マティスはそのフォービズムの代表画家と見なされているのだそうです。

 

フォービズムと切り絵

フォービズムの特徴の一つは、赤や黄色や青といった「色の3原色」がガンガン使われていることではないかと思います。

 

そうした原色はそれが文字通り「原」色であるゆえに、同じ赤でも赤を使う場所やそれを囲む輪郭や周囲に描かれた装飾や全体の構図などによって「その絵画に特有の意味を持った赤」が表現されることになります。これは、赤ではない何か別の色を使うことでは表現が出来ません。

 

原色は繰り返し我々の視覚の中で経験する色であるため、非常に主観性が強いです。原色から離れるほど、相対的に客観性が強まるともいえるかもしれません。例えば、エメラルドグリーンという色は「3原色」からは少し遠いですが、それはエメラルドのように珍しい宝石を象徴する色であり、我々の日常的な意識の中で常に経験する色というには希少すぎます。だから、青や緑と比べるとエメラルドグリーンはより客観性を帯びています。こうしたことが、フォービズムにおいて3原色が多用される理由ではないかと思います。

 

さて、色についてはその3原色が持つ多義性を追求するというテーマがあるわけですが、形態についてはどうでしょうか?

 

丸みを帯びた曲線、まっすぐ引かれた線、それらの太さ細さ。それは輪郭として絵の中で背景からオブジェクトを切り出します。完全に写実的な世界では輪郭は存在しないのでした。いや存在しないというより「写実的とは、輪郭がとても複雑だということだ」と言った方がより適切かもしれません。したがって、輪郭とはなんらかの形態をデフォルメして単純化することで絵画の中でオブジェクトの視認性を強めることで前景化する機能をもった絵画表現要素だと言えましょう。

 

そうすると、輪郭を描くことの本質とは「表現したい情報を過不足なく伝えるのにちょうどいい複雑度(単純度)を持った形態」を表現することであると言えるでしょう。

 

ここまで来ると、フォービズムから切り絵までの絵画思想がひとつながりのものとして理解できます。*3

 

切り絵にすることで、輪郭と配色と装飾性とを同時に模索することが出来ます。ここまでくると、マティス独自芸術の宇宙とも言えそうです。マティスの切り絵作品は単純にインテリアとしても大変魅力があります。芸術的な試みが極まって、我々の日常生活になじむ魅力的なアート作品が展開されるまでに至ったことは、幸運な偶然のいたずらともいえるかもしれません。

 

というわけで

マティスの絵やフォービズムに対する素朴な見方、それと、どうして切り絵なのか?に対する自分なりの解釈を書いてみました。

 

ではまた!(GPTシリーズ必ず書きますのでお待ちを…)

*1:それでもこの展示会に行こうと思ったのは、今年の2月に所用で銀座SIXの蔦屋書店に行ったときに偶然開催されたた美術書の在庫セール(?)でふと目にしたマティスの画集に感銘を受けて、興味を持ったからでした。

*2:今回のマティス展も大満足でした。美術展って入場料2000円くらいとそれなりのお値段するので、モトをとるにはじっくり味わう必要がある

*3:これは私個人の素人の独自解釈です。もしかしたら似たような話がどこかの美術書に書いてあるのかもしれませんが、そうでなくてもそれなりにつじつまのあった話だと思います。美術館の中でマティスの絵を見ながら、切り絵に至った理由を自分なりに考えた結果を本ブログで書いているという次第です。

LLMに知識ベースを統合するのは簡単

本ブログ、GPT考察シリーズの途中ですが番外編を適宜挟んでいきたいと思います。

(特に意味はないOGP画像)

愛すべき嘘つき

ChatGPTを使ってると、現実には存在しないものやことをあたかも真実であるかのように語る幻覚(hallucination)の問題に良く出くわしますよね。

そんな店は実在しない…笑

なぜそうなるのか?

 

それは統計モデルだから

よく言われるのは、GPTは「統計モデル」だから「確率が高いであろう単語」を順番に出していくというチャットシステムなので、「実在するお店の名前」をそのまま固有名詞として知識として憶えるのではなく、単語に分解して統計を取ってしまうので知識として憶えるのが苦手、ということです。

 

ちなみに「風が吹けば桶屋が儲かる」という有名な話も、その長い3段論法のつながりを覚えるのは苦手みたいで、聞いても変な答えを返してきたりします。*1

 

知識ベースをつなぎ込みたい

そこで、ちゃんと事実の裏付けや真実性の裏打ちが取れている情報だけを蓄積した「知識ベース」を別途用意して、それとシステム連携させて幻覚の問題を回避/緩和する方法が考えられます。

 

具体的に、どうしたら良いでしょうか?ChatGPTに質問するといくつか方法を提案してくれました。その中で有力だと思われる2つを挙げてみます(内容は本記事のために私が説明しなおしてます)。

  • 知識ベースへのクエリ生成: 知識ベースの検索機能が備える検索条件を細かく指定する機能をユーザが覚えるのは大変なので、それをChatGPTが肩代わりする。また、検索結果が選択肢として複数あるときに、文脈からどれが相応しいかをChatGPTに判断させることも出来る。これは、知識ベースがメインでChatGPTがそのフロントエンドとしてサブシステムをつとめるイメージ。
  • エンティティリンキング: ユーザとのチャットのなかで、知識を参照すべきタイミングで知識ベースを検索し得られた結果を(チャットスレッドの裏で)ChatGPTに与える。ChatGPTがメインシステムで、知識ベースはサブシステム。チャットロボットは「なんでも知ってるよ?」という顔をしておいて、いざユーザから質問が来てから知識ベースを調べ、カンペを見ながら答えるようなイメージ。

本格的なのは後者のエンティティリンキングの方でしょう。GPTは「トークン列を受け取って次の単語を出す(詳細説明はこちらの記事)」仕組みで動いてるので、ユーザから何かを言われたら知識ベースを引いてその結果をトークンに付け加えちゃえばいいわけです。さしずめ「後出しじゃんけんカンニングペーパー」ですね。

 

ビジネスでの利用シーン

最近発表された ChatGPT plugins は、そのエンティティリンキングのような仕組みで作られたものが結構あるんじゃないでしょうか? 

予約まで出来ちゃうのスゴいですね

また例えば、企業がビジネスでChatGPTを使う際に、その企業固有の知識やプロジェクトごとのステータスを前提情報として知ってる必要があるときに、チャットの流れの中でそうした情報を随時引っ張って裏でChatGPTにカンニングさせることで、よりその企業のニーズに適したアウトプットを出してくれる可能性が高まるでしょう。

 

というわけで

幻覚を回避して、より有用にする知識ベースとの簡単な統合方法について述べました。


ではまた。(次の記事はGPTの考察シリーズ(2.2)を公開予定です)

*1:このことをツイッターでリプライしたら、「3段論法の途中、視覚障碍者が三味線演奏者になると決めつけてる箇所が、差別的な考え方に相当するのでもともと学習データから除外されてるのでは」と指摘を返された方がいました。確かに、その可能性も十分にありえますね!