2016年6月27日月曜日

ICCOPT の発表資料の作成スタート

今後のスケジュールから逆算して、ICCOPT の発表資料を作っておかないと時間が無くなる可能性があるので、今のうちに発表資料を作成しておく。

ICCOPT は、今回は 20 分の発表時間+5分の質疑応答なので、その時間をうまくやりくりできるように作りたいものである。

2016年6月24日金曜日

Deep Learning とかで BLAS は高速化できるのだろうか?

OpenBLAS のコンパイルの情報などを調べていて、
http://unity-memo.hatenablog.com/entry/2015/03/03/104238
を読んでみたところ、手動で最適化されている OpenBLAS が自動チューニングである ATLAS よりも高速であることから、

「現代の技術をもってしても 自動チューニングは手動オプティマイズに打ち勝つことはできないという事だろうか。」

と述べている。
非常に興味深い内容だ。
Deep Learning などの技術を取り込めば、どこまで BLAS を高速化できるのか、などなど考えてみると、今後の最適化技術にも関係しそうで面白い。

2016年6月23日木曜日

ADMM よりも高速な Newton 法

A Distributed Newton Method for Large Scale Consensus Optimization
http://arxiv.org/abs/1606.06593
をざっくりとチェックしたので簡単なまとめ。

計算したい最適化問題をざっくりと書くと、

$\min_{x_1,x_2,\ldots,x_n} \sum_{i=1}^n f_i (x_i) \mbox{ s.t. } x_1 = x_2 = ... = x_n \in R^p$

となり、$x_i$ と $x_j$ が関係があるかはグラフとして別に与えられている。

さらに関数 $f$ は、ヘッセ行列の固有値に上限と下限があって、ヘッセ行列の逆行列は Lipshitz 連続である。

こういった最適化問題のときに、この論文では双対問題に Newton 法を使うことで問題を解いている。特に、グラフから得られる構造で双対問題のヘッセ行列が疎行列になるとのこと。おそらく、このあたりはグラフィカルモデリングにあった性質と同じなのではないかと推測できる。たぶん、行列補完ともかんけいあるはず。






IguanaTeX で platex が動かないときに

Powerpoint で数式を入れたりするときに便利な IguanaTeX だが、たまに platex (PDF->PNG) がエラーで停止することがある。
どういったタイミングで起こるか特定できていないが、エラーとしては「ghostscript が見つからない」というようなエラーが出る。(ついさっきまで出てなかったのに、1行だけつけてみたら、このエラーが出たときもある。)

原因はよく分からないが、このときには、 platex (PDF->PNG) から latex (DVI->PNG) に切り替えると上手くコンパイルできる。

それにしても、IguanaTeX は非常に便利。これなしでは、やってけない。


2016年6月13日月曜日

Optima 100 の原稿に SDPA-GMP が引用されていた

Optima 100 の中に "Computer-assited proofs and semidefinite programming" という内容が掲載されていたが、SDP 関係だったのでチェックしてみたら、 SDPA-GMP が参考文献に載っていた。

SDPA-GMP は多倍長計算を用いて演算を行っているので、数値的に不安定になりやすい SDP には効果が高い。やはり、こういうソフトウェアって需要があるんだなぁ、と再確認したりする。


2016年6月8日水曜日

0-1 変数に Sum of Squares を使ってみると

$x \in \{0,1\}$ という制約条件は、普通に連続緩和をすると $ 0 \le x \le 1$ になる。

これを、$-x^2(x-1)^2 \ge 0$ として、Sum of Squares の緩和をするとどうなるか。

得られる緩和は $ 0 \le x \le 1$ となって、連続緩和と強さが変わらない。

なるほど、なるほど。なかなかに面白い結果だ。


2016年6月7日火曜日

Julia のエディタは Atom より Emacs のほうが快適

この前調べていた Julia のエディタだが、Atom よりも Emacs のほうが快適に使えることに気がついた。

基本的には、julia-mode.el をダウンロードして、
https://github.com/JuliaLang/julia-emacs/blob/master/julia-mode.el
説明に書いてあるように以下の内容を適宜修正してから .emacs/init.el に追加する。

(add-to-list 'load-path "path-to-julia-mode")
(require 'julia-mode)


ちなみに、julia-mode.el だと、M-x run-julia で Julia の REPL が Emacs 内で実行できるけど、これだとセミコロンでのシェルモードへの切り替えが上手くいかないようなので、REPL は別のターミナルで起動していた方が使いやすい。

あと、非常に便利なところとしては、ギリシャ文字などの入力にも対応しているところで、
\alpha[Tab]
と TeX の記号で Tab を押すとαに自動変換してくれる。「あるふぁ」と入力しなくても大丈夫。

もう一つ便利な点としては、インデントを自動調節してくれる点。Atom でも追加されている機能だが、Emacs で入力するほうがインデントの自動調節が素早く行われる。
(このあたりのスピードの差がどこから来るのかは、まだ良く調べてないけど。)


2016年6月3日金曜日

Julia を Atom のエディターで試してみる


Julia の統合開発環境っぽかった Juno が Atom ベースになっていたので、どんな様子かを試してみた。
とりあえず、現状で感じたところのメモ書き。


  • Atom のインストール自体は普通にできる。
  • Atom に Julia の設定を導入するのも、uber-juno のパッケージのインストールだけなので、簡単にできる。https://github.com/JunoLab/uber-juno/blob/master/setup.md の通り。
  • メッセージが出る通り、Atom でJulia の設定を導入すると、Atom を起動しなおしたときに Julia のパッケージの設定が入って、これが結構時間がかかる(30分ぐらい?)。
  • テーマが暗くて文字が読みづらいが Light にテーマを変更したら読みやすくなった。
  • カッコを書いたときに自動的に閉じカッコが入ると入力の邪魔になるので、ATOMで開き括弧を入力した時に、閉じ括弧を自動で入力するのをやめる を参考にする
  • ギリシャ文字などは自動で候補が出てくるので、これは便利。例えば \alpha で alpha を UTF-8 で入力できる。
  • Autocompletion が出てくるのが速すぎるので、autocomplete-plus パッケージにある Delay Before Suggestions Are Shown を 2 秒にしてみる
  • Console がどのペインなのか覚えていないので、ペインの位置を変えても毎回設定しなおす必要がある
  • Run File のボタンを押してから、実行が始まるまでにだいぶ時間がかかる (Julia のコンパイルも時間がかかるが、それだけではない様子。)
  • Run File で実行して、そのあとでファイルを修正保存して再度 Run File を実行しても、以前のファイルの内容で実行される
  • エラーメッセージはポップアウトで表示されてかっこいいが、ここをクリックしてもエラーの行に自動的に行ってくれるわけではない


たぶん、現状では Matlab の統合開発環境よりも遅い感じ。
Atom がモッサリという印象があって、そこに Julia を乗っけているのでだいぶ大変か。
Atom は様々なことができるようになっているが、現状ではスピードが遅くて、Emacs よりも遅い印象になっている。
数理最適化のプログラムを組んでいくには、現状では大変な感じだ。

でも、面白い機能も多いので、スピードが改善されてメモリ消費量が抑えられたら、こっちに移るのもありだと思う。