rat360

A personal schizophrenic idea blog

Observations and Uncertainties of the Past

We humans, as living organisms, should have some information in our memory. But that information should not be complete, it should be a store of repeated observations as an individual.

f:id:anon_programmer:20201125160928j:plain

For example, if a mosquito is flying around at night while you are sleeping, you can choose to squash it or ignore it. Since the actual decision is not finished until tomorrow, you have uncertainty until tomorrow, a point in the future. But once you have crushed a mosquito, the world will probably split and you will move to the world where you have crushed it. In other words, you have memorized the information that you crushed the mosquito. And the world that you didn't smash it could exist as another branch.

The question is, what past paths are possible for the world where you crushed a mosquito? Because the information you have is incomplete, there are multiple possible paths. Looking at the above diagram, normal thinking would bring to mind the left diagram, but as a schizophrenic, I think of the right diagram. That is, there may be a point where the number of "possible past paths" is greater than 1.

It may be too complex and difficult to know exactly what the impact is, since individuals (or everything) is influenced by the environment and observations. However, given the biological significance of human memory and confirmation bias, it may be possible that choosing information that is convenient for you may result in choosing a world that works in your favor. If, from the level of the individual, there is the possibility of having a different past-path, what biological significance is there in synchronizing the information with other individuals? Isn't the information that humans have in their memory far more transposable than the fixed physical laws like speed of light?

These are just hypotheses, but what I'm trying to say is that uncertainty is a concept that can be applied to the past as well as the future. To demonstrate in a physical sense, of course, you need evidence.

観測と過去の不確実性 [日本語]

人間は生物として何らかの情報を記憶しているはずだ。しかしその情報は完全なものではなく、個体として観測を繰り返したものを保存しているだけである。

f:id:anon_programmer:20201125160928j:plain

たとえば、夜寝ているときに蚊が飛んでいたとして、それを潰すか無視するかをあなたは選べる。明日になるまでは実際の決定が終わっていないので、明日という未来の時点まで不確実性を持っている。しかし、ひとたび蚊を潰したのであれば、世界はおそらく分岐し、蚊を潰したという世界にあなたは移動するはずだ。言い換えれば、あなたは蚊を潰したという情報を記憶したことになる。そして、蚊を潰していないという世界は、あなたが情報として持っていないだけで、別の分岐として存在している可能性がある。

ここで考えたいことは、あなたが蚊を潰した世界について、どんな過去のパスが可能であるかということだ。あなたが持つ情報は不完全であるため、複数のパスが考えられる。上記の図を見れば、普通の考えでは左図を思い浮かべるが、統合失調症の私は右図を思い浮かべる。つまり、「可能な過去のパス」の数が1よりも大きい点が存在するのではないかということだ。

実際のところ、個人(あるいは色々なもの)は環境と観測の影響を受けるので、その影響を正確に知ることは複雑過ぎて難しいかもしれない。ただ、人間の記憶力や確証バイアスに関する生物学的な意義を考えた場合は、自分にとって都合のよい情報を選択して記憶することが、結果的に自分にとって有利に働く世界を選択できるのだろうか。個体というレベルから見て、異なる過去の記憶パスを持てる可能性があるなら、他の個体と情報の同期を取ることにはどんな生物学的意義があるのか。人間の記憶内の情報は、光速のような固定の物理法則よりも遥かに移ろいやすいものではないだろうか。

こういうものは仮説の域を出ないが、言いたいことは、不確実性は未来だけではなく、過去にも適用できる概念ではないか、ということだ。物理的な意味で実証するにはもちろんエビデンスが要る。

Is memorization just overfitting?

Memorization is considered to be one of the easiest ways to over-fitting. If a school teacher tells a student that the test will be taken directly from a given question, the student can answer the questions by rote without "understanding" how to solve them. But what is "understanding"?

Memorization is quite simple at first glance: it can be built by giving two ways, storing a problem as index, and retrieving that problem by sending some query. The following variations are possible:

  • Problem as a query to find the exact matching problems.
  • With problem as the query, you can search for problems by ranking them based on some score (e.g., similarity), etc.

On the other hand, a system based on some "intelligence" might use a different method than search.

  • Enter a problem and you can deduce it using some rule.
  • Enter a problem, and you will find something (e.g., a pattern) in the problem.
  • Enter a problem, and the problem is simplified, abstracted, or did reasoning.
  • Enter a problem, and you splits it into sub-problems.

f:id:anon_programmer:20201124002216j:plain

Whereas the memorization system was the type of knowledge that retrieves the problem itself, the intelligence-based system appears at first glance to be executing some program (deduction, pattern discovery, etc.).

In addition, some of them appear to be executed by a combination of the two systems:

  • Enter problem and you will find similar programs from a seemingly unrelated domain to the problem.
  • Entering problem will search for problems with an exact match or some score based on the sub-problems encompassed by the problem.
  • Deduce problem for the retrieved problems.

Indeed, you will not be able to solve 1+2=3 simply by memorizing the problem 1+1=2; if the rule for calculating 1+1=2 is not "understood", you will not be able to cope with the change in the number.

How about "memorization of the rules"? For example, you can solve a quadratic equation by memorizing the rule of the formula for solving a quadratic equation, but can this be called "understanding"? The rules in this case are simple, but it is possible to memorize rules in combination with rules, and a meta-rule about how to "combine" them might also be memorable.

When students solve quadratic equations, they don't just memorize the solution formula, they also use discriminant expressions and factorization, depending on the situation. This kind of knowledge seems to be acquired through habituation by solving a lot of problems, but does that habituation have anything to do with intelligence or understanding?

John von Neumann had this to say:

“Young man, in mathematics you don't understand things. You just get used to them.” ― John von Neumann

Personally, I think intelligence is the ability to execute a program. Memorized data itself does not have the ability to perform memorization. Abstraction from experience and knowledge might also mean that it has the ability to execute some program that uses the data.

Why can't a computer run a program like a human being runs in his or her brain?

丸暗記は単なる過学習なのか [日本語]

丸暗記は、最も過学習しやすい方法の一つとして考えられています。学校の教師が、「指定した問題からそのままテストに出題する」と学生に伝えれば、学生は解き方・解答を"理解"せずに、丸暗記して回答することができます。しかし、「理解」とは何でしょうか?

f:id:anon_programmer:20201124002216j:plain

丸暗記のシステムは、一見すると非常に単純です。indexとしてproblemを保存する方法と、そのproblemリストを何らかのクエリから検索する方法の2つを与えることで構築できます。以下のようなバリエーションがありえます:

  • problemをクエリとして、完全一致するproblemsを検索する。
  • problemをクエリとして、何らかのスコア(例えば類似性)などに基づいてランク付けしてproblemsを検索する。

一方で、何らかの「知性」に基づいたシステムは、検索とは別の方法を使う可能性があります。あくまでも一例でしかありませんが、

  • problemを入力すると、何らかのルールを利用して演繹する。
  • problemを入力すると、problemから何か(例えばパターン)を発見する。
  • problemを入力すると、problemを単純化・抽象化・意味付けなどをする。
  • problemを入力すると、sub-problemsに分割する。

丸暗記システムが問題そのものを検索するタイプの知識であったのに対し、知性に基づいたシステムは一見すると何らかのプログラム(演繹、パターンの発見、等) を実行しているように見えます。

さらに、2つのシステムの組み合わせによって実行されているように見えるものもあります:

  • problemを入力すると、problemとは一見関連のないドメインから類似するproblemsを発見する。
  • problemを入力すると、problemが包含するsub-problemsに基づいて、完全一致または何らかのスコアでproblemsを検索する。
  • problemをクエリとして検索されたproblemsに対して演繹する。

あくまでも数学の問題に限定しますが、たくさんの問題を丸暗記システムに記憶させたとしても、そのシステムをどう使うかによっては、単なる「過学習」とは言えないかもしれません。

確かに、受験に出題される可能性のある、ありとあらゆる問題を丸暗記した場合、1+1=2 という問題を暗記するだけでは、1+2=3 を解くことはできません。1+1=2を計算したルールが"理解"されていなければ、数字が変わっただけで対応できなくなります。

しかし、「ルールに対する丸暗記」と考えた場合はどうでしょうか。例えば、二次方程式の解の公式というルールを丸暗記すれば二次方程式が解けますが、これは"理解"と言えるでしょうか。この場合のルールは単純ですが、ルールとルールを組み合わせたルールを暗記する可能性もありますし、その「組み合わせ方」についてのメタルールもまた暗記可能なルールかもしれません。

学生が二次方程式を解くとき、単に解の公式を覚えるだけでなく、状況に応じて、判別式を使ったり、因数分解をしたりします。こういう知識は問題をたくさん解くことで慣れていって獲得されているように見えますが、その慣れというのは知性、あるいは理解と関係するでしょうか。

ジョン・フォン・ノイマンは、次のような言葉を残しています:

“Young man, in mathematics you don't understand things. You just get used to them.” ― John von Neumann

例えば、私がこうやってブログで何かの抽象化を試みるとき、これは暗記と慣れの組み合わせが成しているということになるでしょうか。もしそうであれば、コンピュータに行わせられる事柄にはもっと可能性があるのかもしれません。

個人的に思うのは、知性とはプログラムを実行する能力ではないかということです。暗記されたデータそのものは、暗記を行うという実行能力を持ち合わせていません。「経験や知識から物事を抽象化する」というのも、データを利用する何らかのプログラムを実行する能力を持っていることを意味しているのかもしれません。

もしそうだとすると、コンピュータが人間が脳内で実行しているようなプログラムを実行できない理由は何でしょうか。

A thought experiment about hypothesis-driven and data-driven

In Japan, the dogmatism that "it is difficult to do anything with data without predetermining a hypothesis in advance, so you should set a hypothesis" is sometimes circulated on Twitter. At the same time, the dogmatism that "Recent trend is data-driven, so we should create hypotheses from data" is also rampant.

But if you google the terms hypothesis-driven or data-driven, you'll find that there's few formulation. So let's do a little thought experiment on these terms.

f:id:anon_programmer:20201123011705j:plain

Consider the claim "I found a pattern in the data". It seems to me that given labels, a model fitted against it from features would imply a pattern. So is the "pattern" a hypothesis? Did the hypothesis exist a priori? Or did you find it later?

This is a difficult question because at the point where we have labels, we implicitly hypothesize that "there must be a pattern that can explain the labels from the features by more than P%". However, "this model (pattern) will explain the data above the P%" is a hypothesis that emerged later.

As already pasted the above image, the function f1 means that the hypothesis was "generated" from the data D1 that was there first. The function f2 is "testing" the generated hypothesis with different data than the first. Think of the range [0, 1] as implying a normalized score. Ideally, D1 and D2 should be independent.

In a place like kaggle, you generate a model (a hypothesis as a pattern) from the provided data D1 and show its generalization performance in the leaderboard test data D2. This is "data-driven" if you think of the model as a hypothesis, since you did not generate data D1 yourself.

However, generating the data D1 is labeled based on some pre-hypothesis. In other words, the hypothesis is, "With this feature, we can explain this label with a score of P% or better". In this case, it could be called "hypothesis-driven".

Then we might say that the annotation work is hypothesis-driven, and the work we model in the kaggle competition is data-driven. But more fundamentally, the question is: "Why did you think the label would be predictive if you used the feature?". The annotation work uses the hypothesis that we can predict that label. So where did the hypothesis come from?

If the hypothesis is "generated by someone looking at the data trends of a feature," then this is data-driven. And the data used as features may or may not be designed to be labeled as such.

When Alice published a photo online with the title "My Cute Cat", if the photo was scraped and used for cat image classification, Alice didn't think, "I'll share it to contribute to cat image classification (with the hypothesis defined that this photo would allow for cat image classification)."

On the one hand, you can say, "The data collected here will be useful for this kind of hypothesis later on, so let's design a system for it," or "This kind of data column is going to need for this hypothesis".

That's what I think. If someone says "this is the only way to do it", I think it's possible that they're only looking at one side of things. Even this article is just a "hypothesis".

Do you think Twitter envisioned all the natural language processing tasks (i.e., hypotheses) before lunching the service? If so, you are a complete worshiper in hypothesis-driven.

Ultimately, everything is a physical phenomenon, and what is produced by it is data. Did God generate that data on the premise of some hypothesis? In the end, we can observe is not a hypothesis, but data, I think. Or, will the hypothesis itself affect the data being observed?

Remove all ads

仮説駆動とデータ駆動に関する思考実験 [日本語]

日本国内ではたまに、「仮説を事前に決めておかないと、データを使って何かをするのは難しいので、仮説設定すべきだ」という教条主義Twitterで流れてきます。かと思えば、「今の時代はデータ駆動だから、データから仮説を作るべき」という教条主義もまた乱立しています。

しかし、仮説駆動とかデータ駆動といった言葉でググっても、まともな定式化はされていないことに気が付きます。なので、これらの言葉について少し思考実験してみます。

f:id:anon_programmer:20201123011705j:plain

「データからパターンを見つけた」という主張を考えてみましょう。ある教師ラベルがあり、それに対してフィッティングされたモデルが、実のところパターンを意味しているように思えます。では、その「パターン」は仮説でしょうか。その仮説は事前に存在していましたか?それとも後から見つけましたか?

これは難しい問いです。というのも、教師ラベルがある時点で、我々は「特徴量からラベルをP%以上で説明できるパターンが存在するに違いない」という仮説を暗黙理に立てているからです。しかし、「このモデル(パターン)は、データをP%以上説明するだろう」というのは後から出てきた仮説です。

すでに図を貼りましたが、関数f1は、最初にあったデータから仮説を「生成した」ことを意味します。関数f2は、生成された仮説を最初とは異なるデータで「検証している」ものです。[0, 1]の範囲は、正規化されたスコアを意味すると考えてください。理想的には、D1とD2は独立である必要があります。

kaggleのような場では、用意されたデータD1から、モデル(パターンとしての仮説)を生成し、その汎化性能をリーダーボードのテストデータD2で示しています。あなた自身は、データD1を生成していないので、モデル=仮説と考えるなら、これは「データ駆動」です。なぜなら、D1が最初に存在し、そこからあなたがモデルという名の仮説を生成するためです。

コンペ開催者が提供するデータD1を生成する作業は、何らかの事前の仮説に基づいてラベル付けがされていることになります。言い換えれば、「この特徴量を使えば、このラベルをP%以上のスコアで説明できるだろう」という仮説です。この場合は、「仮説駆動」と言えるのではないでしょうか。

そうすると、「アノテーション作業は仮説駆動であり、kaggleのコンペでモデリングする作業はデータ駆動である」と言えるかもしれません。しかし、もっと根本的なことを言えば、「なぜその特徴量を使えば、そのラベルが予測できると思ったのか」という問いがあります。アノテーション作業には、「そのラベルを予測できる」という仮説が使われています。それでは、その仮説はどこから生成されましたか?

その仮説がもし、「特徴量のデータ傾向を誰かが見ることによって生成された」のであれば、これはデータ駆動です。そして、この特徴量として使われているデータは、そのようなラベル付けをすることを前提に作られた場合もあれば、そうではない場合もあるわけです。

アリスさんがネットに「私の可愛い猫」というタイトルで写真を公開したとき、その写真がスクレイピングされて、猫画像分類に使われたなら、アリスさんは「猫画像分類に貢献するために(この写真によって猫画像分類ができるだろうという仮説を定義した上で)シェアしよう」と考えたでしょうか。

一方で、「ここで収集されるデータは後々、こういう仮説に対して使えそうだから、そのためにこういう設計をしてシステムを作ろう」とか「この仮説に対してこういうデータカラムが必要になりそうだ」という具合に、仮説が最初にになっている場合もありえます。

私が今まで考えていたのは、そういったことです。誰かが「この方法だけが正しい」と言っていたら、物事の一側面しか見ていない可能性があると考えています。この記事だって、「仮説」にすぎません。

Twitter社は最初の設計において、そのデータから行えるすべての自然言語処理タスク(つまり仮説)をイメージしていたと思いますか? もしそうなら、あなたは完全に仮説駆動の信者と言えるでしょう。

究極的には、すべては物理現象であり、それによって生じたものはデータです。神は何らかの仮説を前提としてそのデータを生成しましたか? 最終的に行き着くところは仮説ではなく、データではないでしょうか。それとも、仮説そのものが観測されるデータに影響を与えるのでしょうか?

Is it possible to build a model of the science fiction world?

As a mentally challenged person, I have certain unusual experiences.

For example, I may be walking down one street, and when I look back, I see that it is a different street. The back of the apartment I was living in became a shrine one day, a school another day, a forest another day, and a concrete tower another day. I wondered if there was a yakiniku restaurant nearby, and suddenly a yakiniku restaurant appeared right in front of me.

After such an experience, it is not surprising that you might have a further delusion, such as,

  • "Perhaps this world has multiple parallel worlds, and if there is a change in the perception in your brain, you will be replaced by your counterpart in another world."
  • "When the entropy of some kind in the brain is at its maximum, it has the possibility to go to another world until the entropy goes down"

It sounds like a kind of sci-fi world. I think this delusion can model to some extent as just mathematics, so I will give it a try.

f:id:anon_programmer:20201120205858j:plain

 t_0 \rightarrow t_1 \rightarrow t_2 , and so on, following various branching possibilities from a point in time to the future. Normally, time cannot be reversed, but given a path  P_I, P_J , the question is: what is a jumpable tuple of  I, J (or a jumpable condition)? Is it possible to jump vertically, but not in the opposite direction? Unfortunately, this is not only in the realm of mathematics, but also the physical laws of this science fiction world must be taken into account.

Also, if there are worlds  W_I = f(P_I) that share the same path  P_I , and  X_I(1),...,X_I(k) \in W_I is each world, is  k finite? Or how many branches from one path to the next,  n(I) . If  W_I \in U , how many  |U| ?

In this way, it seems that the world of science fiction can be mathematized. Of course, this would not be a mathematicalization that would explain the real world, but if we can make a mathematicalization that assumes fictitious physical laws of a totally fictitious world, there may be no guarantee that mathematics will correctly explain the physical laws. I think it would be difficult to find a model that fits without repeated experimentation and observation.

However, "algorithm" is a bit different stuff. We can prove something by creating it! (However, sometimes, we need to prove that we can't create it.)