The jonki

呼ばれて飛び出てじょじょじょじょーんき

direnvでanacondaの環境を自動で切り替える

tmuxとanacondaを私は使っているのですが,tmuxのpaneをスプリットしたときなど,anacondaの環境がbaseに毎度戻るのが嫌で色々方法を調べてました. やりたいことは,現在のpaneでアクティブなcondaの環境をtmuxにも引き継いで欲しい,ということです.

ただ調べた限り,そのあたりの受け渡しは容易ではなさそうだったので,ディレクトリごとに環境変数を設定できるdirenvを使ってこれを実現することにしました.

今回の記事でできること

  • 特定のディレクトリに入ると,そのディレクトリに設定してある環境変数を読み込み,conda環境を自動でactivateする
  • そのディレクトリを出ると,conda環境がbaseに戻る
  • tmuxとかでpaneを区切ってもカレントディレクトリが変わらない設定をしていれば,conda環境は自動で引き継ぎactivateされる

やりかた

direnvをインストール

% curl -sfL https://direnv.net/install.sh | bash
% echo 'eval "$(direnv hook zsh)"' >> ~/.zshrc

$HOME/.direnvrcにconda activate関数を用意

conda環境名を引数に受け取り,activateする便利関数を用意しておきます.

% vi ~/.direnvrc
activate_conda(){
  eval "$(conda shell.zsh hook)"
  conda activate $1
}

環境を分けたいプロジェクトを作り,専用の.envrcを作成

ここにcondaの環境名を定義します(名前は適当です).

% conda create -n MyAwesomeEnv
% mkdir Awesome
% cd Awesome
% vi .envrc
export THIS_CONDA_ENV=MyAwesomeEnv
activate_conda $THIS_CONDA_ENV
% direnv allow .

ディレクトリの出入りでconda envが変わっていることを確認

ディレクトリの出入りで,自動でbaseとMyAwesomeEnvの環境が変わってるのがわかります.

% conda env list
# conda environments:
#
base                     /home/jonki/anaconda
MyAwesomeEnv          *  /home/jonki/anaconda/envs/MyAwesomeEnv

% cd ../
direnv: unloading
% conda env list
# conda environments:
#
base                  *  /home/jonki/anaconda
MyAwesomeEnv             /home/jonki/anaconda/envs/MyAwesomeEnv

% cd Awesome
direnv: loading ~/work/Awesome/.envrc
---activate_conda(MyAwesomeEnv)
direnv: export +CONDA_PREFIX_1 +THIS_CONDA_ENV ~CONDA_DEFAULT_ENV ~CONDA_PREFIX ~CONDA_PROMPT_MODIFIER ~CONDA_SHLVL ~PATH
% conda env list
# conda environments:
#
base                     /home/jonki/anaconda
MyAwesomeEnv          *  /home/jonki/anaconda/envs/MyAwesomeEnv

Enjoy!

もっと簡単な方法あるよ!って方はぜひ教えて下さい.

HMMとCRFの理解を整理した

系列データに対するDNN以前の技術として,HMMとCRFがある.しかし改めてこれらの技術を前にすると,それぞれの理解が怪しかったので,高村先生の名著をもう一度読んで復習した.

この本の解説を読んで,再度自分の頭の中でも整理しつつ(といってもほぼナゾッているだけなのだが),また忘れないように文書としておいた. それなりに途中式やコメントを丁寧に入れたつもりではある.ただ数式がそれなりに複雑なので式展開や説明が怪しい場合は,ガンガン指摘してもらえると嬉しい.

github.com

PU Learningについて勉強した

何がきっかけかは覚えていないのだが,Positive and Unlabeled Learningという学習方法があり,勉強したのでまとめた.

論文はこちら.2008年とやや古い.現時点での被引用数は606となっていた.

Learning Classifiers from Only Positive and Unlabeled Data

通常の2値分類問題では,通常は正例or負例のラベルが振られていることを前提とする. しかしPositive and Unlabeled Learningでは,負例のラベルが振られておらず,更に正例も一部しか振られていない状況である.つまりラベルなしデータは,正例と負例,どちらかの可能性となっている.下の図で言うところの,右上の青色(正例)以外の灰色の点は,ラベルなしという状況だ.

これを冒頭の論文の手法で解くと,右下のようにあら不思議,結構いい感じに識別できる.

数式の展開とサンプルプログラムは下記のリポジトリにまとめてある(PDFにまとめた).論文の完全なまとめではなく,一部を抽出したに過ぎないが,数式の展開や話の流れはある程度整理して書いた.基本的にはベイズの定理を使っているだけ.直接的にラベルを予想するのではなく,ラベルが振られているかどうか,に着目して式展開する,というのが本手法のアイデアとなっている.

github.com

勉強させていただいた情報

正例とラベル無しデータからの学習 (PU classification) | pillyshi's memo

論文読んだ「Learning Classifiers from Only Positive and Unlabeled Data」 - Speaker Deck

2019年に買ってよかったもの(日用品編・技術書編・ガジェット編・漫画編)

今年もこの時期が来ました.総決算です.今年は日用品編・技術書編・ガジェット編・漫画編の4段階です. www.jonki.net

日用品編

カモミールティー.これはずっと飲んでます.コーヒーは1日に1,2杯にしているので,基本的にはずっとこれ飲んでます.はちみつが入っているっぽく喉にも良い.特に癖はなく飲みやすいです.

会社で水を飲むために買いました.自販機行くとついつい炭酸とか買ってしまうのでこれで我慢.

今までずっと背の高い枕を使っていましたが,大○家具さんで枕の選び方を教えてもらい買いました(Amazonでw).寝るときの体の態勢はフラットになる方がよいらしく,私は今のベッドだとこの低めの枕がちょうど良かったです.

今まで足の土台が暖かくなるやつを使ってたんですが,冬場寒いのって膝とか割と上のほうだったのでこちらを購入.あまり推奨されてないと思うけどブランケットかけるとコタツみたいな暖かさになるので,冷え性にバッチリの商品でした.

無駄にル・クルーゼのコップ.蓋付きで可愛い感じの探してこれになりました.可愛いです.

今年からキャンプ生活を始めたのでスノーピークも自然に足を運ぶように.これは手のひらサイズに小さくなるので,バイクとかに入れて活躍してもらってます.意外と安っぽくなく,ものも結構入ります.そこはさすがにスノーピークさん.

これは割とベストバイ.トーストが好きなんですが,これを水に浸して入れると平凡なトースターが某高級メーカーのトースターに生まれ変わります.

水を無限に吸い取るスポンジ.バイクの洗車用に,キャンプのときのテントとか拭くように.

バックパックに求めるのは軽量さということに気づき,これに至りました.THULEバックパックの方がしっかりしてるけど,これは圧倒的に軽いので暫くはこれ使います.

除電ブラシは1個デスク周りにあるとこの時期安心.小さいのも買ってましたが,このサイズがちょうどよく使い勝手が良いです.

z-lightは実は2つ目です.最近ライトは温色が良いと思うようになり買い替え.z-lightはモノがしっかりしてて,安いやつとは作りが違います.

Z-LIGHT LEDデスクライト ブラック 調色機能付き Z-80NB

Z-LIGHT LEDデスクライト ブラック 調色機能付き Z-80NB

  • 発売日: 2017/10/15
  • メディア: ホーム&キッチン

はんだシュッ太郎.大量のハンダ間違いに気づいたあなたに最適な商品.

逆作用ピンセット.普通のピンセットと違い,力をかけないときに閉じるものです.表面実装したいあなたに画期的な商品.

技術書編

その名の通り,アルゴリズムが視覚化されてコンパクトに丁寧にまとまっています.アルゴリズムって視覚的なイメージが大切なんで,長々と言葉で説明されるよりも,わかりやすい図で一発なんですよね,ってのがこの本でよくわかります.基本的なことしか取り上げてないけど,マージソートダイクストラ,ハッシュ,LinkedList,公開鍵暗号方式,とか怪しかったら買っといてもいいかも.私もアルゴリズム忘れるたびにこれ見直します.

形態素解析器書いてから,文字コード周りの知識がほぼないことに気づいて買いました.文字集合・符号化まわりに関して,歴史から始まるので使用の変遷や仕組みを知れて読んでて楽しいです.その分ボリューミーなので読み応えがあります.

[改訂新版]プログラマのための文字コード技術入門 (WEB+DB PRESS plusシリーズ)

[改訂新版]プログラマのための文字コード技術入門 (WEB+DB PRESS plusシリーズ)

マスタリングTCP/IP.実は学部生のときの輪読本.久しぶりに読んでもやっぱり神本でした.物理層からアプリ層まで丁寧かつ完結に書いています.インターネットがどのように成り立っているのか,よくわかっていない方は見ると良いかも.

コンピュータの構成と設計.通称パタヘネ本.Kindleで上下巻セット売ってるので買っておきましょう.ただ紙媒体の方が複数ページ見ながら課題とか取り組めるので良いかも.ただ持ち運ぶ重さではないので,私は紙と電子版,両方買いました.

情報理論 Math&Science.情報理論の理解が怪しかったので読みました.まだ最初しか読めてませんが,導出がめちゃくちゃ丁寧.

情報理論 Math&Science (ちくま学芸文庫)

情報理論 Math&Science (ちくま学芸文庫)

昨今,クラウドソーシング使うことも増えてきたので読みました.ワーカーをどう評価するか?などいろいろな事例があり参考になります.

Googleの方がツイートしてたので読みました.割と新し目の本なので,最近のDNNな手法も結構トピックとして取り上げられているのが特徴的.

Introduction to Natural Language Processing (Adaptive Computation and Machine Learning series)

Introduction to Natural Language Processing (Adaptive Computation and Machine Learning series)

  • 作者:Jacob Eisenstein
  • 出版社/メーカー: The MIT Press
  • 発売日: 2019/10/01
  • メディア: ハードカバー

こちらもGoogleの方が学校に寄付するという形で話題になっていた本です.ドイツ版の数学ガールという感じで,レナという中学生?の女の子とレナのパソコンに入っているAIビムとのグラフ理論を学ぶ本です.数学ガールと同じで我々(レナ側)の考え方に対してAIビムがコメント・解説していくスタイルです.中盤ぐらいまでは良いのですが,後半は普通に難しかったです.ただグラフ理論が実世界でどのような場面で役に立つか,中学生が興味を持てるように物語が展開していくので読み物として面白いです.残念ながら絶版ぽいです.私も古本で入手しました.

最短経路の本 レナのふしぎな数学の旅

最短経路の本 レナのふしぎな数学の旅

30講シリーズ.これは会社の後輩に教えてもらいました.いろいろなシリーズが30講となっていてどのトピックも評判が良いです.レナ本もそうなんですが,講がちゃんと分かれていると1日3講すすめる,みたいな読み方ができるので私の性格にあっていると気づきました.

線形代数30講 (数学30講シリーズ)

線形代数30講 (数学30講シリーズ)

  • 作者:志賀 浩二
  • 出版社/メーカー: 朝倉書店
  • 発売日: 1988/03/01
  • メディア: 単行本
固有値問題30講 (数学30講シリーズ)

固有値問題30講 (数学30講シリーズ)

  • 作者:志賀 浩二
  • 出版社/メーカー: 朝倉書店
  • 発売日: 1991/05/01
  • メディア: 単行本

CPUの作り方.パタヘネ本読むのもいいけど,DIYで作るのも良いよ.

CPUの創りかた

CPUの創りかた

形態素解析本.自然言語処理Advent Calendarでもこちらの本を使って記事を書きました形態素解析興味なくても辞書引きとか最小コスト法のとこだけでも読むと楽しいよ.

形態素解析の理論と実装 (実践・自然言語処理シリーズ)

形態素解析の理論と実装 (実践・自然言語処理シリーズ)

ガジェット編

Anker 30Wの2つ.黒いスリムタイプのほうが若干軽いですが,両方小さくてかなり良い.持ち運びはこのサイズが最善ではないだろうか.

Qi充電したいけど,手を引っ掛けるところもほしい!と思った私にぴったりだったこの商品.金属使ってないのでQi充電できます.

MOMO STICK スマートフォン マルチバンド [正規品] デニム (ネイビー)

MOMO STICK スマートフォン マルチバンド [正規品] デニム (ネイビー)

  • 出版社/メーカー: モモディズジャパン
  • メディア: エレクトロニクス

Kindle OasisOasisは初代持っていましたが,防水ということで乗り換え.画面が大きくなったので技術書なども結構読めるようになりました.

Kindle Oasis 色調調節ライト搭載 Wi-Fi 32GB 電子書籍リーダー

Kindle Oasis 色調調節ライト搭載 Wi-Fi 32GB 電子書籍リーダー

  • 発売日: 2019/07/24
  • メディア: エレクトロニクス

この夏,キャンプに持っていって扇風機にもなるし充電器にもなるということで大活躍でした.

こちらもキャンプで大活躍でしたが,被災時とかにもモバイルバッテリー兼ライトになるので,1台ぐらい持っていても良いと思う.

初の骨伝導イヤホン.Amazon骨伝導はたくさんありますが,まともなブランドがAftershokzぐらいしかなかったので,最新作であるAeropex買いました.めっちゃ軽いし,耳穴塞がないので良いです.イメージとしてはカフェで音楽が流れている状態をどこにでも持ち出せる感じですね.音質云々というよりはBGMという感じ.家で嫁が何か勉強とかしてるときに,自分はこれつけて本を読んでたりします.

旅行用に買いました.これ買ったと人に言うとSwitch持ってるのに必要?と言われるのですが,まじでLiteいいから.ベッドでゴロゴロするのに最適なサイズ&重量です.

Nintendo Switch Lite ターコイズ

Nintendo Switch Lite ターコイズ

  • 作者:
  • 出版社/メーカー: 任天堂
  • 発売日: 2019/09/20
  • メディア: Video Game

今流行のRing fitじゃない方です.Ring fit買えなくてこっち.早見沙織大塚明夫がトレーナーになって一緒にボクシングしてくれます.ボクシングでビートマニアする感じですね.普通に息が切れるぐらい激しい運動ができます.

Fit Boxing (フィットボクシング) -Switch

Fit Boxing (フィットボクシング) -Switch

  • 作者:
  • 出版社/メーカー: イマジニア
  • 発売日: 2018/12/20
  • メディア: Video Game

お風呂でもiPad使いたい!ということで買いました.ジップロックなどとことなり袋でタッチがシャワシャワにならないのが気に入ってます.ただその分,ケースガッチリしてるので,ケースのつけ外しは頻繁にしない想定になると思います.

ECLIPSE CREAT .Macbookを置くために買った台.無駄に高いですが,質感とデザインが良いので気に入ってます.

ディスプレイに引っ掛けて軽い物置にしています.私はティッシュペーパーとか小物など置いてます.非常に便利.

キングジム 棚 ディスプレイボード 黒 DB-500クロ

キングジム 棚 ディスプレイボード 黒 DB-500クロ

  • 発売日: 2016/03/24
  • メディア: オフィス用品

漫画編

Rebuildfmで取り上げられていて読んだ本.完全に同世代なので色々共感しながら読めました.若干,後半が雑な印象がなくもないが,普通に楽しい.

岡崎に捧ぐ(1) (コミックス単行本)

岡崎に捧ぐ(1) (コミックス単行本)

とうとうアニメ化が発表されました.アニメ化などは鬼滅などが先んじていますが,個人的には今ジャンプで一番おもしろいです.幽遊白書とかブリーチの初期とかと比べても遜色ないぐらいに面白いので買って.

呪術廻戦 1 (ジャンプコミックスDIGITAL)

呪術廻戦 1 (ジャンプコミックスDIGITAL)

一流の殺し屋が日常生活をしつつも色々事件に巻き込まれていく物語なんですが,シリアスとコミカルが絶妙にマッチしていて面白い.不良・ヤクザものが苦手な人でも好きになるかも.騙されたと思って1冊買ってみて.

ザ・ファブル(1) (ヤングマガジンコミックス)

ザ・ファブル(1) (ヤングマガジンコミックス)

以上です.それでは良いお年を〜.

arXivのComments情報をFeedlyに挿入するChrome拡張作った

タイトル下の緑色の文が挿入されたComments

arXivRSSを私はFeedlyで消費しています.しかし,arXivRSSには論文のCommentsフィールドが含まれていないので,"Accepted at ACL2020!"みたいな情報がRSSリーダー上で取得できません.そのため実際にそのページを開く必要があるのですが,あまり興味のない論文の場合,面倒です.

そこでarXivRSSの消化速度改善のために,このようなCommentsフィールドをFeedly上に無理やり挿入するChrome拡張を作りました.下記が動作イメージです.Feedlyでエントリを読んでいる際に,それがarXivの論文であれば,裏側でその論文のComments情報を取得し,貼り付けています(タイトル下の緑色の字の箇所がそれです)

via GIPHY

インストールはこちらから

chrome.google.com

また,以前に作ったarXiv用のChrome拡張はこちらの記事を参照のこと.

www.jonki.net