備忘録:chromedriverが動かず、webdriver_managerからselenium managerへ乗り換え

背景

python+seleniumでchromeのバージョンアップに自動的に対応するために、webdriver managerを使っていたが、chromedriverのダウンロード環境が変わり、 webdriver manager がうまく動作しなくなった。したがって手動で chromedriver を更新しなければならなくなった。

しかし、seleniumの新しいバージョンにはselenium managerというのがデフォルトでついているようで、これを使うと webdriver_manager を使わなくても済む。これを使って上手くいくようになった。

対処した内容

(1)seleniumのアップグレード

pip install --upgrade selenium

バージョンが4.10.0以上になってくれればOK

(2)念のためwebdriver-managerをアンインストール

pip uninstall webdriver-manager

(3)コードからwebdriver_managerモジュールのimportを削除

from webdriver_manager.chrome import ChromeDriverManager

を削除

コメントアウトした

(4)ChromeDriverManagerを使っていた部分を変更

driver = webdriver.Chrome(ChromeDriverManager().install())

driver = webdriver.Chrome()

に変更。

これで動くようになったようだ、とりあえず。

参考にした情報

一歩ずつ学ぶゲーム理論

裳華房より2021年に出版した拙著「一歩ずつ学ぶゲーム理論」は初めて学ぶ者も数式でゲーム理論を理解できることを目指した教科書です.

モンティ・ホール問題の直感的説明は間違ってることが多い

まずモンティ・ホール問題について説明しておきます。

司会者(モンティ・ホールさん)と回答者がいて、回答者の前にはA、B、Cの3つのドアがあります。1つのドアは当たりで豪華な商品があり、回答者はそのドアを当てます。2つのドアはハズレです。回答者が「当たり」のドアを当てる、というものです。

まず、回答者がが当たりと思うドアを1つ選びます。ここではAを選んだとしましょう。司会者は、当たりのドアを知っていて、回答者が選ばなかったドアのうち、1つのドアがハズレであることを示します。ここではBのドアがハズレだと示されたとしましょう。

ここで司会者が回答者に言います。「あなたには、もう一度ドアを選び直すチャンスがあります。そのままにしますか?それとも変えますか?(stick or switch?)」
今回の場合、Aのまま留まるか?Cに変えるか?ということになります。

さて、回答者はドアを変更すべきでしょうか?それとも留まるべき?

この問題、AとCの2枚のドアのうち1つが当たりなので、変えても留まっても当たる確率は半々(1/2)のように思えます。しかしこの問題の答は「変えたほうが良い」です。留まる(Aのまま)だと当たる確率は1/3、変えると(Cに変更)当たる確率は2/3になります。

なぜ、そうなるかについては、ベイズの定理を使って、数々のネットの情報や本で説明されています。拙著「ゼミナールゲーム理論入門」でも「一歩ずつ学ぶ ゲーム理論」でも、もちろん解説されています。

「お、じゃあネットで検索してみようか!」と思ったあなた!ちょっと待ってください。この問題に対して「直感的に説明すると...」とした説明には、間違っていることが結構あります。本稿の意図は「直感的な説明は間違っていることが多いので、ベイズの定理で理解しましょう」ということなんです。

特に「確率は変わらない」的な説明は、間違いです。例えば「最初に選んだドアが当たる確率は1/3、それ以外が当たる確率は2/3だから、ハズレのドアを開けた後も、最初に選んだドアの当たる確率は1/3で、それ以外が当たる確率は2/3」と言う説明は誤りです。正しい説明は「情報によって確率は変わる」です。

最初に各ドアの当たる確率が等しいと、この「確率は変わらない」という説明も(たまたま)正しいように見えるのですが、最初に当たりやすいドアと、当たりにくいドアがあると考えれば、この説明が正しくないことが分かります。

A,B,Cのドアがあり、どれか1つが当たりだとします。ただし、Aのドアは当たりやすく当たる確率は0.5、Bは当たりにくく当たる確率は0.2、Cは0.3であるとします。

回答者は最初に(当たりやすそうな)Aのドアを選んだとしましょう。

ここで司会者(解答を知っている)は、選んでないドアからハズレのドアを1つ開けます。Bのドアが当たりならCが開き、Cのドアが当たりならBが開きますね。さて、Aのドアが当たりの場合はBとCのどちらを開けても良いのですが、ここで司会者がBとCのドアを開ける確率は同じ1/2であるとします(ここを変えると答も変わります)。

さて、司会者がBのドアを開けて、ハズレであることを示したとします。回答者はドアを変えたほうが良いんでしょうか?

「最初にAのドアが当たる確率は0.5、それ以外は当たる確率は0.5、この確率は変わらない」という説明だとフィフティ・フィフティで、変えても変えなくとも確率は1/2のような気がします。

しかし、この場合はAのドアのままだと当たる確率は5/11、Bに変えると当たる確率は6/11です。この場合は、やはりドアを変えたほうが良いです。

A,B,Cのドアが当たる確率が、それぞれ0.54、0.13、0.33として同じ状況だとしましょう。司会者がドアを開ける前は「Aのドアが当たる確率は0.54、それ以外は当たる確率は0.46」です。司会者がBのドアを開けたとき、回答者はドアを変えたほうが良いのでしょうか?確率は変わらない」のならば「Aのドアが当たる確率は0.54」なので、変えないほうが良いですね。

しかしこの場合も「Aのドアのままだと当たる確率は0.45、Cに変えると当たる確率は0.55」になります。司会者がドアを開ける前は、Aを選んだ方が、それ以外のドアが当たる確率より高いにも関わらずです!

計算方法は、ベイズの定理を勉強してください。このように、この問題は「直感的な」理解はなかなか難しいのです。ネットの説明でも「情報によって確率は変わる」という回答を読むと良いでしょう。

認知科学や認知心理学では、なぜ人間はこの問題に対して正しい答が出せないのか、どのような点が間違いを引き起こすのかについて研究されています(いました)。興味にある方は、以下の本を参考にしてください。

市川 伸一 (著)、日本認知科学会 (編集)、確率の理解を探る―3囚人問題とその周辺 (認知科学モノグラフ 10) (1998)/5/1

ちなみに、若い頃、先輩の金融工学の大家KJ先生(川喜田二郎氏ではないよ)に「認知科学にこんな研究があります」と話したことがあります。そのときKJ先生曰く:

渡辺君。こんな研究は意味ないよ。
皆んながベイズの定理を正しく理解すれば良いだけだ!

…でした。直感的な理解ではなく、ベイズの定理で理解しましょう。

2023年第1回O Rセミナー 『エンジニアのためのゲーム理論-ビジネスへの応用とマーケットデザイン』

5月26日(金)に、私がオーガナイザーを務めさせて頂き、2023年第1回O Rセミナー 『エンジニアのためのゲーム理論-ビジネスへの応用とマーケットデザイン』をオンラインで開催致しました。

今回は(あの)東京大学マーケットデザインセンター長の小島武仁先生、慶応大学の松林伸夫先生と私でセミナーを行いました。


プログラム等の詳細はここにあります。

当日は50名余りの方にご参加いただきました。ありがとうございました。

朝日新聞「グリコじゃんけん」にコメント

朝日新聞の記事「グリコじゃんけん、いつからあった?」で、グリコじゃんけんの必勝法について、コメントしました。

本サイトのグリコ・チョコレート・パイナップルゲームのゲーム理論による解をもとに、記者さんから取材を受けたものです。

記事には、以下のデジタル版(2022年9月1日版)もありますが、有料会員しか読めないようです(^^;)
グリコじゃんけん、いつからあった?(朝日新聞)

「高校生のためのゲーム理論入門」の動画公開です

昨年(2021年)の10月に東京都立大学のオープンユニバーシティで講義した「高校生のためのゲーム理論入門」(高校生のための大学授業体験シリーズ)の動画が、東京都立大学のホームページ内でOCWとして公開されることになりました!

2021年度東京都立大学オープンユニバーシティ・高校生のための大学授業体験シリーズ 高校生のためのゲーム理論入門

他のゲーム理論講義動画とともにどうぞ

筑波大附属高校で「総合的な探究の時間」のお手伝い

筑波大学附属高校で「総合的な探究の時間」のお手伝いをしてきました。高校1年生の「数学的モデリング」をテーマにしたグループで、ゲーム理論の講演をしたり、彼らの研究に助言を与えたりしました。

講演の様子

生徒たちは、ゲーム理論を中心に、自分の興味がある研究テーマに取り組みます。微分も確率もほとんど習っていない高校1年生とは思えないほどの高度な研究に取り組んでいました。テーマの例を挙げると

  • 特殊ルール(手札のシャッフル)がある3人ババ抜きの戦略
  • 3人人狼の戦略とシミュレーション
  • ゲーム理論の観点からの交通渋滞の回避
  • LINEによる異性とのやり取りの戦略

です。また、特に高校生にとってはゲーム理論によるスポーツの戦略に興味があるようで

  • バスケットボールの戦略(3Pシュートと2Pシュートのどちらを打つべきか)
  • 野球の戦略(高校野球における初級ストライクを打つべきかどうか)
  • バレーボールの戦略(アタックはストレートかクロスか)
  • サッカーの戦略(ドリブルか、パスか)

などのテーマが多く見受けられました。

野球の戦略

スポーツの戦略と混合戦略については、いくつかの研究はあるものの、それを詳しく解説したものはありません。改めて、そのような解説を書いてみようかと思いました。

多くの学生のテーマに向き合い、短い時間でアドバイスを与える担当の山田先生は、本当に凄いなと思いました。学生たちの探求は、まだまだ続くようです。

プログラム更新履歴

更新履歴:ナッシュ均衡を計算するアプリ

(comp_nash1.html, input_bimatrix.py, comp_nash1.py)

  • ver.1 2022/01/03 公開
  • ver.1.1 2022/01/04 例外処理を追加:戦略数が2以上でないとエラーになる。利得行列に空欄があるとエラーになる(htmlのinputタグのrequired属性を設定)。途中で方程式が解けないとエラーになる(正則でないとか、退化しているとかのメッセージを出す。)。利得行列の初期値に0を入れておく(htmlのinputタグのvalueに0を設定)。
  • ver.1.2. 2022/01/06 絶対値が極端に大きい(1e10以上)数値や無限大(inf)の利得は受け付けない。利得行列にNaNがあるときに受け付けない例外処理。
  • ver.1.3. 2022/01/06 正則ではない利得行列への対応
  • ver.1.4. 2022/01/07 戦略数が10以上の場合のバグへの対応:行列Aのi行j列をaijという文字列でデータを受け取っていたが、a23だと2行3列となるが、a111だと1行11列なのか、11行1列なのk分からない、という問題が発生。aizjとzで区切ることにした。
  • ver.1.5 2022/01/13 2X2は受け付けないことにしました(試験や宿題で使われるのを防ぐため)。学生が宿題や試験に使うことを防ぐため2×2の行列は計算できなくなりました(2022.01.13)。 この本や この本や このページで勉強して下さい。また、入口となるページをhtmlで書いていましたが、すべてpyファイルにし、pythonで出力することにしました。最初に入り口としてリンクされたページ。http://nabenavi.net/ap/comp_nash1はなくなりましたが、twitter等で拡散していましたので、.htaccessにてリダイレクトするようにしました。
  • ver.1.6 2022/06/09 要請があり、宿題だと受け付けない処理をつけました。

NABENAVI.net 計算プロジェクト

戦略10以下の2人戦略形ゲームのナッシュ均衡を(混合戦略まで含めて)すべて計算するプログラムなど、趣味で作ったweb上の計算アプリケーションを提供しています。

GoogleアナリティクスGA4ではGTMを使わない?

  • Googleアナリティクスが、今までの「ユニバーサルアナリティクス(UA)」というもの(プロパティ)から「アナリティクス4(GA4)」というものに変わったみたい。
  • ユニバーサル アナリティクスでは、収集されたデータの基本単位は「ヒット」と呼ばれた。そして、ページビューとイベントという 2 つのヒットタイプがよく使用された。
  • このアナリティクスで「あるページから外部リンクが何回クリックされたか」など、いろいろなデータを計測するために「イベント」を自分で作成する必要があった
  • そして、イベントを作成するためには、これまで(UAで)はページに「タグ」と呼ばれるものを埋め込まなければならなかった。そのために、直接ページにタグを埋め込む方法と「Googleタグマネージャー(GTM)」と呼ばれるもので管理する方法と2つあった。
  • 多くのタグを管理するためにはGTMが便利であり、それを解説しているページが多い。
  • 一方、GA4ではイベントの概念が変わった。GA4ではデータの収集単位がイベントになった。ページビューもイベントの1つだ。
  • そしてイベントはタグを埋め込まなくても、アナリティクスで直接管理できるようなしくみが多く導入された。
  • したがってUA4から解析しているときは、GTMは必要ない?GTMで管理しているような記事は参照にしないほうが良い?
  • まだまだ、わからないことが多く勉強が必要?