他の人にメモを送るときに TeX の数式を入れたいときがある。
こうなると、TeX で書いてコンパイルして、という作業が必要だけど、そもそも1,2枚の5個ぐらいの数式だとわざわざ TeX で書くのも大げさな気がする。
そういったときに Marp を使うと簡単にできる。インストールする必要もなくて
https://web.marp.app/
にアクセスして、適当に数式を $$ で挟んで書くだけ。これで TeX の数式で書ける。(正確には KaTeX の数式を書ける。)
リアルタイムで変換されるのでコンパイルの必要もないし、出来上がったら左上の青い三角のあたりでPDF出力することもできるし、markdown で保存しておくこともできる。
2019年7月9日火曜日
2019年6月11日火曜日
査読に6年の論文がある
今日、ある論文の投稿した日と採択された日に何気なく目をやってみたら、なんと6年もかかっていた。
査読の途中に何があってこれだけ時間がかかったかは、もちろん論文には書かれていないわけだけど、それにしても6年というのは長いものだ。。。ここまで時間がかかっても途中で挫けなかった著者はすごいな、と思ったりする。
査読の途中に何があってこれだけ時間がかかったかは、もちろん論文には書かれていないわけだけど、それにしても6年というのは長いものだ。。。ここまで時間がかかっても途中で挫けなかった著者はすごいな、と思ったりする。
2019年6月1日土曜日
ヒトの有効な集団サイズが1万人しかない
最近、ちょっと調べ物をしていて集団遺伝学などに表れる「有効な集団サイズ」を調べたりしていたら、「ヒトの有効集団サイズが1万人程度しかない」というブログ記事があった。
http://macaque.blogspot.com/2010/09/blog-post.html
いまの世界人口が70億人を超えていることを考えてみると、1万人というのは結構少ないような印象もある。
個人的には「え、そんだけでいいの?」という感じでもある。
http://macaque.blogspot.com/2010/09/blog-post.html
いまの世界人口が70億人を超えていることを考えてみると、1万人というのは結構少ないような印象もある。
個人的には「え、そんだけでいいの?」という感じでもある。
2019年5月22日水曜日
論文読み:皇帝ペンギン
皇帝ペンギンのふるまいを使ってメタヒューリスティクスを使ったという論文があり、これがなかなかに面白い。
Emperor Penguins Colony: a new metaheuristic algorithm for optimization
https://link.springer.com/article/10.1007/s12065-019-00212-x
皇帝ペンギンを数理モデル化する、というアイデアが、なかなか簡単には着想できるようなものでもないし、どうやって皇帝ペンギンにたどり着いたかが気になるところ。
あと、前半はメタヒューリスティクスのサーベイとしても、いろんな動物がモデル化されていることが分かって、これも興味深い。
動物図鑑を買いに行きたくなってしまう。
Emperor Penguins Colony: a new metaheuristic algorithm for optimization
https://link.springer.com/article/10.1007/s12065-019-00212-x
皇帝ペンギンを数理モデル化する、というアイデアが、なかなか簡単には着想できるようなものでもないし、どうやって皇帝ペンギンにたどり着いたかが気になるところ。
あと、前半はメタヒューリスティクスのサーベイとしても、いろんな動物がモデル化されていることが分かって、これも興味深い。
動物図鑑を買いに行きたくなってしまう。
2019年5月9日木曜日
論文読み:Logarithmic-Barrier Decomposition Interior-Point Methods for Stochastic Linear Optimization in a Hilbert Space
最近はいろいろと制約条件がある関係で論文読みの内容をここには書いていなかったけど、たまには論文読みの内容を書いておくことにする。
今回読んだ論文があるのは、
http://www.optimization-online.org/DB_HTML/2019/04/7148.html
最近の内点法の論文には、一連の論文になっていることがあって、例えば
[1] まずは LP について書く
[2] 次に Convex Quadratic Programming について書く
[3] そして SOCP に拡張して
[4] さらに SDP に拡張して
[5] 最終的に錐最適化に拡張する
と5本ぐらいの論文が一連の論文となっていたりする。
今回挙げた論文の文脈では、[5] までは既存論文で行われている内容で、
[6] Hilbert 空間に拡張する
ということが行われている。
個人的に面白いと思うのは、[1]-[6]までで計算量のオーダーが変わらないことである。
つまり、計算量という観点だけから見ると、self-concordant が使える範囲では計算量が悪化しない。
今回読んだ論文があるのは、
http://www.optimization-online.org/DB_HTML/2019/04/7148.html
最近の内点法の論文には、一連の論文になっていることがあって、例えば
[1] まずは LP について書く
[2] 次に Convex Quadratic Programming について書く
[3] そして SOCP に拡張して
[4] さらに SDP に拡張して
[5] 最終的に錐最適化に拡張する
と5本ぐらいの論文が一連の論文となっていたりする。
今回挙げた論文の文脈では、[5] までは既存論文で行われている内容で、
[6] Hilbert 空間に拡張する
ということが行われている。
個人的に面白いと思うのは、[1]-[6]までで計算量のオーダーが変わらないことである。
つまり、計算量という観点だけから見ると、self-concordant が使える範囲では計算量が悪化しない。
2019年4月13日土曜日
最適化理論の難しさ
非線形最適化では制約想定を仮定したうえで収束とかの議論を行うことがあるが、制約想定のうちの一つのMangasarian-Fromovitz制約想定を扱ったものについては、間違った結果や証明を行っているものも少なくないようだ。
https://arxiv.org/pdf/1803.11304.pdf
個人的には、Newton 法の2次収束についての証明における「最適解に十分近いところからスタートすれば」というのが、ちょっと変だなぁ、と感じることもある。終了判定に使う閾値をεとしたときに「最適解からε未満の距離にある点からスタートすれば」当然ながら最初の終了判定でアルゴリズムは終了するので、2次収束よりも圧倒的に高速である。このあたりに最適化理論の解析の困難さが付きまとっているように感じている。
https://arxiv.org/pdf/1803.11304.pdf
個人的には、Newton 法の2次収束についての証明における「最適解に十分近いところからスタートすれば」というのが、ちょっと変だなぁ、と感じることもある。終了判定に使う閾値をεとしたときに「最適解からε未満の距離にある点からスタートすれば」当然ながら最初の終了判定でアルゴリズムは終了するので、2次収束よりも圧倒的に高速である。このあたりに最適化理論の解析の困難さが付きまとっているように感じている。
2019年4月2日火曜日
Julia の PyCall で python ファイルを reload する
Julia の Pycall だと、pyimport で python のファイルを読み込みはできるが、python ファイルを修正しても pyimport のそのままでは読み込めない。
これを回避するには、以下のように pyimport に reload とかをつける必要がある。
(たぶん python 側の制約じゃないかと思う。)
ここでは、test_py.py の中に test1() という関数がある場合とする。
まずは、python でどれを使っているかを明示して、
ENV["PYTHON"] = "/usr/bin/python"
それから、現在のディレクトリを python の path に通す。
using PyCall
if PyVector(pyimport("sys")["path"])[1] != ""
pushfirst!(PyVector(pyimport("sys")["path"]), "")
end
これを回避するには、以下のように pyimport に reload とかをつける必要がある。
(たぶん python 側の制約じゃないかと思う。)
ここでは、test_py.py の中に test1() という関数がある場合とする。
まずは、python でどれを使っているかを明示して、
ENV["PYTHON"] = "/usr/bin/python"
それから、現在のディレクトリを python の path に通す。
using PyCall
if PyVector(pyimport("sys")["path"])[1] != ""
pushfirst!(PyVector(pyimport("sys")["path"]), "")
end
このあとは、
if @isdefined(test_py)
test_py = pyimport("importlib")["reload"](test_py)
else
test_py = pyimport("test_py")
end
とする。
初回は pyimport("test_py") で読み込めるが、2回目以降は読み込めないので、これを "reload" を使って再読み込みするようにしている。
このようにすれば、test_py.test1() としてモジュールの中の関数を呼び出すことができる。
登録:
投稿 (Atom)