[PYTHON] [Probabilité] Je vais expliquer parce que le problème du robot de Center 2020 Mathematics 1 · A était intéressant.

introduction

Cet article est un article qui explique l'inférence bayésienne pour ceux qui s'intéressent aux statistiques de probabilité avec une connaissance de l'université jusqu'aux études supérieures.

J'ai écrit un article car le problème du robot apparu dans Mathematics 1 / A de l'examen du Centre 2020 était difficile. J'ai l'impression que je n'ai pas appris les probabilités conditionnelles au lycée, alors j'étais curieux de savoir que les élèves du secondaire font des choses difficiles ces jours-ci.

En fait, il est très facile de donner la bonne réponse à cette question. Peut-être que ce problème de robot en lui-même est facile pour un lycéen à l'esprit mou.

Question 3 [1]

Cette question est très simple si vous donnez simplement une réponse. Si vous résolvez par le haut, vous saurez que 0 et 2 sont corrects, donc le problème du robot de 3 sera automatiquement incorrect. Je ne lirais même pas cette question si j'étais à l'examen.

L'énoncé du problème est le suivant.

③ Il y a deux robots qui regardent le côté de la pièce et disent seulement "avant (avant)" ou "arrière (arrière)". Cependant, les deux robots ont une probabilité de parler correctement sur la surface qui apparaît est de 0,9 et une probabilité de ne pas parler correctement est de 0,1, et ces deux corps sont supposés parler sans être affectés l'un par l'autre. Maintenant, une personne jette une pièce. Si les deux corps qui ont vu le côté exposé disaient tous les deux "avant" et que la probabilité que la table apparaisse réellement était $ p $, ce serait $ p \ leq0.9 $.

問題.PNG

Réponse d'un lycéen

Tout d'abord, résolvons-le en utilisant des mathématiques que les élèves du secondaire peuvent utiliser. Cependant, je ne sais pas comment enseigner dans la classe actuelle car il semble que je l'ai résolu uniquement en regardant le site de référence des lycéens. .. ..

(Si vous écrivez en japonais intuitif sans crainte de malentendu mathématique) La probabilité conditionnelle est

\frac{Probabilité d'événements et de conditions se produisant en même temps}{Probabilité d'occurrence de la condition}

Donné dans. Mathématiquement parlant

\frac{P(A \cap B)}{P(B)}

Ce sera. Maintenant que A est l'événement où la pièce est en fait le front, et B est l'événement où les deux robots parlent au front en même temps.

\begin{align}
& \frac{P(A \cap B)}{P(B)} \\
=& \frac{P(La pièce est en fait l'avant) \cap (Deux robots parlent à la table en même temps)}{P(Deux robots parlent à la table en même temps)} \\
=& \frac{0.5*0.9*0.9}{0.5*0.1*0.1+0.5*0.9*0.9} \\
=& 0.9878\cdots
\end{align}

La réponse est que cette question est "fausse". Le dénominateur est difficile, mais la probabilité que deux robots disent le front en même temps est interprétée que la probabilité de deux robots qui ne dépendent pas des pièces de monnaie peut être obtenue en ajoutant le cas où la pièce est avant et le cas où elle est arrière. .. À cette époque, les élèves du secondaire qui ne connaissent pas la marginalisation peuvent avoir du mal à comprendre le dénominateur. Je peux sentir l'intention du questionneur de «résoudre d'autres questions et de répondre à cette question».

Résolvez plus précisément

L'histoire d'ici sera dans la gamme après l'université.

Définition et modélisation des problèmes

Représente le problème dans un modèle graphique et présente une table de probabilité conditionnelle (CPT).

モデル図.PNG

Si les variables de probabilité sur le recto et le verso de la pièce sont $ C $, le verso est $ C = 0 $ et le recto est $ C = 1 $.

P(C=0) = 0.5 \\
P(C=1) = 0.5

Peut être exprimé comme. En supposant que la variable de probabilité de la remarque du nième robot est $ R_n $, le dos est $ R_n = 0 $, et le front est $ R_n = 1 $.

P(R_n=0|C=0) =  0.9\\
P(R_n=1|C=0) =  0.1\\
P(R_n=0|C=1) =  0.1\\
P(R_n=1|C=1) =  0.9

Peut être exprimé comme. De plus, les robots parlent sans être affectés l'un par l'autre, de sorte que les faces des pièces sont indépendantes (conditionnellement indépendantes) dans des conditions données.

P(R_1, R_2|C) = P(R_1|C)P(R_2|C)

Est établi. Telles sont les conditions préalables données dans la question. C'est un exemple simple de réseau de bassin.

Ici, $ P (R_n = 1) $ est dû à la marginalisation

\begin{align}
& P(R_n=1) \\ 
=& P(R_n=1|C=0)P(C=0) + P(R_n=1|C=1)P(C=1) \quad (périphérialisation)\\
=& 0.1\cdot0.5 +0.9\cdot0.5 \\
=& 0.5
\end{align}

Peut être facilement obtenu.

Facile à résoudre

Ce que vous devriez trouver est $ P (C = 1 | R_1 = 1, R_2 = 1) $. En utilisant pleinement le théorème de Bayes et sa marginalisation, il ne peut être facilement exprimé que par des variables connues.

\begin{align}
 & P(C=1|R_1=1, R_2=1) \\
=& \frac{P(C=1, R_1=1, R_2=1)}{P(R_1=1, R_2=1)} \quad (Théorème de Bayes)\\
=& \frac{P(R_1=1, R_2=1|C=1)P(C=1)}{P(R_1=1, R_2=1)} \\
=& \frac{P(R_1=1|C=1)P(R_2=1|C=1)P(C=1)}{P(R_1=1, R_2=1)} \quad (Profitez de l'indépendance conditionnelle) \\
=& \frac{P(R_1=1|C=1)P(R_2=1|C=1)P(C=1)}{P(R_1=1, R_2=1|C=0)(C=0) + P(R_1=1, R_2=1|C=1)(C=1)} \quad (Périphérialisation) \\
=& \frac{0.5\cdot0.9\cdot0.9}{0.5\cdot0.1\cdot0.1+0.5\cdot0.9\cdot0.9} \\
=& 0.9878\cdots
\end{align}

La réponse du lycée n'est qu'une expression de cela en japonais. Au contraire, les réponses du lycée peuvent contenir des malentendus linguistiques, il serait donc idéal de penser rigoureusement de cette manière.

Paradoxe du robot

Eh bien, le sujet principal est d'ici. Partagez des histoires que vous avez résolues et que vous avez trouvées un peu intéressantes.

Ces robots n'ont aucun effet les uns sur les autres. ** Peu importe ce que dit Robot 2, les remarques de Robot 1 ne devraient pas changer. ** ** Cependant, dans certaines circonstances, ** les robots semblent s'influencer mutuellement **. Tout comme le problème de Monty Hall, l'intuition humaine et la réponse théorique réelle s'écartent l'une de l'autre.

[Problème de Monty Hall](https://ja.wikipedia.org/wiki/%E3%83%A2%E3%83%B3%E3%83%86%E3%82%A3%E3%83%BB% E3% 83% 9B% E3% 83% BC% E3% 83% AB% E5% 95% 8F% E9% A1% 8C)

L'indépendance du robot

Vous sentez-vous mal à l'aise avec le développement du dénominateur de la formule introduit dans le chapitre «Facile à résoudre»? Parce que les robots ne s'influencent pas

\begin{align}
P(R_1=1, R_2=1) = P(R_1=1)P(R_2=1)
\end{align}

Semble tenir, et peut-il être facilement calculé en utilisant cela?

** Mais cette transformation de formule est fausse. $ P (R_1 = 1, R_2 = 1) \ neq P (R_1 = 1) P (R_2 = 1) . ** ** Les robots sont «conditionnellement indépendants». Seulement à la condition que la pièce C ait été révéléeP(R_1, R_2|C) = P(R_1|C)P(R_2|C)$Est établi. Le développement correct de $ P (R_1 = 1, R_2 = 1) $ est

\begin{align}
&P(R_1=1, R_2=1) \\
=& P(R_1=1|R_2=1)P(R_2=1) \\
\end{align}

Et $ P (R_1 = 1 | R_2 = 1) $ est

\begin{align}
& P(R_1=1|R_2=1) \\ 
=& P(R_1=1|R_2=1, C=0)P(C=0|R_2=1) + P(R_1=1|R_2=1, C=1)P(C=1|R_2=1) \\
=& P(R_1=1|C=0)P(C=0|R_2=1) + P(R_1=1|C=1)P(C=1|R_2=1) \\
=& 0.1\cdot0.1 +0.9\cdot0.9 \\
=& 0.82
\end{align}

Peut être calculé comme.

C'est un résultat effrayant. Puisque $ P (R_1) = 0,5 $, la probabilité que le Robot 1 dise «Avant» est passée de 0,5 à 0,82 lorsque le Robot 2 dit «Avant». J'ai l'impression que les remarques de Robot 1 ont changé avec les remarques de Robot 2. Le robot 1 et le robot 2 ne devraient pas être liés l'un à l'autre, mais cela semble étrange.

Pourquoi la remarque de Robot 1 dépend-elle de Robot 2?

Ce paradoxe est causé par les pièces invisibles. Comme je l'ai expliqué plus haut, à condition que la pièce soit visible, les remarques du robot sont conditionnellement indépendantes et ne s'affectent pas. Mais que faire si Robot 2 parle lorsque les pièces ne sont pas visibles? Si le Robot 2 dit «avant», la probabilité que la pièce soit avant augmentera. En fait $ P (C = 1 | R_2 = 1) $ est du théorème de Bayes

\begin{align}
& P(C=1|R_2=1) \\ 
=& \frac{P(R_2=1|C=1)P(C=1)}{P(R_2=1)} \\
=& \frac{0.9\cdot0.5}{0.5} \\
=& 0.9
\end{align}

Ce sera. Lorsque Robot 2 dit front, la probabilité qu'une pièce soit devant augmente de 0,5 à 0,9. À partir de là, si le Robot 2 est à l'avant, la probabilité que les pièces soient à l'avant augmentera et, par extension, la probabilité que le Robot 1 soit à l'avant augmentera.

Vous n'arrivez toujours pas à comprendre intuitivement? Ensuite, augmentez le nombre de robots et pensez-y. Considérant N robots, cela se rapproche de l'intuition humaine.

Considérez N robots.

Considérez le cas où il y a N robots et chacun d'eux juge la face arrière de la pièce séparément.

ロボットN.PNG

Parce que le robot est conditionnellement indépendant du rouleau de pièces,

P(R_1, R_2, \dots, R_N|C) = \prod_{i=1}^N P(R_i|C)

Est établi. Lorsque tous les N robots disent "devant", la probabilité que la pièce soit réellement devant est le même calcul que lorsqu'il y en a deux.

\begin{align}
& P(C=1|R_1=1, R_2=1, \dots, R_N=1) \\
= & \frac{P(C=1)\prod_{i=1}^N P(R_i=1|C=1)}{P(R_1=1, R_2=1, \dots, R_N=1)} \\
= & \frac{P(C=1)\prod_{i=1}^N P(R_i=1|C=1)}{P(R_1=1, R_2=1, \dots, R_N=1 | C=0)P(C=0) + P(R_1=1, R_2=1, \dots, R_N=1 | C=1)P(C=1)} \\
= & \frac{P(C=1)\prod_{i=1}^N P(R_i=1|C=1)}{P(C=0)\prod_{i=1}^N P(R_i=1|C=0) + P(C=1)\prod_{i=1}^N P(R_i=1|C=1)} \\
= & \frac{0.5\cdot0.9^N}{0.5\cdot0.1^N + 0.5\cdot0.9^N} \\
= & \frac{0.9^N}{0.1^N + 0.9^N}
\end{align}

Ce sera. C'est devenu une très belle cérémonie. En fait, la substitution de $ N = 2 $ correspond à la réponse pour les deux robots. Cette formule est 1 à la limite de $ N \ rightarrow \ infty $. S'il y a un nombre infini de robots et que tous disent "devant", vous pouvez dire qu'ils sont devant sans regarder les pièces.

Ensuite, lorsque les robots 2 à N disent front, la probabilité $ P (R_1 = 1 | R_2 = 1, R_2 = 1, \ dots, R_N = 1) $ que le robot 1 dit front est

\begin{align}
& P(R_1=1|R_2=1, R_3=1, \dots, R_N=1) \\ 
=& P(R_1=1|C=0)P(C=0|R_2=1, R_3=1, \dots, R_N=1) \\
 &+ P(R_1=1|C=1)P(C=1|R_2=1, R_3=1, \dots, R_N=1) \\
=& P(R_1=1|C=0) \frac{0.1^{N-1}}{0.1^{N-1} + 0.9^{N-1}} + P(R_0=1|C=1) \frac{0.9^{N-1}}{0.1^{N-1} + 0.9^{N-1}} \\
=& \frac{0.1^N}{0.1^{N-1} + 0.9^{N-1}} + \frac{0.9^N}{0.1^{N-1} + 0.9^{N-1}} \\
=& \frac{0.1^N + 0.9^N}{0.1^{N-1} + 0.9^{N-1}} \\
\end{align}

Ce sera. C'est aussi une belle formule. Cela correspond également certainement au cas de deux robots avec la substitution de $ N = 2 $. Cette formule est de 0,9 à la limite de $ N \ rightarrow \ infty $. S'il y a un nombre infini de robots et qu'ils disent tous «avant», ils seront «avant» sans regarder les pièces, donc le résultat que la probabilité de dire «robot 1» est de 0,9 est raisonnable. Les résultats lors de la modification du nombre de robots sont les suivants.

\begin{align}
&P(R_1=1) &=& 0.5 \\
&P(R_1=1|R_2=1) &=& 0.820 \\
&P(R_1=1|R_2=1, R_3=1) &=& 0.890 \\
&P(R_1=1|R_2=1, R_3=1, R_4=1) &=& 0.899 \\
\end{align}

Dans ce cas, "Je ne peux pas voir la pièce, mais comme de nombreux autres robots sont devant, la pièce est probablement devant. Par conséquent, la probabilité que le robot 1 soit à l'avant devrait être supérieure à 0,5", intuitivement. Je pense que vous pouvez le comprendre.

La raison pour laquelle vous vous sentez mal à l'aise avec deux robots peut être que votre cerveau pense que les deux robots sont sur un pied d'égalité. Bien que je pense que Robot 1 ne sera pas affecté par les déclarations de Robot 2, il est probable que les déclarations de nombreux robots affecteront Robot 1. Ce peut être une saga animale qui valorise le vote à la majorité.

La question de savoir pourquoi deux robots sont contre-intuitifs a quelque chose à voir avec le problème de Monty Hall. Même si vous ne comprenez pas intuitivement le problème de Monty Hall, vous pouvez facilement comprendre le problème de Monty Hall avec 100 portes.

Modèle graphique

Bien sûr, la discussion que j'ai faite jusqu'à présent n'est pas la première fois que j'y pense. C'est juste un cas particulier d'un modèle graphique ou d'un champ appelé réseaux basiens. Plus précisément, ce problème de robot peut être considéré comme un exemple d'inférence de graphe de bout en bout. Je suis fatigué donc je ne l'expliquerai plus. .. .. Si vous êtes intéressé, veuillez google avec le modèle graphique.

Simulation de Monte Carlo

Effectuez une simulation de Monte Carlo pour voir si la discussion jusqu'à présent est correcte. J'ai jeté une pièce 100 000 fois avec du python.

<détails>

Code source de la simulation Monte Carlo (plié car il est long) </ summary>

# -*- coding: utf-8 -*-

# %%
import numpy as np
import pandas as pd

# %%


N = 100000

robot_num = 2

result = []

# %%

coin = np.zeros((N, 1), dtype = int)
robot = np.zeros((N, robot_num), dtype = int)

for i in range(N):
    coin[i] = np.random.randint(0, 2)
    robot_rand = np.random.random(robot_num)
   
    for n_robot, tmp in enumerate(robot_rand):
        if tmp <= 0.9 :
            robot[i, n_robot] = coin[i]
        else :
            robot[i, n_robot] = coin[i] ^ 1
    

# %%
            
result = pd.DataFrame(np.concatenate([coin, robot], axis = 1), columns = ["coin", "robot1", "robot2"])

all_1 = result[(result.robot1 == 1) & (result.robot2 == 1)]

p = (all_1.coin == 1).sum()/all_1.shape[0]

# %%

p_truth = (0.5*0.9*0.9)/(0.5*0.9*0.9+0.1*0.1*0.5)
print("Probabilité conditionnelle des pièces lorsque deux robots disent front (théorie):{}".format(p_truth))
print("Probabilité conditionnelle de pièces lorsque deux robots disent avant (expérience):{}".format(p))

# %%

r12 = result[result.robot2 == 1]
p12 = (r12.robot1 == 1).sum() / r12.shape[0]


p12_truth = 0.9*0.9+0.1*0.1
print("Probabilité conditionnelle (théorie) du robot 1 lorsque le robot 2 dit avant:{}".format(p12_truth))
print("Probabilité conditionnelle du robot 1 lorsque le robot 2 dit avant (expérience):{}".format(p12))

Le résultat de sortie du programme est le suivant. Il y a toujours une erreur à 100 000 fois, mais on peut confirmer qu'elles sont à peu près les mêmes.

Probabilité conditionnelle des pièces lorsque deux robots disent avant (théorie): 0.9878048780487805
Probabilité conditionnelle de pièces lorsque deux robots disent avant (expérience): 0.988986730708585
Probabilité conditionnelle du robot 1 lorsque le robot 2 dit avant (théorie): 0.8200000000000001
Probabilité conditionnelle du robot 1 lorsque le robot 2 dit avant (expérience): 0.8214371114299378

Ci-dessous, des choses diverses

Enfin, j'écrirai ce que j'ai proposé.

Dés à facettes M

C'était un problème avec les pièces de monnaie, c'est-à-dire la distribution de Bernoulli, mais en considérant quelque chose comme un dé de plan M, le même argument peut être avancé même dans le cas d'une distribution catégorielle. Soit $ P (C = m ^ \ prime | R_1 = r_1, R_2 = r_2, \ dots, R_N = r_N) $ la probabilité que $ m ^ \ prime $ apparaisse sur une certaine surface.

\begin{align}
& P(C=m^\prime|R_1=r_1, R_2=r_2, \dots, R_N=r_N) \\
= & \frac{P(C=m^\prime)\prod_{i=1}^N P(R_i=r_i|C=m^\prime)}{P(R_1=r_1, R_2=r_2, \dots, R_N=r_N)} \\
= & \frac{P(C=m^\prime)\prod_{i=1}^N P(R_i=r_i|C=m^\prime)}{\sum_{m=1}^M P(R_1=r_1, R_2=r_2, \dots, R_N=r_N | C=m)P(C=m)} \\
= & \frac{P(C=m^\prime)\prod_{i=1}^N P(R_i=r_i|C=m^\prime)}{\sum_{m=1}^M P(C=m)\prod_{i=1}^N P(R_i=r_i|C=m)}
\end{align}

Ce sera.

Prise en compte de l'inférence bayésienne

Si vous pensez ajouter un robot comme ajouter un point de données, vous pouvez voir que l'argument est exactement le même que le modèle d'inférence bayésien commun. L'estimation des paramètres du modèle de régression à partir des points de données bruyants de la distribution gaussienne et l'estimation du recto et du verso de la pièce à partir d'un robot fantaisiste font le même calcul.

\begin{align}
& P(C=m^\prime|R_1=r_1, R_2=r_2, \dots, R_{N+1}=r_{N+1}) \\
\propto & P(C=m^\prime) \prod_{i=1}^{N+1} P(R_i=r_i|C=m^\prime) \\
= & P(C=m^\prime) \prod_{i=1}^N P(R_i=r_i|C=m^\prime)) \times P(R_{N+1}=r_{N+1}|C=m^\prime) \\
\propto & P(C=m^\prime|R_1=r_1, R_2=r_2, \dots, R_N=r_N) \times P(R_{N+1}=r_{N+1}|C=m^\prime)
\end{align}

Peut être écrit. Si $ P (C = m ^ \ prime | R_1 = r_1, R_2 = r_2, \ dots, R_N = r_N) $ peut être calculé, il suffit de multiplier par la probabilité d'un robot supplémentaire $ {N + 1} $ et tout Cela signifie que vous pouvez calculer la probabilité globale sans avoir à recalculer. C'est la même chose que la discussion lors de l'ajout de points de données et de la déduction de paramètres.

finalement

Veuillez faire de votre mieux en tant que candidat.

Ce que j'ai fait

Ci-dessous, j'écrirai un article si je suis motivé.

  1. Lorsqu'il y a deux pièces et un robot Une discussion sur les modèles en tête-à-tête. Ce sera plus difficile que ce problème.

  2. Lorsque la probabilité d'apparition du recto et du verso de la pièce et la probabilité que le robot parle sont inconnues C'est une méthode d'estimation de la probabilité avec MCMC. L'explication est très difficile, donc je ne semble pas motivé.

Recommended Posts

[Probabilité] Je vais expliquer parce que le problème du robot de Center 2020 Mathematics 1 · A était intéressant.
J'étais en difficulté car le comportement du conteneur docker n'a pas changé
J'ai résolu le problème le plus profond d'Hiroshi Yuki.
Calculer la probabilité de valeurs aberrantes sur les moustaches de la boîte
Les performances de PHP étaient meilleures que ce à quoi je m'attendais
Le problème Zip 4 Gbyte est une histoire du passé
J'ai réfléchi un peu car Trace Plot du paramètre de stan est difficile à voir
J'ai écrit un doctest dans "J'ai essayé de simuler la probabilité d'un jeu de bingo avec Python"