はじめに 5月の記事で拡散モデルに関する覚書を書いて以降、地道にこの辺りのプログラムを書いたりして理解を深めている。 拡散モデルの論文だったりを見ていると、計量経済学というのか統計学というのか分からないが、data generating processを拡散モデルが表現できるのか?というところについてはあまり論点になっていないように思う。例えば$y=0.1 + 1.5x + \epsilon$(ここで$\epsilon$は標準正規分布に従うとする)というデータ生成プロセスに従う確率変数があったときに、この$0.1+1.5x$を再現できるのか?ということが気になっている。 一方で既存の研究は画像生成タスクが中心であったり、テーブルデータでもデータ生成プロセスのことを意識していない(1変数のみ)ものが多い。 そこで試験的に今回はこうしたデータ生成プロセスが再現できるのか?に取り組んで見たいと思う。 と言いつつ、どうやって既存のモデルに載せるかというところも結構難しいポイントなので、まずはモデルに食わせるためのデータを作ろうと思う。 学習に使うデータを作るのだ じゃあどういったデータなら面白いのかな?と思ったときに、表現できると嬉しいものはやはりパネルデータの構造だろうと思う。 そこでまずはDIDで効果が測定できるような状況を再現できるのかやってみる。 具体的には下記が要件 一定人数をランダムに処置群に割り振る 処置効果は特定の時点以降とする 個人効果、時間トレンドが存在する データ生成過程は適当に決める 今後モデルに食わせるところも含めて作業したいので、ここではpytorchを利用したデータセットとして定義していきたいと思う。 具体的な実装 class DID_Dataset(Dataset): def __init__(self, num_ind, num_period, treatment_period, treatment_effect, time_trend=0.01, random_state=12, mode = 'train'): self.num_ind = num_ind self.num_period = num_period self.treatment_period = treatment_period self.treatment_effect = treatment_effect self.time_trend = time_trend self.random_state = random_state self.rg =np.random.RandomState(self.random_state) self.mode = mode self.ind_list = [i for i in range(self.num_ind)] self.period_list = [i for i in range(self.
Read more30歳に向けて身だしなみのレベル感を変えようと思って、眉毛サロンに行ったら結構良かったので、まとめておこうと思う。 きっかけ 今年の9月で28歳ということで良くも悪くも30代が目前になってきた。 20代であまり身だしなみという意味でのアップデートがなかった気がするが、30代はちょっと状況が変わってくるかな〜と思っている。 全体像をまとめてはないものの、最近良く思うこととして、30代以降の男性結構な比率でおでこ出す髪型になってないですか? 服装なりの問題は別にあるものの、髪型の変化は避けられない気がしてきた。そうなってくると気になるのは今までセルフで誤魔化していた眉毛の形である。 人間なので左右で眉の形が違っているのだが、生来の不器用さ故に左右バランスを整えられていなかった。 おでこを出すとなると眉が明確に見える様になるので、ここは整えて清潔感を出したい。 そう思ったとくぷは善は急げ!とばかりに眉毛サロンにを探したのである… 眉毛サロンどこいけばいいの? 行くぜ眉毛サロン!と思ったとくぷはまず眉毛サロン メンズで検索してみた。 するとマジでメンズ向けサロンの名前が怪しい感じがしてここに行く気は起きないぞ…となった イケメンとか男とか書いてある。気になった人は調べてほしい 困ったとくぷはひらめいた。あ、レディースメインでも男性行けないかな?と。 そこで眉毛サロン おすすめと検索してみたところ、ヒットしたのがアナスタシア ミアレである。 明らかにメイン客層は女性だが、調べていると男性も行っている人がいるということだった。明らかに名前の安心度が違う…助かった…と思い、サロンを決定した。 かなりエイヤという感じだが、検索したらこの気持ちがわかると思う。 予約できへんやん問題 さて安心したので、お店の予約を取ろう!ホットペッパービューティーや!と思ったところ、まさかのトラップ。全然空いていないのである。 まじで1ヶ月先ぐらいしか予約できそうなスケジュールが見つからない。しかもそれ以降はwebでは予約できない。 どうしたもんかいのーと思ったものの、とりあえず電話予約ができるらしいので、電話で予約してみた。スケジュール調整が結構面倒だったもののなんとか、1ヶ月以内で予約ができたので、そのまま予約。 美眉への道は遠いのである。 施術 そうこうしているうちに当日を迎えた。 施術は次の様なフローで行われた。 骨格診断 希望ヒアリング 提案 ワックス脱毛 ティザー(毛抜) 保湿 鼻のワックス脱毛(初回無料だった) まず骨格ベースに、どのような形の眉が似合うかをチェックしてくれた。その後ヒアリングがあったものの、正直あまり希望はなかったので、よしなにやってもらった。 実際に眉毛の手入れとしてはまずワックスでの脱毛である。これが結構痛い。特に眉尻のあたりは皮膚が薄いのかびっくりする。眉尻は特に痛いらしく、事前情報をあえて渡さないでワックス脱毛するプロの技を感じた。 その後は細かい調整を毛抜で行う。ワックス脱毛をすると肌に赤みが出るらしく、最後にそれを冷やしつつ、初回無料の鼻の脱毛と保湿をやってもらった。 余談だが、鼻の脱毛は古い角質が取れるらしく、肌のトーンが明るくなった気がする。 振り返り 予約するまではすげーかかるなと思ったものの、やってもらったところ、横から見たときの眉がスッキリしておでこを出したときの清潔感がました気がする。 最後に左右の眉の特徴、手入れのアドバイスをまとめたアドバイスシートを貰える。 ちょっと意外だったのはとくぷの場合はカットはいらないらしい。今まではカットもしていたので、ちょっと驚きだった。 眉毛の生える周期は1ヶ月ちょっとらしく、3ヶ月程度脱毛を行うと不要な部分が生えにくくなるらしい。ほんとか?と思いつつ、今回の形は違和感がないので、生えにくくなることを期待してしばらく通ってみることにする。
因果推論入門〜ミックステープ:基礎から現代的アプローチまでを翻訳者の1人である、冨田燿志さんからご恵贈いただきました。 本書は因果推論の分野における新しいデファクトスタンダードとも呼べるCausal Inference The Mixtapeの翻訳本になります。以下本書のことをミックステープと呼びたいと思います。 この記事ではこの本のレビューとして特徴や対象読者層、これまでに出版された因果推論に関する著名な本との簡単な比較をしてみたいと思います。 なおconflict of interestとして翻訳者には大学院時代に接点があった方が何名かいらっしゃることをお断りしておきます。 1. 本書の特徴 様々な状況における因果効果を推定するための手法について理論面・実証面・実装面の全てをカバーしているところが本書の最大の特徴でしょう。 いわゆる計量経済学を学んだあと、現代の実証分析において因果推論に関する理論は避けて通れないでしょう。 このときほとんどの人は次のようなプロセスで勉強していくと思います。 ポテンシャルアウトカムに基づく、処置効果の定義やその推定に関する理論の勉強 例えばAngrist and Pischke(2009)などを読んでいくことになる。 いわゆるエコノメの知識を別方向から解釈し直していくイメージ 実証分析をしている論文を読んでいく どのように理論を使うのか、適切性をディフェンスするかを学ぶ RAや自分の研究で実際に分析してみる 実際にデータの加工や実装を行って、これまで学んだことをアウトプット これまでの多くの本はこの理論の勉強のためにはなりますが、それ以降は実際の論文を読んだり、自分の研究を行ったりして身につける部分が多かったと思います。 この状況は専門分野が実証系でない学生が新しく実証分析を行うときの障害になりますし、実証系が専門の学生にとっても理論を適切に運用するためには長い時間がかかると思います。 ミックステープは理論面をカバーしているだけではなく、実際に出版された論文をもとにどのように理論を運用するかを解説していますし、その分析の実装についてもRプログラムを提供しています。1 したがってミックステープは因果推論をベースにした研究を行うまでの高速道路として役立つと思われます。 2. カバーするトピック 理論・実証・実装のすべてをカバーしているにも関わらず、本書でカバーしているトピックは非常に広範囲になっています。特に経済学でよく扱われている分野だけでなく、他分野においてよく利用される内容についてもカバーされています。 詳細は出版社のサイトに譲りますが、本書のカバー範囲は以下の通りです。 確率・回帰分析の基礎 DAG RCT マッチング・傾向スコア RDD IV パネルデータ DID 合成コントロール 個人的にはDIDと合成コントロールに関する章が特に有益だと思います。 処置タイミングが異なる状況におけるDID(Staggered DID)は多くの分野で利用されている研究デザインですが、私の知る限り教科書にはいままで記載がなかったトピックであり、非常に有用だと思います。 このトピックはGoodman and Bacon(2019)以降非常に研究が進んでおり、過去大学院で学んだ人も知識のアップデートが必須になってきています。 合成コントロールについても、Atheyらが非常に重要な研究デザインであることを指摘していますが、これまであまりカバーされませんでした。 合成コントロールから更に多くの研究が進展しており、実証分析をする上で学んで損のないトピックだと思います。 4. まとめ 世の中の因果推論への関心はますます高まっているなか、非常によい本が出版されたと思いました。 計量経済学の観点からみた因果推論に関する本はこれまでも例えば、Angrist and Pischke(2009)や本書の訳者の1人であるサイバーエージェントの安井さんの効果検証入門(2020)といった良書が出版されてきています。 それらと並びミックステープもこの分野のデファクトスタンダードとなると思います。 翻訳をされた皆さんに拍手をおくりたいと思います。 最後に類書との比較をしてみたいと思います。 レビュー読む人、これが一番うれしくない? それぞれ特徴はありますが、難易度としては以下の様になるのかなと思います。 入門: 効果検証入門 実装についてもフォローがありミックステープと思想が近いと感じる。 著者もコメントしているが、詳細な理論などは載っていないので、入門としての意識が強い 因果推論に取り組みたい人がまず読む本 中級: ミックステープ 効果検証入門と比較して、理論面や様々な研究についての解説が充実 そもそもページ数の違いや狙いが違うので、効果検証入門が悪いわけではない。 研究をしていきたい人やビジネスでの効果検証を更にレベルアップしたい人向け 上級: Mostly Harmless Econometrics ミックステープに比べるとより理論的な本。実装に関しては対象外 思い出補正があるきがしますが、結構読むのは大変だった記憶が。 正直正確に理解しているか?と聞かれるとうっ…となる… 個人的には効果検証入門→ミックステープという形で因果推論を学んで実践していくのが良いんじゃないかなと思ってます。 僕も学びなおします!
Read more1. はじめに 2020年にDiffusion Modelに関する論文が発表されて以降、生成モデルの研究が進展している。 2021年以降はこのDiffusion Modelをベースとした画像生成AIサービスがリリースされて世間からの注目を集めている。 DALL·E2 Midjourney Stable Diffusion 2023年5月現在生成モデルとして最も注目を集めているのは大規模言語モデル(例: OpenAIのGPT-4)であるが、Diffusion Modelは主に画像生成の文脈で利用されており、モデルのスコープが異なることに注意されたい。 最近のバズワードの大規模言語モデルではないが、生成モデルという枠組みの中では非常に重要かつモデル構造も面白いので、今回はDiffusion Modelを取り扱っていきたい。 TransformerベースにGPTモデルファミリーまで一気に論文読む&実装する会も将来的に扱うつもり。 2. Diffusion Model 早わかり Diffusion Modelは生成モデルの1種であり、forward processとreverse processの2つの確率過程から構成される。 平たく言えば下記の図のようになる。 forward processは画像に僅かなノイズを少しずつ加えるプロセスを示している。 reverse processはノイズになったデータから徐々に元の画像に復元するプロセスを示している。 このreverse processをモデル化してデータから学習する 実際に学習したモデルを用いて、画像生成する場合には何らかのノイズをモデルに与えて、reverse processを経由することで、画像が生成される。Ho et al.(2020)は下記のような生成結果を提示している。 なお、最近の研究ではテキストを入力すると対応する画像が生成されるモデルも存在している。 例: OpenAIのGLIDE このような生成は条件付き生成と呼ばれ、実務上求められるのはこちらの生成方法だろう。 なぜこのようなシンプルな構造でうまくいくのか?については現在も明確な答えはないが、最もシンプルな仮説は下記である。 reverse processが多くの確率層からなる深いネットワークであることが複雑な画像生成を実現している 初期の画像処理モデルも層を深くすることが出来る様になってブレイクスルーが起きた(例: ResNet) 生成プロセス(reverse process)のみをモデル化している VAEは生成モデルと認識モデルを同時に学習 GANは生成モデルと認識モデルを交互に学習 それでは以降では具体的なモデルの中身を見ていきたい。 3. Diffusion Model モデル詳細 本章では岡野原(2023)に基づいてDiffusion Modelの全体像・学習・推論を見ていく。 余談: Ho et al.(2020)を見ていってもよいが、いきなりこれを見ると挫折する。やや遠回りに見えるがLuo et al.(2022)から読み進めていくことを勧める。 3.1 全体像 2で述べたようにDiffusion Modelはforward processとreverse processから構成される。 forward process forward processはもともとのデータ $\bold{x}_0$ から徐々にデータの情報を減らしてノイズを加えた、ノイズ付与データの系列 $\bold{x}_1, \cdots, \bold{x}_T$を得るマルコフプロセスである。
Read more諸々の関係でやったことは公開にしたほうがいいよ!というアドバイスを受けたのでブログを再開しようと思う。 手始めに2年前に作って放置していたブログ設定の手直しを… 1. やりたいこと ギークに見えるブログを作りたい! 2. 要件 ミーハーだからどうせブログやるならGitHub Pagesを使いたい! 体裁は整えたくない! buildとか自分でやってたらオペミスする! 当然環境もつらい! 3. 実現するツール 要件1: GitHub Pages リポジトリからビルドしてサイトを公開出来る静的サイトホスティングサービス 要件1に対応 要件2: hugo 体裁を自分でやらずにいい感じにしてくれる静的サイトジェネレータ (実は研修課題とかで触ってたし多少知ってる) 要件3: GitHub Actions ビルドとかテストとかをgithub上のイベントをトリガーに自動的に実行してくれるツール (CI/CDの違いはよくわかってない) 要件3.1: docker 説明不要のコンテナ型仮想環境提供するツール 4. ブログ投稿の手順 ブランチを切る リポジトリ直下でmake postをターミナル上で実行 新しく投稿するネタを入れるマークダウンが/src/content/blog/yyyymmdd.mdとして生成される。 好きなことを書く このときmake serve_localをターミナル上で叩く localhost:1313にアクセスすることで、中身のチェックが可能 コミット&プッシュ プルリクエストを投げる 実際にブログが更新される 5. どう技術が使われているか? 上のフローは裏側の技術がどう使われているかは書いていないので具体的にはmakeとプルリク・ブログ更新の裏側について補足する makeコマンドの裏側 ここでdockerとHugoを利用している。 klakegg/hugoというHugoを含んだイメージを利用してすべてそのコンテナで動作させる。 下記の様なMakefileでdocker上でHugoの処理をお願いするキーワード設定。 CURRNET_DIR := $(shell pwd) # Hugo HUGO_VER := 0.101.0 HUGO_IMG := klakegg/hugo:$(HUGO_VER) HUGO_CMD := docker run --rm -it \ -v $(CURRNET_DIR):/src \ $(HUGO_IMG) build: $(HUGO_CMD) serve_local: docker run --rm -it \ -p 1313:1313 \ -v $(CURRNET_DIR):/src \ $(HUGO_IMG) server -D post: @yyyymmdd="$$(date +%Y%m%d)"; \ $(HUGO_CMD) new blog/$${year}/$${month}/$${yyyymmdd}.
Read more