博士以前

人間です

2019年まとめ

昨年末に2019年の抱負なるものを書いていたようだ。要約すると

  • D論を頑張る
  • 就活をやる
  • 運動をする
  • 機械学習を勉強する
  • 自己愛を持たない

とのことらしい。これも踏まえて、2019年を振り返ってみたい。

predoc.hatenablog.com

研究

今年の前半は、昨年から進めていた研究をいくつか論文に出来た。面白いと思って時間をかけて進めてきた研究だったのできちんと形になって嬉しかった。 これらの研究に関しては何件かセミナー依頼も貰って、国内出張で色々な場所に行くことが出来て良い経験になった。

一方で今年後半はD論があることと、就職を決めてアカデミアでの業績を増やす必要がなくなったことから、新しいテーマに取り組む気概を失ってしまった。 国際会議も一つしか参加しなかったし、そこで交友を広げようという努力も怠ってしまった。これらは反省点である。

D論は10月から真剣に書き始め、無事期限内に提出することができた。審査はまだなので油断できない。 修論を書いている時もそうだったが、僕は重いタスクが入ると生活が規則正しくなるようだ。昼間から集中して仕事をして、夜には疲れて早く眠ってしまうからかもしれない。

あと数ヶ月で研究生活も終わってしまう。結局最後まで独力で研究プロジェクトを立ち上げて論文を書くということができなかった。その意味で、僕の学生生活は指導教官や様々な先輩方の助け無しには全くうまくいかなかっただろう。感謝である。進むフィールドは変わるけれど、僕も将来的には彼らのような役割を果たせるようになりたい。

就活

以前書いたように就職先を決めた。

predoc.hatenablog.com

反省点としては、いわゆる業界研究や自己分析みたいなのをもう少し真面目にやっておくべきだったというのと、給与その他の条件についての確認をしっかりやっておくべきだったというのがある(別に今の内定先に強い不満があるというわけではない)。 もちろんそういうことを全くやっていなかったわけではないが、粒度が粗すぎたと思う。将来おそらく何度か転職をすることになると思うが、その時にはもっと自分に有利な条件で立ち回れるようにしておきたい。

運動

今年前半は定期的にランニングが出来ていたけど、D論が忙しくなってから全然しなくなってしまった。反省している。

勉強

機械学習を勉強し始めた。良さそうな本を探すと結局英語になってしまう。その中でも今読んでいるこの本は理論と実践のバランスが取れていて非常に良い:

Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow: Concepts, Tools, and Techniques to Build Intelligent Systems

Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow: Concepts, Tools, and Techniques to Build Intelligent Systems

  • 作者:Aurélien Géron
  • 出版社/メーカー: O'Reilly Media
  • 発売日: 2019/10/15
  • メディア: ペーパーバック

Version 2 になり、後半のニューラルネットの章でTensorFlow2.0に対応するようになった。Data APIなども丁寧に説明されているので、単なるkeras の解説本などよりはるかに役立ちそう。 説明を読み、気になる部分を自分でも実装し、練習問題を解きながら進めている。最近はGoogle Colab のノートブックでGPUが使えたりするので良い時代だ。

趣味

今年は2019年ベスト10を挙げられるほど本を読めなかった。一冊あげるとすれば「月と六ペンス」が良かった。自分の人生に何を求めるかが大切なのだ。

音楽はApple Music を使っているが、最近Spotifyをお試しで始めてみた。レコメンドが強力な気がするので、新しい音楽を開拓するのに利用したい。

今年は夏の野音と冬の豊洲PITで二回、NUMBER GIRLを見た。生きていれば良いこともあるのだなと実感した瞬間だった。

その他

他人にどう思われるかを気にしすぎるのは絶対に良くないなと思った。

2020年の抱負

  • 無事学位を取って卒業する
  • プログラミングをちゃんと勉強する。
  • 運動を来年こそ継続する。
  • ワークライフバランスを意識する。
  • 周囲に流されず自分の主張をする。

今年一年お世話になった皆様、ありがとうございました。

夏の終わり

もうすぐ8月が終わる。まだまだ昼間は暑いが、今日の夕方は涼しい風が吹いて少しずつ秋が感じられるようにもなってきた。 ということで、今年の夏を振り返りたい。

C言語

唐突にプログラミングを勉強したくなった。いつもはPythonやJuliaのような高級言語を使っているが、Cのような低級の言語でプログラミングの基礎的な勉強をしてみたいと思ったからだ。 読んだ本は昔アマゾンで100円くらいで買ったこれ。

C言語プログラミング (Computer Science Textbook)

C言語プログラミング (Computer Science Textbook)

本文を読んで、気になった箇所を自分で再現しながら、面白そうな練習問題も解くという感じで進めた。Cは人のコードを微小変形するくらいならできるので、最初の方はスラスラ読めた。 この本で一番面白かったのは、12章のデータ構造の部分で、連結リストや binary tree のような構造をポインタを駆使して動的なオブジェクトとして作っていく。 普段 Python とかを使っていると全く気にしないが、メモリ上でどのように各要素が繋がって生成・消滅しているのかを意識できたのは面白かった。 まあ作るのが大変なので、やはり実際に使う場合はライブラリに頼るのだろうけど。

ライフログ

なんとなくの思いつきで毎日の記録をつけることにした。かしこまった日記のような形態にすると続かなそうなので、メモ用のWebサービスを使った。

scrapbox.io

研究のメモや技術的なメモをつけるのにも使ってみている。 ログを取ることで何かが変わるのかはわからないが、5年後くらいに見返してみたら面白いかもしれない。

音楽

ナンバーガールを見にわざわざ札幌まで行ったのに台風で中止になってしまってとても残念だった。 しかし二日後の野音のチケットもあったので、そうでない人たちに比べれば傷は浅い。 札幌では安くて良い岩盤浴があったので楽しかった。

ナンバーガール野音ライブは本当にすごかった。終演直後は放心状態で、日比谷公園のベンチから立ち上がれなかった。 今でもあの時の感情を言葉でうまく説明するのは難しい。でもそれで良いのだと思う。簡単に言葉で説明できるようなものなら、わざわざ音楽という形で摂取しなくても良いのだから。

これから

秋になるといよいよD論だなという感じになってくる。その前にもう一つ論文を書いておきたいのだが、自分がやる気を出さないと進まないのでどうなるかわからない。

最近お酒に弱くなった気がする。飲み会はお金もかかるので、自分で適切なラインをコントロールするようにしたい。

Spacemacs を設定した

最近なんとなく暇なので、spacemacs というエディタを使ってみようと思い色々設定していた。spacemacs は emacs をベースに vim の良いところを取り入れたエディタらしい。公式サイトには"The best editor is neither Emacs nor Vim, it's Emacs and Vim!"と書いてある。

僕は普段のエディタには emacs を使っているのだけど、最近は以下のようなことを思うようになっていた

  • 素の emacs は機能が貧弱なので、普通はパッケージをダウンロードして改造していくことになる。何か新しく追加したい時に、どのパッケージがイケてるのかを調べるのが面倒だった。

  • 強いエンジニアなら自分で調べて設定ファイルを書いていくのだろうけど、僕はこの手のことに関しては素人なので、世の中の多くの人が使っている機能が勝手に入る方が良かった。

  • vimの指の使い方を学んでみたかった。

以上のような理由から spacemacs をインストールして設定したのでメモを残しておく。なお使っているOSはMacだ。

設定ファイル(.spacemacs)は github に置いてある。

github.com

インストール

公式のgithubに書いてある通りに、まず emacs を入れその後 spacemacs を導入する。 こちらのブログにあるように、emacs のインストール時に spacemacs のアイコンを一緒に入れたり、あらかじめかっこいいフォントをダウンロードしておいたりすると後々良い感じになる。

ブランチ

上の手順でインストールすると、~/.emacs.dが git リポジトリになっているはずである。master ブランチは非常に遅れているのでgit checkout developしておくと良い(自己責任で)。 実際 master ブランチでは以下の設定が所々上手くいかなかった。

カスタマイズ

Spacemacs では pythonLaTeX のような個々の言語環境に対する設定はレイヤーという機能を通して行うことになる。 具体的には~/.spacemacsを編集することになる。このあたりも適当にググるか公式のドキュメントを読めばなんとなくわかろうだろう。 以下ではこの~/.spacemacsに行った変更について書く。

LaTeX環境

公式ドキュメントを参照する。 僕は今まで AUCTeX という emacs のパッケージを使って LaTeX 文書を書いていた。 Spacemacs の latex レイヤーを使うと、AUCTeX が使えるようになる。

LaTeX 文書に References があるときは何回もコンパイルする必要があるので、普通は LatexMk などで自動化すると思う。 僕は今まで emacs で使っていたコンパイル設定を、そのまま spacemacs に持ってきた。以下のようにdefun dotspacemacs/user-config ()を編集すれば良い。 だいたいTeX Wikiに書いてあった内容をコピペしているだけである。

(defun dotspacemacs/user-config ()
  "Configuration function for user code.
This function is called at the very end of Spacemacs initialization after
layers configuration.
This is the place where most of your configurations should be done. Unless it is
explicitly specified that a variable should be set before a package is loaded,
you should place your code here."
  (add-hook 'LaTeX-mode-hook
            '(lambda ()
               (setq TeX-command-default "Latexmk-pdfLaTeX")
               (setq japanese-TeX-command-default "Latexmk-upLaTeX-pdfdvi")
               (setq TeX-view-program-selection
                     '((output-dvi "Skim")
                       (output-pdf "Skim")))
               (setq TeX-view-program-list
                     '(("Skim" "/Applications/Skim.app/Contents/SharedSupport/displayline -b -g %n %s.pdf %b")))))
  (add-hook 'LaTeX-mode-hook
        (function (lambda ()
            (add-to-list 'TeX-command-list
                     '("Latexmk"
                       "latexmk %t"
                       TeX-run-TeX nil (latex-mode) :help "Run Latexmk"))
            (add-to-list 'TeX-command-list
                     '("Latexmk-upLaTeX-pdfdvi"
                       "latexmk -e '$latex=q/uplatex %%O %(file-line-error) %(extraopts) %S %(mode) %%S/' -e '$bibtex=q/upbibtex %%O %%B/' -e '$biber=q/biber %%O --bblencoding=utf8 -u -U --output_safechars %%B/' -e '$makeindex=q/upmendex %%O -o %%D %%S/' -e '$dvipdf=q/dvipdfmx %%O -o %%D %%S/' -norc  -pdfdvi %t"
                       TeX-run-TeX nil (latex-mode) :help "Run Latexmk-upLaTeX-pdfdvi"))
            (add-to-list 'TeX-command-list
                     '("Latexmk-upLaTeX-pdfps"
                       "latexmk -e '$latex=q/uplatex %%O %(file-line-error) %(extraopts) %S %(mode) %%S/' -e '$bibtex=q/upbibtex %%O %%B/' -e '$biber=q/biber %%O --bblencoding=utf8 -u -U --output_safechars %%B/' -e '$makeindex=q/upmendex %%O -o %%D %%S/' -e '$dvips=q/dvips %%O -z -f %%S | convbkmk -u > %%D/' -e '$ps2pdf=q/ps2pdf %%O %%S %%D/' -norc  -pdfps %t"
                       TeX-run-TeX nil (latex-mode) :help "Run Latexmk-upLaTeX-pdfps"))
            (add-to-list 'TeX-command-list
                     '("Latexmk-pdfLaTeX"
                       "latexmk -e '$pdflatex=q/pdflatex %%O %(file-line-error) %(extraopts) %S %(mode) %%S/' -e '$bibtex=q/bibtex %%O %%B/' -e '$biber=q/biber %%O --bblencoding=utf8 -u -U --output_safechars %%B/' -e '$makeindex=q/makeindex %%O -o %%D %%S/' '-synctex=1' -norc -pdf %t"
                       TeX-run-TeX nil (latex-mode) :help "Run Latexmk-pdfLaTeX"))
            (add-to-list 'TeX-command-list
                     '("Latexmk-LuaLaTeX"
                       "latexmk -e '$lualatex=q/lualatex %%O %(file-line-error) %(extraopts) %S %(mode) %%S/' -e '$bibtex=q/upbibtex %%O %%B/' -e '$biber=q/biber %%O --bblencoding=utf8 -u -U --output_safechars %%B/' -e '$makeindex=q/upmendex %%O -o %%D %%S/' -norc  -pdflua %t"
                       TeX-run-TeX nil (latex-mode) :help "Run Latexmk-LuaLaTeX"))
            (add-to-list 'TeX-command-list
                     '("Latexmk-LuaJITLaTeX"
                       "latexmk -e '$lualatex=q/luajitlatex %%O %(file-line-error) %(extraopts) %S %(mode) %%S/' -e '$bibtex=q/upbibtex %%O %%B/' -e '$biber=q/biber %%O --bblencoding=utf8 -u -U --output_safechars %%B/' -e '$makeindex=q/upmendex %%O -o %%D %%S/' -norc  -pdflua %t"
                       TeX-run-TeX nil (latex-mode) :help "Run Latexmk-LuaJITLaTeX"))
            (add-to-list 'TeX-command-list
                     '("Latexmk-XeLaTeX"
                       "latexmk -e '$xelatex=q/xelatex %%O %(file-line-error) %(extraopts) %S %(mode) %%S/' -e '$bibtex=q/upbibtex %%O %%B/' -e '$biber=q/biber %%O --bblencoding=utf8 -u -U --output_safechars %%B/' -e '$makeindex=q/upmendex %%O -o %%D %%S/' -norc  -pdfxe %t"
                       TeX-run-TeX nil (latex-mode) :help "Run Latexmk-XeLaTeX")))))

  )

これでC-c C-cと入力するとコマンドの選択肢が表示され、Latexmk-pdfLaTeXで pdflatex でコンパイルできる。終わったら再びC-c C-cと打ってViewを選ぶと PDF が表示される。

Julia環境

Spacemacs には Julia レイヤーも用意されている。公式のドキュメントを読んでその通りに設定すれば良い。

LSPの設定をするには Julia の LanguageServer.jl を入れる必要がある。これは Julia で通常通り ] add LanguageServerをすれば良い。 これで同時にSymbolServer.jlも入る。ただし現段階 (2019年7月23日) では、きちんと] update SymbolServerをしておかないと spacemacs を起動しても disconnected と表示され接続がキャンセルされてしまった。

なお公式のドキュメントには PackageCompiler.jl を使って、あらかじめLanguageServer.jlコンパイルしておかないと Spacemacs の起動が遅くなると書いてある。 しかしこのコンパイルがなぜか失敗するので、とりあえずコンパイルせずに使っているのだけど、今のところは起動が異様に遅いということにはなっていない。

2019年後半

2019年も半分が終わるので色々と軌道修正していきたいと思う。最重要課題はD論をちゃんと完成させることだけど、就職で言ってみればかなりのキャリアチェンジもするので、主にコンピュータサイエンスの初歩的な事柄も勉強したい。

  • 研究:やたらめったら共同研究を引き受けない。春先に複数の共同研究でハードなエンジニアリングを要求されて死んでしまった。今後はとにかくD論のテーマを掘ることに集中したい。

  • プログラミング:LeetCodeのTop Interview Questionsを解いてみるのがいいのかもしれないと思い始めた。

  • 機械学習:読みかけのPRMLをちゃんと読んで問題解く。積読状態のHands-On Machine Learning with Scikit-Learn and TensorFlow を読んで手を動かす。Kaggle の入門的なコースをやるのも良いかもしれない。あと機械学習ではないが、統計検定一級くらいは取っておきたい。

  • 生活:節制する。主に外食と飲み会を減らす。家計簿アプリの予算を適切に設定しきちんと守る。忙しくても週に一回は運動する。

就職について

就職先を決めたので就職活動を振り返ってみる。

企業で働くことを考えるようになったのは去年の今くらいだったと思う。研究はまあまあ面白かったし、この業界で最低限死なずに生き残っていくくらいなら出来るだろうとは思っていた。 一方で、自分の分野への興味を維持するのにエネルギーが必要になっている現状を認めないわけにもいかなかった。モチベーションを自分の純粋な興味関心から維持できないのに研究を続ける意味なんてあるのだろうかと考えるようになった。 加えて、アカデミックな世界の厳しいジョブマーケット事情もあった。海外で何年もポスドクをしているけど日本に帰ってこれないという人(それも僕なんかより全然頭が良い)をこれまで少なくない数見てきて、自分が同じような境遇でやっていけるだろうかと考えるとそれも厳しかった(僕は日本の、特に東京での暮らしが好きだ)。

そんなこともあって去年の夏〜秋頃にインターンに参加した。業界としてはいわゆるデータサイエンスや機械学習をやっている会社が親和性が高そうだと思っていて、その中でも業務として面白そうだと思ったところで少しの間働いてみた。 最初は全くやったことのない分野で苦労したけど、教科書や論文を読んで実際に手を動かすうちに段々と慣れていくことができ、思ったよりも楽しい経験ができたので、企業で働くのも悪くないなと思うようになった。この辺りから明確にアカデミアには残らず、就職をしようという意識になったように記憶している。それからインターン先の企業の一つに早々に内定を貰ったので、とりあえずこのまま何もやらなくても食いっぱぐれないという気持ちになったのは、後々就活をする上で大きかった。

経団連という謎の組織のルールがどうなっているかは知らないが、年末から2月くらいまでに合同説明会や気になる企業の説明会に参加し、3月に何回か面接をした。と言ってもすでに内定があり、本当に興味のある企業に絞ることができたのでスケジュール的にはとても楽だった。そんな感じだったので時々しかスーツを着なくて、毎回ネクタイの締め方をググったりしていた。最終的に4月頭には内定が出揃って、インターンに行った企業も含めて最終的な進路を決めねばならなくなった。

しかし、ここで今までまともに将来のことを考えてこなかったツケが回ってきた。どこに就職したいのか自分でもよくわからなくなってしまったのである。 これはインターンで早々に内定が出たことも関係していて、安心感から他の企業の詳しい業務について深く調べていなかったし、人に聞いたりもしていなかった。 朝起きたらA社の方が良いなと思っていたのに、帰宅するとB社で働きたいなと心変わりするような日もあった。 そこで何人かの先輩に連絡を取って相談したり、飲みながら社会人の友達と話したりした。自分のキャリアなるものに対して初めて思いを巡らせたりもした。 それでもまあ先日ようやく決心して内定を受け入れる会社を決めたのだけど、最終的な決め手は結局のところ「この人達と働きたい」というものだった。

人と話すと「やっぱり働きたくないでござる」みたいなことを言ってしまうけど、これまでずっといたアカデミアの世界から外に出て新しい人と関わるのは純粋に楽しみというのはある。 それに仕事内容もどうせやるなら面白いことをしたいと思って選んでいるし、楽しんでできれば何よりである。 もちろん研究だって本当に楽しいのは全体の5%くらいなので、仕事だって似たようなものだろうけれど。 研究をしていて一番面白いのは、対象について自分なりに深く潜って考えて、そこから戻ってくる時に他の人には見つけられなかった何かを持ち帰ることができた時だ。 やることは変わっても、これからもそういう体験ができれば良いなと思っている。

Gaussian quadrature で遊んでみた

はじめに

最近そこそこ大変な多重積分が必要になり Gaussian quadrature という数値積分法の威力を知りました。日本語で書かれた記事は専門的なものしかなさそうなので、概要をメモしておこうと思います。 なお数学的な厳密さは考慮していないですが、許してください。

基本的な定理

Gaussian quadrature というのは、積分  \int_a^b dx\, f(x) を、被積分関数  f(x) の重み付き和によって近似する手法です。 これの基盤になっているのは多項式積分に関する次の定理です。

 h(x)積分したい 2n-1 次の多項式とする。積分区間 ( [-1,1], [0,\infty]など) 上の、関数  \omega(x) についての直交多項式 p_n(x) とする。つまり  p_n(x)

 \displaystyle{\int_a^b dx\, \omega(x) p_n(x)p_m(x) \propto \delta_{n,m}}

を満たす多項式とする。ただし  n, m多項式の次数を表す。この時次の式が厳密に成立する:

 \displaystyle{\int_a^b dx\, \omega (x) h(x) = \sum_{i=1}^n w_i h(x_i)}

ここで  x_i p_n(x_i)=0 を満たす n 個の点 (ノードと呼ばれる) で、  w_i は各ノードに対応したウェイトと呼ばれる量である。

証明とウェイトの具体的な形は、英語版のウィキペディアに書いてあります。

Gaussian quadrature - Wikipedia

この定理のおかげで、多項式で良く近似できる関数  f(x) については積分が重み付きの和

 \displaystyle{\int_a^b dx\,\omega(x) f(x) \simeq \sum_{i=1}^n w_i f(x_i)}

によって近似できることがわかります。なお考える直交多項式によって、呼び方が微妙に変わります。 例えば  [-1,1] で直交多項式としてルジャンドル多項式を使うときは Gauss–Legendre quadrature と呼ばれ、 [0, \infty] 上でラゲール多項式を使うときは Gauss–Laguerre quadrature と呼ばれたりします。

具体例

具体的に次の3重積分を考えてみましょう*1:

\begin{aligned}
 I &= \int_0^\infty dx \int_{-\infty}^\infty dx_1 \int_{-\infty}^\infty dx_2\, x^3 f(x_1)f(x_2)f(x-x_1-x_2)\,,\\
 &\text{where}\, f(x) = \frac{1}{e^x+1}
\end{aligned}

これを Gauss–Laguerre quadrature で計算するために次のように書き換えます:

\begin{aligned}
 I &= \int_0^\infty dx \int_{0}^\infty dx_1 \int_{0}^\infty dx_2\, \sum_{j_1=\pm 1}\sum_{j_2=\pm 1} x^3 f(j_1x_1)f(j_2x_2)f(x-j_1x_1-j_2x_2)\,,\\
   &= \int_0^\infty dx \omega(x)\int_{0}^\infty dx_1\omega(x_1) \int_{0}^\infty dx_2\omega(x_2)\, 
e^{x+x_1+x_2}
\sum_{j_1=\pm 1}\sum_{j_2=\pm 1} x^3 f(j_1x_1)f(j_2x_2)f(x-j_1x_1-j_2x_2)\,,
\end{aligned}

ここで \omega(x) = e^{-x} としました。この \omega(x) [0,\infty] に対してはラゲール多項式が直交多項式になります。

あとは適当な次数のラゲール多項式を持ってきて、そのノードとウェイトを計算し、公式に当てはめれば積分計算ができます。 ノードとウェイトの計算は次数が上がるほど大変になるのですが、世の中には色々なパッケージが存在するのでありがたく使わせてもらいましょう。

解析解

なお、実はこの積分は解析的に実行することができます;

\begin{aligned}
 I = \frac{457 \pi^6}{5040} = 87.1735836238\dots
\end{aligned}

数値積分

実際に Gauss–Laguerre quadrature を使って上の解析表式を数値的に再現してみます。

コード

以下では Julia の FastGaussQuadrature モジュールを使って計算します。 試しに1次から20次までの quadrature を実行して、結果を比べてみます。

GitHub - ajt60gaibb/FastGaussQuadrature.jl: Gauss quadrature nodes and weights in Julia.

using FastGaussQuadrature

f(x) = 1.0/(exp(x)+1.0)

function integrand(x1, x2, x)
    integrand_tmp = 0.0
    for j1=[-1,1], j2=[-1,1]
        integrand_tmp += x^3 * f(j1*x1) * f(j2*x2) * f(x - j1*x1 - j2*x2)
    end
    return integrand_tmp
end

function main()
    for n in 1:20
        integ_tmp = 0.0
        nodes, weights = gausslaguerre(n)
        
        for i1=1:n, i2=1:n, i=1:n
            x1=nodes[i1]
            x2=nodes[i2]
            x=nodes[i]
            integ_tmp += weights[i1]*weights[i2]*weights[i] * exp(x1+x2+x) * integrand(x1, x2, x)
        end
        
        println("n=", n, ", I=", integ_tmp)
    end
end

main()

実行結果

n=1, I=3.695294445091779
n=2, I=61.88325249650755
n=3, I=87.32157370172439
n=4, I=87.35456973636666
n=5, I=87.22502771278617
n=6, I=87.19838277730469
n=7, I=87.1816826909689
n=8, I=87.1739737777013
n=9, I=87.17318617155999
n=10, I=87.17367651240122
n=11, I=87.17389771350166
n=12, I=87.17387417770796
n=13, I=87.17377359537485
n=14, I=87.17368240366083
n=15, I=87.17362525065808
n=16, I=87.17359768692653
n=17, I=87.17358772170228
n=18, I=87.17358557612305
n=19, I=87.1735857713404
n=20, I=87.17358607174498

20次のラゲール多項式を使うことで7桁の精度で積分値が合うことが確かめられました。 3桁程度の精度でよければ、たった n=5 の計算でも十分なことがわかります。 さらに多重の積分になった時には、台形公式を使うよりずっと効率的であろうと予測できます。*2

まとめ

まあ FORTRAN の QUADPACK やそのラッパーを使えばよいという話だけど、中身をなんとなく理解しておくのは重要だと思います。

*1:見る人が見たらわかるかもしれませんが、これは一応物理的なモチベーションがある式です

*2:本当は台形公式でもやって計算時間を比較したかった

2018年まとめ

研究

今年は論文を二本書いた。国際会議は三つ参加した。 正直D2で論文二本は少ないと思うが質はまあまあ良かったと思う。

国際会議ではヨーロッパでいろいろ遊べたのでとても充実していた。 フランスのスポーツバーでビールを飲みながら見たW杯や、スペインで毎晩バルを巡って飲んだサングリアの味はこれからも忘れられないと思う。

秋以降は就職のことを考え始めたりして研究に身が入らない時期が断続的に訪れたので、生産性が下がってしまった。反省している。 まあもともと大したものを生産しているわけではないが。

大学院に入ってもうすぐ四年だけど、未だに研究をするというのがどういうことなのかよくわからない。自分の仕事に必要な論文の調べ方とか、計算のテクニックとか、図の見せ方とかそういう技術的なことはそれなりに少しずつ身についてきたようには思う。 しかし肝心の、研究の始め方というのがまだよくわかっていない。自分がなんとなくやりたいと思っていることから、具体的な仕事になるテーマを引っ張り出すというのがまだできない。 卒業までに一つくらい自分のネタで論文を書きたいな。

就活

夏にいくつかインターンに行った。特に二週間ちゃんと給料をもらって働いたところでは色々よくしていただいて、企業で働くのもまあ悪くないかなと思えるようになった。

機械学習をするというので、とりあえずディープしか聞いたことがない僕は Chainer のドキュメントを読んだりしてから参加したのだが、結局使わなかった。代わりにインターンでは主にベイズ学習を利用して仕事をしていた。僕としてはこれがかえって良かった気がしていて、機械学習という分野の広さを知るきっかけになった。

そろそろエントリーが始まるわけだけど、自分が面白いと思えて、給料がまあまあ良くて都内勤務の会社で働きたい。私服勤務で裁量労働制ならなお良い。

僕はなんだかんだでまだ学生なので、これからまだ人生がガラッと変えられるのではないかという期待がある。特に就職して環境が変われば、何か新しいことが始まるのではないかと思ってしまう。 だから、もしそこに進んで何も変わらなかったらと考えるととても怖い。同じようなことは『宇宙よりも遠い場所』でも言っていたけど。

趣味

Vtuber

ミーハーかもしれないが、僕にとって今年は Vtuber の年だった。 毎日 Siro Channel を見て、 毎日生きる元気をもらっていた。去年まで電脳少女シロちゃんなしでどうやって生きてきたのか思い出せない。 電脳少女シロちゃん本当に可愛くてクレイジーで最高なので見てください。 某後輩系 Vtuber と違って、事務所がちゃんと出演者たちを大事にしていそうなのも安心できる。 神回を紹介しようと思ったが、全部神回なので選べなかった。

www.youtube.com

読書

あまりたくさん本を読んだわけではないが、今年初めて読んだケン・リュウにはまってしまった。 特に『Good Hunting』という短編が本当に素晴らしい。大げさでなく、人生で読んだ中で1番の短編小説だと思った。 幻想的なスチームパンクで、映像作品にしたら絶対映えるだろうなという描写の数々で、しかし短編なので話が重くなりすぎないのが良い。

The Paper Menagerie

The Paper Menagerie

音楽

Apple Music に再加入した。新しい音楽もそうだけど、少し昔の曲がたくさんあるのが良い。もっと以前に触れておくべきだったけど機会を逃してしまったような音楽を色々聴いた。 くるりとか実はあんまり聞いていなくて、Apple Music で初めて色々アルバムを聴いた。THE WORLD IS MINE が好き。

ゲーム

FGOやめたい。第二部早く完結してくれ…

人間関係

色々うまくいったりいかなかったり、どうしようもないときはなんとかやり過ごしたり、そういう一年だった。

2019年の抱負

D論

ついにD論と向き合わなければならない。とりあえず今やっている仕事をちゃんと完成させれば、それのコピペで行けるはずなので頑張る。

就活をちゃんとやる

ベンチャー系は一つ内定があるので、大企業をいくつか見て自分の適性とか色々考えたい。もちろんオファーをもらえればの話だけど。

運動をする

出張続きで生活リズムが崩れると、定期的な運動をサボってしまう。2019年は強い意志を持って臨みたい

機械学習の勉強をする

手を動かしたいのでKaggle をやるのも良いかと思ったが、ああいう答えがほぼ決まってるような問題はどうもやる気が起きない。うまい勉強方法を考えたい。

生き方

自己愛みたいなのをもっと持たずに生きていきたい。

まとめ

2018年お世話になった方々ありがとうございました。来年もよろしくお願い申し上げます。