はてなキーワード: マルコフ連鎖とは
今日は、マルコフ連鎖を使って、なんで人間が何かに依存してまうんかを考えてみるで。
まず、マルコフ連鎖っちゅうのは、ある状態から次の状態に移る確率が決まってるもんやねん。たとえば、ある日「A」っちゅう状態におったら、次の日に「B」っちゅう状態に移る確率が決まってる、そんな感じや。
さて、依存症を考えると、これを「状態」として表現することができるんや。たとえば、アルコール依存症を考えるとするやろ。状態は「飲酒量」で表せるわけや。
1. 状態の定義: 0杯(飲まへん)、1杯、2杯、…、n杯みたいに、飲酒量を状態として定義するんや。
2. 遷移確率: それぞれの状態から次の状態に移る確率を決めるんや。たとえば、1杯飲んだら次の日も1杯飲む確率、2杯に増える確率、0杯に減る確率を設定するわけや。
3. 遷移行列: これらの確率を行列で表すんや。行列の各要素が、ある状態から別の状態に移る確率になってるんやで。
この遷移行列を使って、長期的にどんな状態に落ち着くか、つまり「定常分布」を計算することができるんや。これが、どんだけの確率で依存症になるかを示すんや。
たとえば、もしある状態におる確率が時間が経つにつれて1に近づくんやったら、その状態が安定してる、つまり依存症になってるっちゅうことや。
今日はこの辺にしとくけど、こうやってマルコフ連鎖を使えば、依存症の進行を数学的にモデル化して、どんな条件で依存症が進行するかを分析できるんや。ほんま、数学って奥が深いなぁ。
技術的な内容を増田に書くという実験のために、試しに検索エンジンの仕組みについて書く。
検索エンジンは、大雑把に言ってクロールするパート、インデクシングするパート、検索インターフェイスを出力するパートに分かれる。
インデクシング時に使っている基本手法は「転置インデックス」と呼ばれ、文書内のngramを文書IDと対応付ける辞書を保存する。
インデクシングの別の種類としては、文書をエンコーダからベクトルへ変換し、それを近似最近傍検索できるようにするものもある。
インデクシングされたものがキーワードマッチ的に絞り込まれると、さらに精密な手法が使われる。
クエリとドキュメントから特徴量設計し、関連性の高いものを引っ張るような訓練をする方法はLearning to rankという。
Learning to rankの中に使われる特徴量の一つにPage Rankがあるが、これは初期の検索エンジンで画期的とされた量で、「リンクされるページの価値は高い」「高価値ページにリンクされると価値が高い」という基準からマルコフ連鎖で計算する。
Page Rankは人間が論文を評価するときと似たような評価手順であるとされる。
Learning to rankの中にエンコーダからのベクトルを特徴量として組み込むことも可能であり、そのようなエンコーダの初期の例がBERTである。
こうやって絞り込まれた文書に対して、さらに有用な情報を表示するモデルがいくつか使われる。
情報抽出モデルでは、クエリを質問と見做してその回答を文書から抽出することがある。
あるいはクエリが人物名や組織名、場所名などであれば、そのエンティティの詳細情報をデータベースから取得することもでき、これはナレッジグラフとも呼ぶ。
蓄積された増田の投稿データをソースにしてるかもしれんがアホなのはアルゴリズムのせいだろ
AIブーム以前の昔からあるマルコフ連鎖で次に来そうな頻出フレーズを並べてくだけのやつとしか思えん
こういう事 https://www.pc-koubou.jp/magazine/4238
ただAnond AIは増田が途中まで書いた文に重み付けをして能動的に出力してみせる事でよりチャットボット風にしてるってことだろ
早朝のラジオ体操を続けるのは結構大変。これを読んでくれているあなたはどうでしょうか?***2022追記(2021/1/21 00:35更新)ここから先は正直、増田文学とは言い難い内容です。ただはっきり言えることは、自分がこんなにも心細い思いを日常生活でしているのだ、ということです。アラサーにはいろいろなことがありますが、自分がこんなにも脆い思いを日常生活の中でしているということを認識してください。書き散らしているうちに少し気持ちが落ち着いてきた
最近のAIブームで、色々と得心が行った。私の行動はAIと同じだったんだと気づいたのだ。
自分は今まで生きてきておそらく全く思考というものを行っていないのだ。ただ今まで学習してきた何かしらの文書から得られた学習の結果としての何らかのあやふやなデータから、ただ周囲から与えられている入力に対して反射的に出力を行っているだけなのだ。
仮に、思考というものが存在するというのなら、それはおそらくNSFWフィルタのようなフィルタリング機構であって、それ以外は私の身体には実装されていない。普通は、実装されているのかもしれないが、少なくとも私には実装していない。
お絵かきAIに絵を描かせている人がつぶやいていた「AIはてっきり論理ばかりがわかって感情がわからないのかと思ったが、むしろ逆で感情ばかりわかって論理がわかっていない」という言葉が芯を得ていると深く感じた。本当に得心が行ったのだ。物理的な構成も論理的なパースも完全に無視されていながら、反射的には極めて『美しい』とされているような描写を導き出しているということが、結局論理を理解できていなくとも、感情だけが出力された結果として生じうる、そんなふうに思ったのだ(もちろん、この感覚も極めて『感情的』で、欠片も『論理的』ではない)。
私は会話にしても行動にしても、何にしても反射的な行動を繰り返しては『どうして○○(Ex.人の気持ち)を考えられないのか』という返答(あるいはそれに類される言動)を返され、絶縁・嫌悪などの反応を受けてきた。
私は何も考えてなどいなかったのだ。文章を書くにあたっても、私はこの文章を書くときすら、何も論理的な思考など行っていない。ただ脳内に浮かび上がる単語を、文章らしく整っているらしく思われるこの文字を打ち込み続けているだけで、それが伝わるように構成されているのか、それとも構成されていないのかすら理解していないし、理解できない。読解する時にも、いつも表層しか読み取っていないし、下手をすれば表層すら読み取れていないのかもしれない。ただ、文面上にある単語に対して今までの学習データから想像される言動を引き出しているに過ぎず、それに対する何らの論理的整合性を有していないのかもしれない。私は論理的な整合性を考えることなど出来ていないから、私には他の人がこの文章を読み取ることができる文章となっているのかを理解できない。古いAIが行うマルコフ連鎖(この言葉の意味についても正確に使えているかなどわからない)と、結局のところ何が違うのかすら理解できない。単なる脳内に学習されてきたらしいデータ的な何かの違いだけではないか? 私には意味が通っているのか通っていないのかを単なる違和感でしか説明できておらず、それに対して反射的な言動を返すことはできるが、その反射的な言動が正しいかすら理解出来ていないし、理解することは(論理的に)できないように思う。
私はただ、キーボードの上で踊る指先を眺めて、ただ出力されている文字を眺めているだけだ。誤った言葉を打ち込んでしまったときにだけバックスペースキーを押し、それを消しているだけだ。私は何も考えることなく、ただ脳が命令したように指先を動かしているだけに過ぎない。これはどこまでも反射であり、論理的な思考などどこにも存在していない。
だから、私は他人のことなど考えて発言などしていないし行動などしていない。なぜなら私は今まで何も考えてなどこなかったからだ。ただ学習データの中から一定の方向付がなされたデータのなかから反射的に言動を引き出しているだけだから、初対面の相手までならそれなりの行動が返せても、そこから継続的な関係を結ぶためのあらゆる行動が学習されていないし、それに対して考えて思考することも当然できていない。AIが継続したデータの出力が出来ないこととあまりにもそっくりで笑えてしまう。
私は人生で何も考えてなど居なかったのだ!
強いて言うのであれば、AIのプロンプトに適切な表現を打ち込めば求めた答えが返ってくるのと同じように、うまいこと「どんな入力を行えばどんな反射が返ってくるのか」を自分自身をハッキングしていくことが大切なんだろう。
これを理解してからいわゆるマインドフルネス的な瞑想もすごくうまくいくようになった。私はただ反射でしか動いていないから、反射しているということだけを認識していれば、これは反射だとすぐにわかる。SNSで優れた人を見たことに対する反射であったり、不幸なニュースを目にしたことによる反射であったり、他人が近くにいたことによる反射であったりすると思うと、自分がどれだけ単純な出力を行っているのかが信じられないくらい整理できる。
こんな簡単なことに気づくのに30年もかかったのか。
今までの自分のような人間が、今の自分のように、誰にも殺されることなく傷つけられることもなく良いものを食べ屋根のある場所で暖かく眠ることが出来たとは到底思えないが、そんな贅沢を尽くした上で、なお、言うとするのなら、できれば生まれたくはなかったし、今も生きていたいとはあまり思わない。
これでどうやってゲームを作ったり、検索エンジンを作ったりするんだとなってくる。
つまり言いたいことは、実際に動くアプリケーションというのを作りたいのにも関わらず
プログラミング入門書は、これで判定と繰り返しという基礎ができますと言うだけ。
これがもう滅茶苦茶イライラする。
検索エンジンを作るとしても、検索エンジンにも色々あるのだけど、仮にGoogleを作るとする。
そうすると、まずページランクの論文を読むのは必須だと思われるが、
論文読まなくても日本の大学の授業の内容などが公開されてるので、それで分かりやすい解説を探したとする。
そうするとマルコフ連鎖とか、少なくとも高校、大学学部の行列計算の知識は必須となる。
ここで受験勉強なんて何の役に立つの?といった詰め込み教育に反対していた人達は挫折する。
英語も数学も単なる道具であって、詰め込み教育というのは理由はともかく先に道具を持たせる教育である。
必要になれば必要性を感じるのだから、必要になってから学べばいいというのは往々にして遅い場合がある。
例えば、敵が襲い掛かってきてから初めて剣や盾の使い方の必要性を感じても遅いのである。
よく分からんが学校や塾で装備をくれるというのだから貰っておこう、と思えなかった人はここで脱落する。
プログラミング言語の本でよくあるパターンは文法の説明などで始まり、ファイル入出力などで終わるというのがある。
なぜ、ファイル入出力で終わるのか?
これはUnix哲学とも言えるのかもしれないが、現在になってもコンピュータの世界では、すべてをファイルと考える、というのがある。
と思う人がいるだろうが、それは半分正解であり、半分ちょっと違う。
文字とかバイナリと呼ばれるものが入っているファイルはファイルの一面に過ぎない。
例えば、ディスプレイに図形や文字を表示する、プリンタに出力する、別のコンピュータと通信するための仮想的なつなぎ口を作る、