LoginSignup
114

More than 5 years have passed since last update.

脳科学者とITエンジニアの、DLや汎用人工知能に関する会話

Last updated at Posted at 2018-01-07

ディープラーニングや汎用人工知能について、脳・神経科学の研究者とAI系エンジニアの対話をまとめました。

本内容は、私と後輩がお茶をしたときの会話の一部です。

後輩は現在、神経科学の研究に携わる研究者です。
私は現在、大手SIerで機械学習・ディープラーニング案件の支援を行うITエンジニアです。

お茶を飲みながらダラダラした会話であり、厳密性やまとまりがないのですがご容赦ください。

うろ覚えもあるので、記事内で間違えなどがあれば、私の責任です。

正解のない話題を取り扱っているので、反論なども多々あるかと思いますが、こんな考えを持つ人もいるんだな~と、温かい気持ちで読んでいただけると幸いです。

本記事の内容

  • ディープラーニングと神経細胞集団の比較(活性化関数、バックプロパゲーション、正則化)
  • 脳の学習則、睡眠と経験再生
  • ディープラーニングも脳も、結局は制約付き最適化問題では?
  • 脳とDLの関係ではAutoEncoderが本質的では
  • 現在の機械学習手法の分割は良くないのでは?
  • 脳の生成系とDLの生成系の違い
  • 汎用人工知能ってなんだ?
  • 汎用人工知能と意識、好奇心
  • 今後の汎用人工知能の開発に大切なこと
  • サピエンス全史とディープラーニング、汎用人工知能
  • まとめ

ディープラーニングと神経細胞集団の比較(活性化関数、バックプロパゲーション、正則化)

(私)ディープラーニング(DL)と脳の学習は、どんな点が同じで、どんな点が異なるのか整理したいね。
例えば通常のニューラルネットワークの場合、活性化関数にロジスティクス関数が使われていた。
ロジスティクス関数の場合は神経細胞集団をひとつの素子として見るとWilson-Cowanモデルで近似できたように思うけど、最近のDLのReLUやtanhを活性化関数に使用する神経の数理モデルはある?

(後輩)ロジスティック関数とtanhは定数以外同じですよね。神経集団のモデルはあるかわかりませんが、単一ニューロンのモデルとの比較としては、ReLUの形はleaky integrate-and-fireモデルのI-O functionの形に似ています(例えばFiring Rate of the Noisy Quadratic Integrate-and-Fire Neuron)。
なのでReLUやtanhは単一ニューロンのI-O functionとして広く認められていると思います。
ですがReLUやtanhを使用するのは、学習則にバックプロパゲーションを使用した場合の勾配損失を避けたいからですよね。でも、神経細胞でシナプス結合強度の可塑性のルールにバックプロパゲーションをそのまま使用するのは一般的ではないので。

(私)最近神経でも自己結合でバックプロパゲーションという発表がある気がするけどどうなん?

(後輩)自己結合や逆行性シグナルがバックプロパゲーションに似た働きをするという人は確かにいますが、Hebb則やSTDP則と同じレベルでスタンダードになっているわけではないです。

(私)うーん、なるほど。逆にDLと脳で似ている点はなんかあると思う?

(後輩)L1、L2正則化は神経でもあると思います。例えばL2正則化は極端に大きな結合強度の出現を防ぎますが、似たような正則化は脳でも行われていると思います。実際神経と神経の結合強度が極端に強くなりすぎると、神経の発火が連鎖しすぎて、てんかん発作が起こってしまいます。それを防ぐための神経の機構は様々あります。

(私)つまり脳はL2正則化ってこと?

(後輩)いえ、どちらかというとL2もあるけど、L1正則化やL0.7みたいなものの方が効いている気がします。神経細胞の結合強度の分布は対数正規分布に従うと言われています。つまり裾の長い分布なので、小さな結合強度が多数あり、ときおり強い結合強度(てんかんはおこさない程度に)があります。これはL1正則化の結果と似ています。

(私)そのL1正則化は神経のどんなメカニズムで行われるの?

(後輩)シナプス刈り込みという現象があります。刈り込みはスパースなネットワークを作るメカニズムとして考えられると思います。また結合強度に依存したSTDP則によって対数正規分布が現れるというシミュレーションの報告はあります。

脳の学習則、睡眠と経験再生

(私)シナプスの重みを更新する学習則がバックプロパゲーションでなく、Hebb則やSTDP則でも、AutoEncoderみたいに表現をきちんと学習できるものなん?

(後輩)Hebb則やSTDP則は神経と神経のフィードフォワードな伝搬に伴い生じますが、これらの学習則でも混合された入力信号を混合前の状態に分離することができるという発表はあります。これはつまりHebb則やSTDP則でも、PCAが実現できるという話です。

(私)でもPCAだと一層で線形結合した信号の分離しかできなくない?

(後輩)いえ多層構造を考えれば、神経の発火や集団の発火率は非線形現象なので、各層が線形分離でも最終的には非線形な信号の分離は可能になります。

(私)なるほど、非線形な信号分離の重要性はあとでまたあとで話そう。
その他、睡眠が記憶の定着や学習に重要だというけど、睡眠とバックプロパゲーションは関係あると思う?

(後輩)睡眠時に、起きている間に経験した神経の発火時系列が、海馬で再び発生しているという研究があります。
そしてその発火は、海馬から皮質への情報を移動させるのに寄与するという説です。
一度海馬で学習して、それを睡眠中に再度大脳皮質で学習しているのかもしれません。
これは深層強化学習DQNのExperience Replay(経験再生)が睡眠中に行われているとも考えられます。

(私)睡眠をバックプロパゲーションというよりExperience Replayとして捉えるわけだ。

ディープラーニングも脳も、結局は制約付き最適化問題では?

(私)そうすると、脳とDLの学習は全然違うのか?それとも似ているのかどうなんだろうね。

(後輩)細かく要素の中身まで見れば、違う点はもちろんありますが、学習に対してある程度まで抽象度を上げれば、脳もDLも学習方法は同じと捉えることもできるとは思います。

(私)どこまで抽象度を上げるの?

(後輩)脳もDLも結局は、制約付き最適化問題を解いていると捉えられるのではと思います。

(私)なるほど、入力、出力以外に制約付き最適化問題にはどんな要素が重要だと思う?

(後輩)まずは損失関数の設計が重要です。

(私)損失関数の最小化が目的になるからね。自分が望ましい学習結果が得られる損失関数の設計は大切だね。

(後輩)ただ損失関数は局所解を多く持つので、局所解をできるだけ避けながら大域的最小解に落とし込む必要があります。

(私)ここで損失関数の変数はシナプスの重みWと、場合によっては出力も入るね。

(後輩)結合係数Wに対してどんな学習則を適用するのかで、空間内をどのように点が移動していくのかコントロールできます。
そして、点の移動に対して、うまく制限をかけてあげて、大域的最小解に導いてあげることが重要です。

(私)制限というと、どういうものを意味するの?

(後輩)結合係数行列Wの要素の数を一定に保つ場合、DLの層の数やネットワークの形は一種の制限になります。例えば、CNNのコンボリューション層も一種の制限になります。

(私)コンボリューション層は近傍との重み和しか計算しないという制限をかけていると考えるわけだね。

(後輩)脳においても、神経細胞同士が好きなように結合できるわけではないです。
層構造や軸索伸長で部位間のつながりは制限されています。

(私)結局 OUTPUT = f(INPUT;W) という関数を作成して、入出力関係を表してあげる。このときのWは損失関数 L(W;OUTPUT) を最小化するように最適化する。このWの更新に対して、DLの層や形、活性化関数、学習則がある種の制限をかけるというわけだね。

(後輩)はい、その各要素の中身が脳とDLで異なるとしても、この制限付き最適化問題という枠組みは同じか、まあ似ていると考えられるのではないでしょうか。

脳とDLの関係ではAutoEncoderが本質的では

(後輩)そのほかに脳とDLの関係では、Hinton教授のAutoEncorderの考え方が本質的ではと思います。

(私)DLは、AutoEncorderから始まったけど、ReLUやtanhでバックプロパゲーションできるようになった現在、直接的にAutoEncorderを意識する場面は少ないね。生成系ではVAE(Variational Autoencoder)が使われているけど。

(後輩)私たちの脳が感覚器から入力として受け取る情報は非常に冗長なんですよ。
猫の姿を見て、猫と脳が理解するのに余計な情報がありすぎます。
その余計な情報を次元削減で減らしていくわけです。

(私)猫の画像を特徴量の和に非線形分解していき、猫であることを再度出力できるぎりぎりのところまで次元圧縮するわけだね。

(後輩)はい。

(私)次元圧縮という考え方は、教師あり学習でも同じかな?

(後輩)同じだと思います。MNISTの数値画像を分離するのに、教師あり学習でも教師なし学習でも実現できますよね。

(私)たしかにできるけど、教師あり学習の方が当然精度は良くなるね。

(後輩)それは結局損失関数の設定が、教師あり学習と教師なし学習で異なるからです。
AutoEncorderによる教師なし学習の場合と、一度圧縮してから展開出力したデータをOUTPUTとし、INPUTとの誤差を比べることになります。
一方で教師あり学習では、一番圧縮したときの素子の発火がラベルのone-hot表現とどれくらい合うのかを比べることになります。
つまり損失関数の形が違い、損失関数の設計時に使える情報が、教師あり学習の方がラベルデータ分だけ豊富ということになります。
この違いにより教師あり学習の方がうまく制限をかけることができて局所解に陥りにくいと考えれば、先ほどの制限付き最適化のフレームワークの中で説明がつきます。

(私)なるほど。ベイズで考えれば、教師あり学習も教師なし学習も枠組みは変わらないのと同じだね。

現在の機械学習手法の分割は良くないのでは?

(後輩)現在は教師あり学習、教師なし学習、強化学習という3つに機械学習を分類しているように思いますが、どう感じますか?

(私)まあ、違和感があるけど、それでスタンダードになっているから従うって感じかな。
でも学習というものに対して、教師あり学習、教師なし学習って分類すると、論理的にはAとA notを作ってるから、本当はそれでMECEだよね。だから、強化学習がかっちり当てはまる場所がない。

(後輩)それでは強化学習は教師あり学習、教師なし学習のどちらになりますか?

(私)どちらかというなら、教師あり学習だろうね。ラベルデータとは質が異なる教師データが与えられているという考え方ができると思う。
ただ、結局そんな話になるのは、学習というものに対して、教師データのありなしっていう軸で切ろうとするから変になるんだよね。
そういう意味では現在の分類はベストではないと思う。もっときれいで納得感のあるMECEになる軸の作り方がありそうだけど、誰にも分からないね。

(後輩)僕もそう思います。そして、そう考えると現在の3つの分類からは漏れている別の学習法が存在する可能性があると思うんですよね。
それを見つけ出すには、現在の3つの学習法を統一的に説明できる学習法の理論を構築して、そこからトップダウンに抜けている学習法を探す手順と、脳・神経科学の実験からボトムアップ的にこれまでの学習分類に当てはまらない学習法を見つける手があると思います。

(私)PFNの岡野原さんがHinton教授の言葉を引用して、教師なし学習の重要性を述べていたのはどう思う?

Hinton教授「脳のシナプスは10^14個あるが,人は10^9秒しか生きられない。サンプル数よりパラメータ数の方がずっと多いことになる。(これらのシナプスの重みを決定するためには)1秒あたり10^5個の制約が必要となり,多くの教師無し学習をしているとの考えに行き着く」
ニューラルネットの逆襲から5年後 より引用

(後輩)教師なし学習が今後大切なこと、そしてもっと良いパフォーマンスを出せる工夫がありそうな気はします。
ただ、Hinton教授の1秒あたり10^5の制約は必ずしもそうではない気がしますね。

(私)というと?

(後輩)網膜には錐体細胞で約1000万(10^7)個ありますし、20fpsでニューロンに入力されば、それだけで1秒に10^9オーダーの情報が視覚だけで入ってきますよね。他の感覚器もありますし。情報が独立ではないですが。それに全部のシナプスの重みが重要とは限らないじゃないですか。リザーバーコンピューティングのような学習方法もありますし。

(私)確かにリザーバーコンピューティングの場合は中間層の重みは学習せずに、出力層への重みだけを学習するね。

(後輩)だとすれば、重要なシナプスの重みだけ学習すればよいので、学習量も減りますよね。とくに低次の視覚野の重みなどは発達期で学習すれば、変化する必要はほとんどないと思います。むしろ高次の層で調節するのでは。DLとの比較では、脳の感覚系はタスクの前に日常生活の中で膨大なpre trainingあるいはimplicit learningをしているので、その辺りが脳がDLよりも少ないトレーニングサンプル数で学習できる鍵のひとつなのではないかと思います。

脳の生成系とDLの生成系の違い

(私)ここまで主に認識系の話をしてきたけど、俺は基本的な枠組みとして認識系でDLがやっていることと脳は本質的には似ていると思うんだよね。ただ生成系は微妙に感じていて、DLの生成系はなんか本質的な感じがしないんだよね。例えば画像認識では人を超える精度が出せるのに、自然言語処理の生成系で、要約や文章生成を人間レベルで行うのはなかなかに難しい。

(後輩)そもそも脳の生成系の理解はなかなか難しいですね。数理モデルでいろいろな研究はもちろんありますが、fMRIなどの脳機能計測で文章要約機能にだけ関連する脳活動を観測するのはなかなか難しいです。

(私)サルの脳に電極を刺して神経活動を測ろうにも、サルに文章要約はできないしね。脳はどうやって文章を生成したり、絵を描いたりしているんだろう?

(後輩)例えば、猫の絵を描くとすれば、どの層の神経が発火が本質的なのかが重要だと思います。つまり、脳の中に描きたい絵がビットマップ形式で存在するのか、ベクター形式で存在するのかが重要だと思います。

(私)猫を見た時の網膜からの入力は、基本的にビットマップ形式と考えられるね。

(後輩)はい、でも猫の絵を描く際に脳でビットマップ形式に表現し直しているのかは疑問です。

(私)まあ、ビットマップ形式にするには、またV1視覚野で表現しなおすのか?って話になるしね。そんな脳に余裕はないだろうし、低次の視覚野が、絵を描く際に筆を動かす高次運動野と直接連携していると考えるのは違和感があるね。もちろん一切の神経信号の伝達がないとは思わないけど。

(後輩)僕はベクター形式で高次視覚野と高次運動野や前頭前野が関連して、フィードバック系の結果、猫の絵を描くことができるのだと思います。

(私)フィードバック系というのは絵を描いている途中で制御するってことだよね。確かに絵を描いたり、文章を書くときも消しゴムを使うしね。

(後輩)はい、描きたいものが脳で高次の特徴量の組み合わせとして表現され、それを出力系によって筆の動きとして出力し、その結果描かれた絵と自分が描きたいものの差をフィードバックで修正し続けて、最終的に猫の絵が描けるのだと思います。

(私)確かに猫を認識するうえでは人間ごとにそんな差はないけど、猫の絵を写実的に描こうとすると、デッサンを学んでいる人のほうがうまく描けるね。それは出力系の学習と考えられるのかもね。

(後輩)VAE(Variational Autoencoder)に近いと思います。VAEの場合は入力も出力も画像で次元削減された素子から画僧を出力させますが、猫の絵を描くうえでは、出力が筆の動かし方になるのかもしれません。

(私)VAEの一番情報圧縮された素子がどう発火させるのかが、描きたい絵のイメージに対応するわけだね。
子供の描く猫の絵は単純なのは、猫ニューロン一つの発火から生まれていて、写実的な絵を描ける美術家は、猫ニューロンに加えて、より多くの特徴量ニューロンの発火で描きたいイメージを作り、筆の動きをアウトプットしているのかもね。

(後輩)そう考えると、脳のイメージの質(高次特徴量のニューロンの発火)、脳のイメージを筆の動きにする出力系のネットワーク、そして、絵と脳のイメージの差を埋めるフィードバック系の3つが要素になるのかもしれませんね。

(私)なんかGANと似ているような似ていないような感じだね。俺も生成系はあまり詳しくないからまた勉強してくるわ。

汎用人工知能ってなんだ?

(私)そろそろ汎用人工知能とか、人工知能の話しようか。

(後輩)汎用人工知能とか人工知能って何なんでしょうね?チューリングテストに合格すれば人工知能なんですかね?

(私)難しいよね。そもそも汎用人工知能であることを確かめるテストって何なんだろうね?
確かに汎用人工知能のGoogleのテストで、専用人工知能の様々なタスクをやらせるみたいなのはあるけど。

(後輩)テストを作ったら、なんか汎用じゃないですね。AlphaZeroは汎用人工知能なんですかね?

(私)将棋や囲碁、チェスなどのボード型対戦ゲームにおいては、汎用性のあるアルゴリズムと言える気はするね。
ただ、汎用性のあるアルゴリズムを、汎用人工知能と言えるかというと難しいね。

(後輩)汎用人工知能は難しいですね。デミス・ハサビスは強化学習が重要だと言っていましたし、それはそうだと思います。でも現在の強化学習の枠組みだけで、汎用人工知能が作れるのかというと、疑問です。もっと何かにあるのではと。

(私)そもそも人間は汎用人工知能なのかな?犬や猫は?って考えるとよく分からないね。
GoodAIは、まずは人間レベルを汎用人工知能ととらえて、その先には人間を超えるものってイメージを持っているみたいだけどね。

(後輩)汎用人工知能を作りたい人は、やっぱり人間を超えるものを作りたいのではないですかね?

汎用人工知能と意識、好奇心

(私)汎用人工知能において、意識や好奇心は重要なんかな?

(後輩)意識って言葉が難しいですよね。Attentionやメタ認知も日本語では意識ですし、もっと別の意味の意識もあると言われていますし。

(私)サルやマウスでも錯視や両眼視野闘争使って、認知意識の研究が行われているみたいだけど、錯視が起こる意識があるから汎用人工知能かというとそうではないだろうね。少なくとも実験動物で扱える意識は、汎用人工知能の十分条件ではないね。
好奇心についてはどう思う?

(後輩)好奇心は、自分の脳が持つ予測モデルの出力と、現実から得た外界情報の不一致具合を下げたい、という概念だと思っています。
そう考えれば数理的に簡単に実装できます不一致具合を損失関数と捉えればよいので。
ここで言う予測モデルとは、過去の経験から学習した現実の外界情報に関する期待値と自分は外界がこうあって欲しいという生まれつき与えられた嗜好(つまりは報酬)の2つの要素からできているもので、損失関数は2つの要素の和として記述できます。

(私)自分の脳の予測モデルの出力と、外界から得た結果の不一致具合が下がった量を報酬として考えれば、それは強化学習の枠組みでも考えられるね。

(後輩)そこは強化学習と捉える必要はあるんですか?

(私)外界から同じ情報を得た時に、好奇心を持つかどうかはその人によるよね。
例えば、マジシャンのトランプマジックを見たときに、素人は常識との不一致に驚くだけだけど、マジシャン志望の学生だったら、そのマジックの種を必死に考える好奇心が湧くと思うんだよね。それって、その不一致具合を下げることに、どれくらいの報酬を割り当てるかの個人差では。マジシャン志望の学生は、その不一致具合を下げることをより大きな報酬として捉える。

(後輩)マジシャンの例は、そう考えることもできますし、そもそも予測モデルが違うとも考えられます。
素人はマジシャンはマジックを行うものと思っているから、常識との不一致も「マジシャンだからね」と納得すれば、その人にとって不一致ではなくなります。つまり、マジックは物理学的常識では不一致に見えても、その人の脳としては一致なんです。
一方で、マジシャン志望の学生であれば、絶対に種があるのはわかっているから、自分の知っているマジックの知識との不一致となり、そこに好奇心が生じるとも考えられます。

(私)なるほど。どっちなんだろうね。でも脳のモデルが違うと考える方がシンプルだね。

今後の汎用人工知能の開発に大切なこと

(私)今後の汎用人工知能の開発においては、何が大切なんだと思う?

(後輩)やっぱり僕は、学習とは制約付き最適化だと思うので、その制約を人工知能自身がどう自発的に生み出せるかだと思います。
つまりフレーム問題ですよね。

(私)フレーム問題だと、洞窟にバッテリーをとりに行くロボットの例だね。

(後輩)フレーム問題は全情報を入力して、膨大なトレーニングサンプルを使って深層強化学習すれば解決できるかもしれません。
DLがバッテリーを取りに行くのに考慮すべきことは特徴量として考慮し、関係ないことは無視することになるので。

(私)Atariのブロック崩しはゲーム状態を全部画像としてぶちこんで、DQNで解決できるからね。

(後輩)ただそこで重要なのはDQNに使用するDLのハイパーパラメータや、ネットワークの形なんですよね。
これをゲーム以外の現実の問題に対してどう設定すれば良いかが分からない。

(私)現状のハイパーパラメータやネットワークの形は、決め打ちでやってみてうまくいっただけで、なんらか導出されたわけでないからね。

(後輩)すなわち制約の作り方が分からないってことですよね。

(私)制約の一種には、重みの数も入るだろうね。

(後輩)こうした制約を自ら作り出せるプログラムを作ることは、汎用人工知能の誕生に近づくのではと思います。

(私)確かにその通りだと思う。
その他に俺は、もっと人とサルの間にある知能の違いを、脳科学の研究で明らかにする必要があると思う。
汎用人工知能ができました!って、サルや猫レベルの知能ができても、役に立たないし。
ただ現状の脳機能計測技術では、人とサルの脳の違いにほとんど迫れていない。
そこに迫れる計測技術の進展が、汎用人工知能にとっても大事だと思う。

サピエンス全史とディープラーニング、汎用人工知能

(私)そういえばサピエンス全史では、人は原始宗教のような虚構を作り出せたから、他のホモ属と違って生き延びたとされている。
そのような虚構を作り出せるのは、脳のどの機能や部位によるものなの?

後輩)虚構が脳のどの部位から生まれるのかと問われると難しいですね。言語も重要な気はしますが、ソングバードやイルカなど音声でコミュニケーションをとる動物はいくらでもいます。でもコミュニケーションをとれるからといって虚構があるわけではない気がします。
ただ、汎用人工知能の開発と、虚構を作り出す能力っていうのは実は密接に関わっているのかもしれません。

(私)というと?

(後輩)人類の知能の発達や進化というのは、ある意味では外的環境に対する、種の生存行為の最適化そのものです。
共通の虚構ができれば、宗教や社会常識が生まれ、コミュニティ内では互いの行動を予測しやすくなります。
お互いの行動が予測しやすければ、そのコミュニティ内にいる限りは外界の状態を予測する性能が上っていると言えます。
つまり予測と外界の不一致度を下げる方法は、自身の脳が(シナプスの重みを変化させて)学習することと、自身の周囲の環境を自分の予測に近くなるように変化させてやることの2種類あって、共通の虚構を作るというのは後者なのではないかと。

(私)つまり、マルチエージェント系の学習環境において、ホモサピエンス以外のホモ属は、仲間の行動を脳のシナプスの重みで学習して予測しようしたけど、予測精度が悪かった。そのため、大きな群れを作れなかった。
でも、ホモ・サピエンスは虚構を作ることで、仲間の行動を制限し予測しやすくしたため、予測精度が高く大きな群れを作れたということだね。

(後輩)生態系のようなノンゼロサムゲームならば味方を作って協力した方が良いですので、共通の文化を持つことはそういう生存戦略的にも妥当に思います。
まとめると、人の脳の発達、文化の発達、人工知能の発達はどれも周りの人・ものから知識経験を学んで、また味方を増やして、自身が生き残るために自分自身+周囲の環境を最適化するというモチベーションによって説明できるかも、という妄想をしてみます。

(私)汎用人工知能を作るというと、1つのPCに搭載されている姿を想像するけど、実は複数のPCから構成され、互いの出力の予測可能性を上げるために、独自の虚構をもつことが重要なのかもしれないね。ただ、汎用人工知能が生存最適化を目指すその先というと、SFチック感が凄くなるね。

まとめ

以上、ITエンジニアの私と、脳科学の研究者の後輩のお茶中の会話でした。
うろ覚えもあるので、記事内で間違えなどがあれば、後輩ではなく私の責任です。

また、本記事についての感想や異なる考え方など、気軽にコメントいただければ幸いです。
正解のない話題を取り扱っているので、反論なども多々あるかと思います。温かい気持ちでコメントいただければ嬉しいです。

ご一読いただきありがとうございました。

P.S.
IT系の社会人の方や学生の方で、脳ベースで人工知能を作ることに興味がある方は、ドワンゴの全脳アーキテクチャが近いかもしれません。

学生の方で、私のように大手SIerで「ディープラーニングや機械学習の研究+実際のビジネス案件にDLや機械学習を搭載」みたいな仕事に興味のある方は、連絡いただければ嬉しいです。
一緒にお茶しましょう。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
114