おさかなメモ

間違っていることを書いているかもしれません.もし間違いを見つけましたらコメントで教えてください!

カフェインは私の人生を変えた

ふとした時に自分がいつもぼーっとしていることに気がついた。もしかしたら小さい頃からずっとそうだったのかもしれないし、気づかないうちに数年かけて徐々にそうなったのかもしれない。

講義とか講演とかを聞いているといつの間にか意識が飛んでいる。ちゃんと聞いたつもりでも終わって振り返ると内容をほぼ思い出せない。多分元々ADHD気質もあるのでそこが原因な気もする。 いつからかそれが続いて、大学院での研究も講義もうまくいかなくなり、若干鬱っぽい時期が1年ほど続いていた。

これがコーヒーによるカフェイン摂取でびっくりするくらい改善した。

具体的には思い出せないが、いつか苦手だったコーヒーを試しに飲んでみると、味はやはり好みではないがあらゆる物事に集中できることに気づいた。 研究もこれまでと見違えるように進んだ。

一般に人が集中したい時にコーヒーを飲むのを見ても気休め程度だろうと思ってコーヒーをあまり飲んでこなかったことを後悔した。

コーヒー等によるカフェイン摂取により個人的に感じる効果は2つ。

  1. 集中力の改善
  2. 疲労感の抑制

この「2. 疲労感の抑制」はあまり言われることはないけれど、「1. 集中力の改善」と同じくらい実生活においてはご利益がある。 私は旅行などの際はコーヒーを飲むようにしているが、明らかに疲労感を軽減してくれて、より楽しんでいろんなところを回ることができる。(体に良いかはかなり怪しいと思う。というか絶対あまり良くはない。)

本当に毎日コーヒーを飲むようになってから大袈裟でなくQOLが上がった。

もし同様の悩みがある方はお試しあれ。

selenium(-wire) の使い方

selenium-wireも基本的にはseleniumと同じだが,拡張されたものになっている.

selenium.webdriverがブラウザを操作する「webdriver」.これはlocal上でも動かせるし,remoteでも動かせる.dockerで動かす場合はremoteで動かすことになる. 例えば,localでchromeのdriverを用いるときは

from  selenium import webdriver
driver = webdriver.Chrome()

remoteの場合はこのページのdocker imageを用いてコンテナを起動しておく.また,driverの生成時にurlを指定する.

# 例
driver = webdriver.Remote("http://localhost:4444/wd/hub")

selenium.webdriver.common.keys.Keysはブラウザ上でReturnAltなどのキー操作するときに使う.

selenium.webdriver.common.by.Byはwebページのelementを指定するときに用いる.

注意点

ボタンclickなどで新しいtabが開いても,driverのactiveなtabにはならないので,明示的に切り替える必要がある. 良い実装かはわからないが,とりあえず

for handle in driver.window_handles:
    driver.switch_to.window(handle)

で切り替える事ができる.

selenium-wireseleniumに加えてresponceが保存されていて,http通信の内容が保存される.これを使うと通信したファイルを保存することなどが可能.

参考文献

selenium-python.readthedocs.io seleniumで読み込んだ画像をそのまま保存したい!! #Python - Qiita

サンプル数とサンプルサイズ

そもそも「サンプル」という言葉の定義が,「一つの母集団からの $n$ 個の観測値」である.

よって,「サンプル数」は,観測値が得られている母集団の数と等しい.「サンプルサイズ」は,1サンプルに含まれている観測値の数.

ランダムに選出された日本人100人分の身長のデータと,日本人50人分の体重のデータが得られているとする. この場合,サンプル数は2で,それぞれのサンプルサイズは100と50である

参考文献

鈴木, 武,山田, & 作太郎. 数理統計学: 基礎から学ぶデータ解析. 内田老鶴圃.

学位審査発表会

提案手法の基盤となる定理・技術は,詳細には触れない(→数式をあまり出さない). なぜそれを使うのか,なにが嬉しいのかを伝える.

その分,提案手法を伝えるのにスペースと時間を割く.

参考文献

2024年2月9日ゼミ後ミーティング

正規表現の基本

任意の文字に一致

  • .

場所を指定

  • 行頭にのみマッチ:^<パターン>
  • 行末にのみマッチ:<パターン>$

繰り返し

  • 0回以上の繰り返し:<パターン>*
  • 1回以下の繰り返し:<パターン>?
  • 1回以上:<パターン>+

いずれか(OR)

  • 文字列のパターン<パターン1>|<パターン2>
  • 文字のパターン[<文字バターン1><文字パターン2>]

パターンの直列連結

  • (<表現>)(<表現>)
    • 例:(私|あなた)は([猫犬])が好きですがマッチするのは
      • 私は猫が好きです
      • 私は犬が好きです
      • あなたは猫が好きです
      • あなたは犬が好きです

参考

サルにもわかる正規表現入門

汎化性能と過剰適合(バイアスとバリアンスのトレードオフ)

パラメータ数が大きすぎると過剰適合する

訓練誤差と汎化誤差

訓練データに対する誤差を「訓練誤差」,実際の推定における誤差を「汎化誤差」という.

汎化誤差は期待値であり,厳密な値を取得できないので,標本平均などで代用する.この際に用いるサンプル集合をテストデータといい,サンプルデータに対する誤差をテスト誤差という.このテスト誤差を汎化誤差の目安として利用する.

過剰適合(過学習

訓練にするつれて訓練誤差は単調に現象するが,汎化誤差は増加することもある.これを過剰適合(過学習)という.

過剰適合への対策

バリデーションデータを用いて過剰適合を評価する.バリデーションデータはテストデータとは別に,新たにデータを分割して作成する.このバリデーションデータを用いて早期終了などの判断やハイパラの調整などを行う.

かといって,パラーメータが小さすぎてもだめ

バイアスとバリアンスのトレードオフ

古典的には,モデルのパラメータ数について,バイアスとバリアンスのトレードオフがあると言われている.

つまり,パラメータが少なすぎると,モデルに十分な柔軟性がないの誤差を小さくしきれず,全体的なバイアスが生じる.

一方,パラメータが多すぎると,モデルが柔軟すぎてデータに対して過剰にフィットしてしまう.これはバイアスは小さいが学習データのバリアンスも学習してしまい,バリアンスが大きくなってしまう.

と思いきや,多ければ多いほどいいっぽい(?)

パラメータ数をとても多くすると,このバイアスと「バリアンスのトレードオフ」を乗り越えて,再度汎化誤差が低下することがあり,「二重降下 (double descent) 」と呼ばれる.

この原理についてはあまりわかっていないらしい.

参考文献

  1. 岡谷貴之. (2015). 深層学習= Deep learning (MLP 機械学習プロフェッショナルシリーズ). 講談社.