kivantium活動日記

プログラムを使っていろいろやります

2017年6月 第3週

今週知ったこと

Seaborn

簡単に美しいグラフ描画ができるPythonライブラリSeaborn入門 - MyEnigma
matplotlibの描画をいい感じにしてくれるらしい。

ORWiki

ORWiki
社団法人 日本オペレーションズ・リサーチ学会が運営しているWiki。事例編などが参考になりそう。

GNUのyes実装は高速

How is GNU `yes` so fast? : unix
GNUのyesは高速化のためにがんばっているらしい。


ことのはアムリラート

エスペラント語を話すヒロイン 美少女ゲームで利用者も「一緒に学習」 : J-CASTニュース
エスペラントが物語の根幹となる百合ゲームが出るそう。

Python入門PDF

Python 3 | K-TechLaboゼミ用学習ノート
ざっと見た感じよさそう。

今週の注目論文

Attention Is All You Need

CNNもRNNもいらない、Attentionだけあればいいという主張らしいが、attentionのことがよく分かっていないので理解していない。巨大化したLSTMでしかないじゃないかという指摘も見かけたが、真偽が判定できず困っているので誰か教えて欲しい。(outputを再入力しているしrecurrentっぽさはあるように感じる……)



Self-Normalizing Neural Networks

Appendixが94ページある巨大な論文の実装が5行でできるということでネタにされている論文。追試した人の感想を眺めるとあんまりうまく行ってなさそう。

Redditでの議論が活発に行われている。[R] Self-Normalizing Neural Networks -> improved ELU variant : MachineLearning


SmoothGrad: removing noise by adding noise


「話題の論文」が多すぎてこれが話題になっているらしいという情報を追っかけるくらいしかできていない……

2017年6月 第2週

今週知ったこと

Codon usage bias

Codon usage bias - Wikipedia

DNAからタンパク質を転写する際、塩基の3つ組が一つのアミノ酸を表しているのだが、同じアミノ酸を表す3つ組が複数存在する場合がある(同義コドン)。同義コドンの間には使われる頻度の差があり、codon usage biasと呼ばれている。同義コドンの違いであってもRNAの2次構造には違いがあるので、その結果として発現量が変化するそうだ。

最適化アルゴリズムベンチマーク関数

ベイズ最適化を実装するときに変な関数で実験したいとTwitterに書いたら、よく知られたベンチマーク関数があることを教えてもらった

Understanding Machine Learning: From Theory to Algorithms

機械学習の新しめの参考書。PAC学習やVC次元の話題から始まっていて、自分が知らない分野をカバーするのにちょうど良さそうなので暇を見つけて読んでいる。
著者のサイトからPDFをダウンロードすることができる。

LaTeXの数式を手書きできるサイト

https://webdemo.myscript.com/views/math.html#/demo/equation

手書きした数式をLaTeX形式などに変換できるサイトを知った。

以前から使っていたDetexify LaTeX handwritten symbol recognitionは単一の記号しか変換できないが、候補を複数表示できるのでこちらの方が便利なケースが多い気がする。

正規表現デバッグサイト

https://www.debuggex.com/ がすごいと紹介するtweetが回ってきた。他にも

などデバッグサイトにはいろいろある。

Interval Newton Method

ニュートン法の点ではなく区間を推定する変種をInterval Newton Methodと呼ぶらしい。http://www2.math.uni-wuppertal.de/~xsc/xsc/node12.htmlのコードが分かりやすい。

Particle Filter Tracking

Particle Filter Tracking in Python

ラッキングの1手法。Wikipediaでヒットしないのでマイナーなのかもしれない。

Copy and Swap Idiom

c++ - What is the copy-and-swap idiom? - Stack Overflow

C++のクラスでコピーコンストラクタとコピー代入演算子を定義するときにswapを用いた書き方がよく使われるらしい。

ネコのささやき

ネコのささやき|シロアリ駆除[シー・アイ・シー]

ビルのドアの近くを通ると高周波音が聞こえて不快になることがあったので見てみたらネズミ避けに強い超音波を発する機械が設置されていた。超音波なのに人間に聞こえるのはどうしたものか。

今週読んだ本

どうして私が美術科に! ? (1) (まんがタイムKRコミックス)

どうして私が美術科に! ? (1) (まんがタイムKRコミックス)

きららMAXで掲載中の作品。間違えて美術科に入ってしまった主人公の美術科での奮闘を描いている。

2017年6月第1週

今週学んだこと

Cholesky分解のRank-one update

すでにCholesky分解が求まっている行列に対し、https://wikimedia.org/api/rest_v1/media/math/render/svg/84e34863906160f251f4ec64d33f8e1e71be23e0という形の更新を行う場合、更新後の行列に対するCholesky分解は通常よりも速く求めることができる(Wikipedia)。

EigenではrankUpdateという関数で実装されている。

Cramer-Raoの不等式

Cramer-Raoの不等式 - 機械学習の「朱鷺の杜Wiki」
不変推定量の分散の下限を定める不等式。

非負値行列因子分解(NMF)

行列を分解する方法の一つでレコメンドに使われている。
非負値行列因子分解(NMF)によるレコメンドのちょっとした例 - About connecting the dots.が参考になりそう。

FOBOS

劣勾配法の改良にあたる手法のひとつ。
劣微分を用いた最適化手法について(4) | Preferred ResearchSVMの例が紹介されている。

Valgrind

Valgrind - Wikipedia
メモリ関係のデバッグに使えるツール

reveal.js

reveal.js – The HTML Presentation Framework
HTMLでプレゼンを行うためのフレームワーク

The Daily Mail

【マジかよ】NASA、100京円の価値のある小惑星「プシケ」を地球に持ち帰る計画を実行か|面白ニュース 秒刊SUNDAYという信用できない記事があり、出典を見てみたらThe Daily Mailというイギリスの新聞だった。新聞といえども信用できないものはあるのでデイリー・メール - Wikipediaを見てみたところ、英語版Wikipediaでは引用が禁止できない程度に信頼できない情報源である旨が書いてあった。他にはThe Sun, The Daily Mirrorなどもタブロイド紙として有名らしい。

民法改正

「訴えてやる!」の前に読む IT訴訟 徹底解説(31):ユーザーの要件が間違ってるのはベンダーの責任です!――全ベンダーが泣いた民法改正案を解説しよう その1 (1/3) - @ITによると

  • 瑕疵担保期間は引き渡しから1年という規定がなくなり、成果物が契約の目的に適合しないことを発見したら「発見したときから1年以内」なら損害賠償などを請求できるようになる
  • そもそも明らかな不具合を指す「瑕疵」という言葉ではなく「契約の内容に適合しない仕事の目的物」という言葉が用いられるようになり、要件通りに作っても要件自体が間違っていて結果として品質が低くなった場合も「契約の内容に適合しない」と認定される可能性がある

というような変更が行われるらしい。
この解説を文字通り解釈すると、例えば業務委託契約機械学習プログラムを開発したときに、実装は正しいのに注文者から与えられた学習データと実際の環境が大きく異なっていたせいで注文者の思うような性能が出なかったという場合でも、納品後何年も経ってから損害賠償を請求される可能性がありそう。プログラムを作って納品するという仕事をしたくないなぁという気持ちになる。

読んだ本

kindleのセールで買った本をたくさん読んだ

両親の再婚で新しく姉妹になった二人が料理を通して交流する話。料理描写がとてもおいしそうな上に料理の作り方解説も載っていてとてもよい。2話に出てきたたまごふわふわを実際に作った。

中間管理録トネガワ(1) (ヤングマガジンコミックス)

中間管理録トネガワ(1) (ヤングマガジンコミックス)

カイジに出てくる利根川を主人公に中間管理職の苦悩を描く話。何でもないことをカイジのフォーマットで大げさに描くのがとても面白い。

ゆるゆり: 15 (百合姫コミックス)

ゆるゆり: 15 (百合姫コミックス)

ゆるゆりの最新刊。今回も面白かった。カラーページのネタを見て一迅社講談社の子会社になったことを思い出した。

進級や寮などがすべてギャンブルで得たチップで決める学校での話。

株で生計を立てている引きこもり主人公の家に親戚の親子が居候に来る話。

赤門大学合格を目指して勉強する部活動の話。

主人公のイケメン美少女が周囲の女の子たちを無意識に攻略していってしまう話。

球詠 1巻 (まんがタイムKRコミックス)

球詠 1巻 (まんがタイムKRコミックス)

魔球を武器にするピッチャーとその仲間たちが野球をする話。

その他

2017年5月 第4週

印象的だったニュース

SoftBankNVIDIA株式取得

SoftBank Takes $4 Billion Stake in U.S. Chipmaker Nvidia, Sources Say - Bloomberg
SoftBankNVIDIAの株式を取得して4位の株主になったらしい。

NVIDIAの株については、AI関連企業の中でもNVIDIAの株価上昇率が特に高いことを指摘した以下のツイートが印象に残った。

また、NIPS締め切り前にGPUインスタンスが枯渇する事態になっていたらしく、ブームの高まりをさらに感じた。
Cloud giants 'ran out' of fast GPUs for AI boffins • The Register

新しく知ったもの

clDNN

GitHub - 01org/clDNN: Compute Library for Deep Neural Networks (clDNN)


Marxico

Marxico - Markdown Editor for Evernote
オンラインでMarkdownを編集できるサービス。数式のプレビューなどもできる。

自分はHackMD - Collaborative markdown notesを愛用しているが、MarxicoのHackMDに対するメリットはよく分からない。

XPPAUT

XPP/XPPAUT Homepage
微分方程式などを解くソフト。iOS版もあるらしい

Valgrind

Valgrind - Wikipedia
有名なデバッガらしい。printfデバッグより高度なデバッグをしたことがないのでデバッガの使い方もおいおい身に着けていきたい。

気になった論文

The Marginal Value of Adaptive Gradient Methods in Machine Learning

[1705.08292] The Marginal Value of Adaptive Gradient Methods in Machine Learning


ファインチューニングのときはSGDの方がいいなどのオカルト情報は以前から聞いていたが、実際にSGDの方が優れていると主張しているのはちょっと気になる。

ICLR 2017でBEST PAPER AWARDを取ったUnderstanding deep learning requires rethinking generalizationでもSGD自体に正則化効果があることが指摘されていたし、SGDの理論研究がこれから盛り上がるかもしれない?

Engineering RGB color vision into Escherichia coli

Engineering RGB color vision into Escherichia coli: Nature Chemical Biology: Nature Research


読んだ本

楽しく学べる「知財」入門 (講談社現代新書)

楽しく学べる「知財」入門 (講談社現代新書)

特許や商標などの知的財産権についての入門書。
「Asahi」ロゴマーク事件 特許事務所 東京都その他全国対応 【60分無料相談をご利用ください!】のような事例を集めて紹介していて、とても面白かった。

kindleで90%以上ポイント還元してくれるキャンペーンをやっていたのでいろいろ買った。

2017年5月 第3週

新しく知ったこと

「ずんだホライずん」のクラウドファンディング

東北ずん子アニメ「ずんだホライずん」制作プロジェクト | クラウド出版
クラウドファンディングでアニメ制作の予算を集めているらしい。3万円出すと14000枚の原画と中割り絵がもらえるというコースがあって投資してしまった。


こういう訴え方に弱い。

Visual Studio Code

Visual Studio Code - Code Editing. Redefined
IDEを使ってみようと思って試してみた。Linuxでも動くし見た目もいい感じなので使っていきたい。

TPUの無料開放

Googleが研究者向けにTPUを無料で使わせてくれるらしい。


プログラミング用フォント Myrica

myrica.estable.jp
Rictyを使うのに飽きたので別のプログラミング用フォントを探して見つけたもの。しかし、Vimプロポーショナルフォントをうまく扱えないらしく(プロポーショナルフォントを使いたい · Issue #741 · vim-jp/issues · GitHub)、Source Code Proなども含めAdobe系のフォントの幅がおかしくなったのでまだRictyを使っている。

様方と気付

簡単ビジネス文書!気付と様方の使い方を覚えよう。知っておくと便利な宛名です。
郵便物を世帯先と違う苗字の人に送るときには宛名に「様方」という言葉を使い、ホテルなど本来その人がいない場所に送るときは「気付」を使うらしい。欲しいものリストで宛名にハンドルネームを使うときにどうするかという議論で知った。

読んだ本

Gaussian Processes for Machine Learning (Adaptive Computation and Machine Learning series)

Gaussian Processes for Machine Learning (Adaptive Computation and Machine Learning series)

ガウス過程の本。Gaussian Processes for Machine Learning: Book webpageで本文のPDFやコードが公開されている。
幅広いトピックを扱っていたが、各テーマの数学的バックグラウンドの紹介は最小限で、再生核ヒルベルト空間の話題とかは全然分からないままだったので別の本でも勉強したい。

表紙がかわいい。きんいろモザイクが面白い。応援していたゲストの「りかけいの女子」が無くなっていて悲しかった。

お願い! ロイヤルニート (1) (まんがタイムKRコミックス)

お願い! ロイヤルニート (1) (まんがタイムKRコミックス)

庶民の主人公と世間知らずのお嬢様というベタな組み合わせで順当に面白かった。

「女の子のかわいさをお楽しみ頂くため、邪魔にならない程度の差し障りのない受験勉強をお楽しみ頂く漫画です」という感じ。かわいい。

読んだWebページ

今週見つけたけどまだ読んでいないもの

2017年5月 第2週

読んでいるブログの今週のまとめという企画が面白そうなので自分もやってみることにしました。

学ぶって言うのはまねぶって言うじゃん? みんな最初は誰かの真似、おんなしおんなし。(井口 祐未)

例によって飽きたらやめます。
zkro.hateblo.jp

新しく知ったこと

perf

Linuxでソフトのパフォーマンスを解析するツールにperfというものがあることを知った。プログラムを高速化するためにはどの処理に時間が掛かっているのか調べるのが重要なのでこういうツールは役に立ちそう。perfの使いかたが参考になりそう。

EDINET

有価証券報告書等の開示書類を閲覧するサイトにEDINETというのがあるらしい。

Qbsolv

D-Waveの最適化ソルバーがあるらしい。使い方は知らない。https://github.com/dwavesystems/qbsolv

Cuckoo search

カッコウの托卵に着想を得た最適化アルゴリズムがあるらしい。詳細は理解していないのでそのうち理解したい。Cuckoo search - Wikipedia

gtags

コードリーディングに役に立ちそうなツール。ctagsよりいろいろすごいらしい。人間とウェブの未来 - GNU GLOBALとvimで巨大なコードでも快適にコードリーディングが参考になった。rtagsというclangの構文解析インターフェースをつかってタグ付けするツールもあるらしいがうまく動かせなかった。

DSD

MicrosoftがDNAでプログラミングするための言語を開発しているらしい。実用性は不明。Programming DNA Circuits - Microsoft Research

順位相関係数

順位データに対する相関係数を出す方法として順位相関係数というものが使われる。スピアマンの順位相関係数ケンドールの順位相関係数の2つがある。

DJI

ドローンのシェア70%を占める会社。DJI (会社) - Wikipedia

中央アフリカ帝国

1976年-1979年に存在した帝国。日本・フランスから国号変更を承認されるなどなかなかいいところまでいったらしい。中央アフリカ帝国 - Wikipedia
アメリカ大統領が最敬礼で迎えるのはイギリス国王・ローマ法王・日本国天皇のみらしいという知識も得た。

読んだもの

Ubuntu 16.04でADS-1500Wを使う

増え続ける紙資料を電子化して保管するためにスキャナーを買いました。

購入時には大きさと価格を考慮して以下の3つを検討しましたが、無線LAN機能がついていることとLinux用ドライバーが公式で配布されていることを理由にADS-1500Wを買いました。

ドライバーは配布されているものの、どこまでの機能がLinuxで動くか事前調査で分からなくて不安だったので動作報告をしておきます。確認した環境はUbuntu 16.04です。

動かし方

1. ADS-1500Wを無線LANに接続します。WindowsMacがあるとPC側のネットワーク設定を転送できて便利ですが、本体にSSIDを検索してネットワークキーを直接入力する機能や、WPS/AOSSが用意されているので無くてもつなぐことができます。

2. ソフトウェアダウンロードからドライバーをダウンロードします。ダウンロードするとインストール方法を書いたページ(リンクを開くと自動でダウンロードが始まるので注意!)に飛ばされますが、ここの指示は古いようです。dpkgでダウンロードしてdebをインストールします。

3. Scanner Setting for normal userからbrother-udev-rule-type1-1.0.0-1.all.debをダウンロードしてインストールします。ここまでの手順を実行すればUSB接続でのスキャンはできるはずです。

4. 最後に、無線LAN経由でスキャンできるように設定します。シェルを開いて

$ brsaneconfig4 -a name=ADS-1500W-Wireless model=ADS-1500W ip=192.168.1.20

のように実行するとスキャナーが登録されます。
nameには好きな名前を設定してください。IPアドレスは本体側で「メニュー > ネットワーク > 無線LAN > TCP/IP」とすれば確認できます

5. Ubuntuで「シンプルスキャン」を実行し、設定の「スキャンする対象」がいま登録したスキャナーの名前になっていることを確認してから「スキャン」とすればスキャンできます。両面スキャンを行うにはスキャンボタン右側の▼をクリックして「フィーダより全てのページ」を選択します。

以上のような手順でUbuntu上で無線LAN経由でのスキャンが行えることが確認できました。

ADS-1500Wには他にもスマートフォンアプリからスキャンして結果を確認する機能や、PCを経由せずにDropBoxに直接アップロードする機能などがあり便利に使えそうです。