2022年9月

ログ一覧

09月30日(金)

湯川さん来訪。久しぶりにがっつり研究の話をした気がする。

今週の1on1で、M2は全員、修士論文リポジトリをGitHubに作って、僕をコラボレータにした。

09月29日(木)

午前中はなんか重要そうな会議。

午後から個別ミーティング4件、研究室ミーティング、輪講。

秋学期安全教育を実施した。名簿も提出。

査読一つ済ませた。

09月28日(水)

ずっとRBMの講義ばかりみてたから、YouTubeがRBMの講義をsuggestするようになった。

これよさそうだな。っていうか、日本語の情報、ほとんどないなぁ。

物理情報工学ソフトウェア開発演習の準備、たぶん終わった。

懇親会のお仕事。

Zoomで学生さんとミーティングしてると、学生さんと自分の顔色の違いが気になる。学生さん、若いもんなぁ・・・

Windowsのアップデート。WSLも更新したっぽい。PowerShellから

wsl --update

で更新完了。

09月27日(火)

今日やるべきことリスト

プログラミング基礎同演習の課題をPDF化するスクリプトがエラー。

$ pandoc assignment.md -s -o assignment.pdf --highlight-style tango --latex-engine=lualatex -V documentclass=ltjarticle -V geometry:margin=1in -H ../mytemplate.tex
                        --latex-engine has been removed.  Use --pdf-engine instead.
                        Try pandoc --help for more information.

--latex-engineが消えている。--pdf-engineを使えとのことなので、Makefileを修正。そこだけ修正してなんとかなった。GitHubリポジトリのスライドが古かったので講義で使っているスライドに修正。

pptxからpdfにするのが鬱陶しかったので、スクリプトから変換できないか確認。

python3 -m venv myenv
                        python3 -m pip install --upgrade pip
                        python3 -m pip install aspose.slides

あー、今気づいたけど、仮想環境作ってるのにactivate忘れてる。そして、pipのアップグレード中に手作業でpptxからpdfへの変換作業が終わっている(ありがち)。

一応試してみる。

import aspose.slides as slides
                        
                        pptx = slides.Presentation("slide.pptx")
                        pptx.save("slide.pdf", slides.export.SaveFormat.PDF)
$ python3 conv.py
                        Traceback (most recent call last):
                          File "conv.py", line 3, in <module>
                            pptx = slides.Presentation("slide.pptx")
                        RuntimeError: Proxy error(PptxReadException): The type initializer for 'Gdip' threw an exception. ---> TypeInitializationException: The type initializer for 'Gdip' threw an exception. ---> DllNotFoundException: Unable to load shared library 'libgdiplus' or one of its dependencies. In order to help diagnose loading problems, consider setting the LD_DEBUG environment variable: liblibgdiplus: cannot open shared object file: No such file or directory

libgdiplusってのが必要っぽい。入れてみる。

sudo apt-get update -y
                        sudo apt-get install -y libgdiplus
python3 conv.py

できた。・・・が「Evaluation only. Created with Aspose.Slides for .NETうんちゃら」という文章が追加される。なんやねん。あと、フォントがおかしくてダメ。おとなしくWindows側でRubyでwin32oleとか使った方がよさそう。

モジュールを全14回分作成。講義スライドを全てPDF化してアップロード。レポート課題をアップロード。レポートの締め切りを確認してレポートの提出先作成。出席確認クイズを作成。オンデマンド講義動画を確認して共有URLを作って貼り付け。TAの追加。ここまでやってから「公開」して、アナウンス。

なんというか、昔に比べて講義準備が大変になってない?講義ノートとスライドだけ教室に持っていけば良かったのが、今はめちゃくちゃやることがある気がする。

で、次は物理情報工学ソフトウェア開発演習か。

09月26日(月)

情報コンセント確認。全て使用済み?ギガビットスイッチで分ける必要あり。最近はギガビットでも安いんだなぁ。

iMac環境構築。

自分で言うのもなんだけど、数値計算用PCセットアップ資料が便利。

セミナーの準備してたら、投稿中の論文に間違いを見つけてしまった。ガーン。すぐに編集部に連絡して対応。申し訳ないことをした。結果が間違ってるとかじゃなくて本当によかった。

10/18のセミナー準備完了。

09月25日(日)

発表スライドを作っていた。

09月24日(土)

技術記事を会社の宣伝としてQiitaだのZennだのに書く、というケースが増えてて、それ自体は良いんだけど、わりとQiitaはそれで僕の趣味から外れてしまったという感じがするので、Zennはそうならないと良いなあ、と思いつつ。

最終的にマネタイズする、ということを考えると、組織としての会社ユーザが増えるほうが良いと思われるので難しい。

09月23日(金)

セミナーを引き受けた。講義準備と重なって死にそう。とりあえず20%くらいスライドを作った。

なんかツイートがバズって取材申し込みっぽいのがわりと来るんだけど、それに淡々と対応する。ツイートがバズると、ネットニュースの人からDMが来て「記事にして良いですか」的なことを聞かれるので、それに「いいですよ」と答えるだけ。なんか記憶にあるだけでも10回以上ネットニュースの記事になってるので、もう慣れっこというか。

っていうかバズり慣れしている指導教員ってどうなのよ。研究成果が出てないのにテレビに出て「有識者」っぽい顔をしている、なんちゃって研究者と同じ匂いがしない?

09月22日(木)

研究室ミーティング。秋学期の1on1決め。っていうか研究室WikiをGitHubに移行したい。

09月21日(水)

iMac復活計画。まずはメール。Thunderbirdを導入。メールはGMailでPOPで読んでいるいるが、GMail+POPは最大30分くらいのタイムラグがあるため、ThunderBird+IMAPでも読めるようにしている。IMAPサーバ上にメールが大量にあったので、少し整理した。

MacにHomebrewをインストール。それに伴い、lab_startupを少し整理。それまでPythonにあったHomebrewのインストールを別ページに独立させた。

ボルツマンマシンの三本目の記事を書き始めた。

リモートにブランチbranchがある状態でgit fetchした。するとローカルにorigin/branchが出現する。この状態でgit switch branchとすると、git switch -c branch origin/branchと同じことになる。なるほど。これ、どこかにまとめた方が良いかなぁ。

09月20日(火)

野村研セミナー。自動微分によるハミルトニアンの設計について。

RBMの勉強続き。このポストがわかりやすい。

早くサンプルコードを書かないと。

09月19日(月)

自作OSで文字列をPC98に表示する

すごい。また高校生が自作OSを作ってる。そして参考文献に川合さんの30日OS自作本。この本、多くの人の人生に影響を与えている。僕もこういう本が書きたい。30日並列MD本とか書きたい。

いやしかし、最近の高校生は部誌をMarkdownで集めてGitHubで公開するのか。時代だな・・・

RBMの学習の勉強。

ようやくKL距離と対数尤度関数が結びついた。忘れない内にまとめておく。

確率変数\(\hat{X}\)を考える。この確率変数はN種類の値をとり得るとする。\(\hat{X} = i\)となることを「事象\(i\)」と呼ぶ。ある事象\(i\)が起きる真の確率を\(q_i\)とし、それをモデルで再現したいとする。モデルパラメータが\(\theta\)の時に、そのモデルにおいて事象\(i\)が起きる確率を\(p_i(\theta)\)とする。真の分布とモデルによる分布のKL距離は

\[ \begin{aligned} KL(\vec{q}|\vec{p}(\theta)) & \equiv \sum_i^N q_i \log \frac{q_i}{p_i} \\ &= \sum_i^N q_i \log q_i - \sum_i^N q_i \log p_i \end{aligned} \]

この距離をパラメータ\(\theta\)で微分するので、第一項は消え、第二項だけ考えれば良い。

さて、いま真の分布がわからない代わりに、\(T\)回事象を観測し、その\(k\)回目の事象が\(S_k\)であったとしよう。この時、尤度関数\(l(\theta)\)

\[ l(\theta) = \prod_k^T P(\hat{X} = S_t | \theta) \]

で表される。ただし\(P(\hat{X} = S_t | \theta)\)は、パラメータ\(\theta\)のもとで、確率変数が値\(S_t\)を取る確率である。後のために対数尤度にしておく。

\[ \log l(\theta) = \sum_t^T \log P(\hat{X} = S_t | \theta) \]

さて、\(T\)回の試行のうち、事象\(i\)が起きた回数を\(n_i\)とする。すると、先程の尤度関数の和を試行に関する和から、事象の種類に関する和に書き直すことができる。

\[ \log l(\theta) = \sum_i^N n_i \log P(\hat{X} = i | \theta) \]

\(P(\hat{X} = i | \theta)\)は、パラメータ\(\theta\)において事象\(i\)が起きる確率であるから\(p_i\)のことである。したがって、

\[ \log l(\theta) = \sum_i^N n_i \log p_i \]

両辺を試行回数\(T\)で割ると、

\[ \frac{1}{T}\log l(\theta) = \sum_i^N \frac{n_i}{T} \log p_i \]

\(T\)回の試行のうち、事象\(i\)が起きた回数が\(n_i\)なので、事象\(i\)が起きる確率\(q_i\)\(n_i/T\)で近似できる。すると、

\[ \begin{aligned} \frac{1}{T}\log l(\theta) &= \sum_i^N \frac{n_i}{T} \log p_i\\ &\sim \sum_i^N q_i \log p_i \end{aligned} \]

これは、KL距離の第二項にほかならない。

09月17日(土)

メモ。「Stable Diffusion」のWebUI+Docker版。

stable-diffusion-webui-docker

研究室のGPUマシンで試してみたい。

学生さんが踏んだスパコンのエラー、UCXに起因するらしい。UCXとはUnited Communication X Frameworkの略で、UC-S、UC-T、UC-Pなどのコンポーネントからなる。踏んだエラーはこれだな。大量の通信パケットがあると、パケットの順番が前後してしまうことがあるらしく、それでAssertion Failedしてしまう模様。上流では対応が完了しており、スパコンでも次のメンテでアップデート予定とのこと。

こういうのがあると、「スパコンの研究室」って感じがしてきて良いですね。

09月16日(金)

卒論中間発表。

共著論文、アクセプトされたとのこと。慶應での初めての共同研究。めでたい。

09月15日(木)

大学に来たら、ドアに置手紙。名古屋大学時代に同じ講座だった先生が訪問してくださったとのこと。ちょうど学会で入れ違いになってしまって残念。名古屋での日々を思い出す。じっくりと研究に取り組めて、すごく良い環境だったと思います。今の忙しい日々も嫌いではないですが。

研究室ミーティング。プレゼンテーション技法発表会の練習。明日皆さんがんばってね。

学会の参加費の立て替え払い請求をしようとして、参加費がわかるページを印刷しようとするが、学会のページが印刷時にレイアウトが崩れてしまう。面倒なので、ブラウザがレンダリングした状態をキャプチャして、画像として印刷した。うーん。

学会の立て替え払い請求出した。4人分。増えてきた。こういう出費はうれしい。

GitHub演習のTAの募集をかけた。学会のために後手に回ってしまった。

09月14日(水)

学会。

学会で話しかけられた。自分の書いたMD記事が参考になっているとのこと。ありがたい。書いてみるもんですね。

学生さんの発表。かなり注目を浴びており、終わった後も質問攻め。良かった。

別の用事があるためにすぐに帰る。これで久々の物理学会おしまい。やっぱり対面がいいですね。

09月13日(火)

物理学会。座長。みんなエントロピーを分解してた。

学生さんの発表。3件とも無事に終わってよかった。

メモ。

特にパラフィンの落下実験が面白かった。溶かしたパラフィンを温度制御した水に落下させる。水温と落下速度により、面白いことがおきる。特に、「ちょうど良い水温」の時が面白くなる。温度が低すぎるとすぐに固まってしまい、高すぎると衝突後に丸くなる時間がある。その中間だと、衝突で変形した状態でちょうど固まるので複雑な形状となる。

自分の書いたPython本を学生さんの輪講に使っているという話を聞いた。ありがたい限り。

09月12日(月)

学生さんが投げたジョブが変なエラーを吐いて死んでいたので、物性研に質問メールを投げる。おそらく我々が想定外の使い方をしているとかなんだと思うんだけど、こうやって無茶やる人がいるからスパコン運用の知見が溜まるわけで。いずれにせよ、こういうことが起きると、なんか「スパコンの研究室」って感じがして良いですね。

論文再投稿した。通るといいな。

09月11日(日)

最近、土日に全く動けず、進捗が作れていない。寝てるつもりだが、あまり休めてない。

ネットに自分の専門知識に関する網を張り、なにかひっかけては文句を言う、典型的な「警察」。ある人のツイートを見て、「あ、あの警察湧いてるだろうな」とおもったら案の定。こういうやりとりが「有益」だと思ってるんだろうな・・・。

全く見知らぬ人とやりとりするのは、相互作用、というか摩擦が強すぎ、すぐに心のエネルギーが減衰してしまう。こうして、一方的に情報を発信するブログに回帰する俺。うーん。

健康診断予約した。前回は出遅れて午後しかあいてなかったが、今回は午前中が取れてよかった。

Qiita、Contribution数で表彰プログラムとかやってて、なんか、そういう雰囲気が苦手で抜けた、というのがある。いわゆる「いいね」を稼ぐ記事が良い記事であり、良い記事を書く著者が良い著者である、という風潮がどうにも苦手。論文でも似たような雰囲気を感じる。つまり、引用を稼ぐ論文が良い論文であり、良い論文を書く研究者が良い研究者である、という風潮。読まれない記事、論文を書いても仕方ないが、過度にKPIを求めるとおかしなことになるわけで、難しい。

この日記を書いているところを娘に見られて「ねぇパパ、つかれてうごけないってなに?」って聞かれてしまったorz

ネガティブなことを言うのも書くのも良くないね。

09月10日(土)

疲れて動けない。

09月09日(金)

iMac受け取り。修理代金無しとのことだったので「再現不可で返却」だと思ったが「再現は不可だが、ログでパニックを確認したためロジックボードを交換」とのこと。というわけでディスプレイ以外は新品になって帰ってきた。いやはや。

なんとか論文の査読レポートへの返事を書き終わったぞ。月曜日に再投稿だ。

09月08日(木)

研究室ミーティング。

4:15分にiMacの修理が終わったというメールを見て生協にかけつけたが、4時で営業終了だった。

zshのヒストリが壊れた。

zsh: corrupt history file /home/username/.zsh_history

みたいなことを言われる。原因は.zsh_historyにおかしな文字列が含まれているため。stringコマンドで修理できるらしいが、vimで直接なおした。

gitもおかしくなってる。

$ git log
                        error: object file .git/objects/55/72ef2d220b5f3a2142c7c09e057c2e95b69873 is empty
                        error: object file .git/objects/55/72ef2d220b5f3a2142c7c09e057c2e95b69873 is empty
                        fatal: loose object 5572ef2d220b5f3a2142c7c09e057c2e95b69873 (stored in .git/objects/55/72ef2d220b5f3a2142c7c09e057c2e95b69873) is corrupt
                        error: object file .git/objects/55/72ef2d220b5f3a2142c7c09e057c2e95b69873 is empty
                        error: object file .git/objects/55/72ef2d220b5f3a2142c7c09e057c2e95b69873 is empty
                        fatal: loose object 5572ef2d220b5f3a2142c7c09e057c2e95b69873 (stored in .git/objects/55/72ef2d220b5f3a2142c7c09e057c2e95b69873) is corrupt

どうもコミット時にファイルが壊れたっぽい。.zsh_historyといいgitといい、なんかファイルがおかしい。ハードディスクが不調なのか?怖すぎる。

09月07日(水)

Adobe Acrobat Readerが開くのと同時に、Adobeのログイン画面が出る時があって鬱陶しい。設定での消し方がよくわからん。

あるオープンアクセスジャーナルから、初めて査読依頼が届いた。そのジャーナル、名前だけ知っていたが、別の分野の雑誌だと思っていたので気に留めていなかった。しかし、自分の専門に近い論文が届いたのと、Editorがまともそう(Google Scholar調べ)だったので、査読を引き受けることに。

オープンアクセスジャーナルって、どうなんだろうね・・・

昔、明らかにハゲタカだったジャーナルの査読を引き受けたことがあったが、今回は「査読期間がまとも(短すぎない)」「Editorがまとも(明らかに研究者)」ということで大丈夫であろう。

しかし、ついでにGoogle Scholarで知り合いの研究者の引用数とか調べて、ちょっと自分の論文の引用数の少なさに凹んでしまった。もっとちゃんと論文書かないとな。

査読はプライベートリポジトリでsvnで管理しているんだけど、だんだんしんどくなってきた。もうGitHubのプライベートリポジトリに移行するかな。プライベートリポジトリだと失敗して情報が流出したら自分の責任だけど、GitHubならGitHubのせいだし、正直、自分よりGitHubの方が信頼できる。

査読レポートの返事、コメント8つ中4つまで済ませた。なかなか思うように作業が進まない。

09月06日(火)

修理に出してたMacBookPro返ってきた。SSDの不具合。ボード一体型なので、ロジックボード全交換。それじゃ再インストールできないのも無理はないし、素人にはどうしようもない。すぐにプロに任せればよかった。

Subversionのリポジトリの状態をプロンプトに出す奴、これまでLANG=Cを指定していたが、日本語(UTF-8)のファイルを管理するようになってバグるのでやめた。また、昔はdepthとしてimmediateを指定していたが、これももう速度が許容範囲になったので、その指定も外した。

っていうかもうSubversion管理やめるかなぁ。少なくとも予算管理はsvn+xlsxよりGoogle SpreadSheetの方が便利な気がする。ただ、Google Oneの入会必須。Paper PileもGoogle Drive使うから、こちらもGoogle One要求。もう入るのは確定。あとは支払い方法を検討するだけだな。

学習指導のお仕事。

dvipdfmxがPDFのバージョンが古いとワーニングを出す。-Vでマイナーバージョンを指定。とりあえず-V 7でいいのかな。.latexmkrcはこうなる.

#!/usr/bin/env perl
                        
                        $latex = 'platex -synctex=1 %O %S';
                        $bibtex = 'pbibtex %O %B';
                        $makeindex = 'memindex %O -o %D %S';
                        $pdf_mode = 3;
                        $dvipdf = 'dvipdfmx -V 7 %O -o %D %S';

Macでどうなるか確認しないと。

09月05日(月)

cron化しているはずのhwclockが仕事をしていない。確認する。

$ sudo hwclock -s
                        hwclock: クロックティックを待つための /dev/rtc0 への select() が時間切れになりました

なんだこりゃ?

学習指導のお仕事。いかん、また後手に回っている。たまに引継ぎ資料を読み返さないとダメだ。

査読レポート。査読者のコメントをたぶん理解できた。あとは返事するだけ(その時間をいつ作るんだ?)。

09月04日(日)

体調が悪い。査読レポートを少しチェック。

寝る前に「なろう小説」を読んでいるが、いいところでエタってるのが結構ある。AIが続きを書いてくれないかな・・・

09月03日(土)

子供を遊びにつれていく。

RBMの学習について勉強した。

09月02日(金)

巨大テキストファイルをsortコマンドでソートしてみる

面白かった。いろいろ頑張るより、既存のツール使っちゃった方が早い、というのはありがちな結論。また、GNU sortが、情報が全てメモリに乗らないファイルをソートできるとか、並列ソートに対応しているとか知らなかった。すごいな。

査読レポートの返事用に簡単な確認コードを書いたが厳密解と一致しない。コーディング力が落ちている。やばい。

家に返ってから実装。っていうか三目並べの有効な全状態探索コード。落ち着いて書いたらちゃんと書けた。三目並べは全部で\(3**9 = 19683\)通りあるが、そのうち有効な状態は5478通りだけで、勝負のつき方は対称性を考慮しないと全部で255168通り、ということを確認したかっただけ。

どうでも良いが、Pythonで書いて遅かったのでC++で書き直したのだが、Pythonはa==b==cみたいな比較ができるのに対して、C++はa==b==c(a==b)==cと解釈されてしまうため、例えば2==1==0が真、0==0==0が偽と判定されてしまう。しばらくこのバグに気づかなかった。

でもまぁ、とにかく組めてよかった。

なんだか最近、コードを書く目的が「何か面白いことをしたい」という前向きの気持ちというよりは、「俺はまだやれる。プログラムが書ける」という確認の意味合いが強くなってきている気がして悲しい。こんな小さいコードではなく、ごついコードが書きたい。

09月01日(木)

もう9月ってマジか。

研究室ミーティング。輪講。

熱力学、統計力学で、一つの熱力学関数からルジャンドル変換で全部出てくるのは不思議。同様に統計力学ではラプラス変換で全部出てくる。数学的にはとてもきれいだけど、不思議。

TAはGitHub演習が1名足りないので募集しないと。

プレゼンテーション技法のタイトル送った。

学習指導の仕事。結構時間かかった・・・