2016年 の振り返り

今年は本当に色々なことがありました。 人生でここまで色々なことやったのは初めてなのでまとめたかこうと思います。

今年のやったこと

  1. 言語処理学会に参加
  2. オフィスの引っ越し
  3. Chainer Meetup開催 * 2
  4. PyCon JP スタッフおよび参加
  5. レトリバの起業
  6. PFI→レトリバへの転籍
  7. DL勉強会の主催

言語処理学会に参加

言語処理学会第22回年次大会(NLP2016) @ 仙台 に行ってきました。学会に初めて参加をしましたし、自分の名前が載っている論文をみるとすごくうれしい気分になりました。COLING 2016 でも同様の内容の論文が採択されて、国際学会デビューもしました。本当にこのような体験をさせていただくことに感謝しています。

オフィスの引っ越し

事務所移転は人生でなかったので貴重な体験ができました。(1月にもまた移転が控えていますが...) 2回も移転に携われるのもないなと思います、

Chainer Meetup開催 * 2

Chainer のイベントは2回行いました。

PyCon JP スタッフおよび参加

カンファレンスの参加とスタッフを初めてやりました。本当に勉強させてもらいました。Chainerなどに活かせることはたくさんあると思いました。

レトリバの起業  PFI→レトリバへの転籍

これだけで一個ブログ書けそうなので、今回はあまり触れませんが、本当に大変でした。大変でした。 また、どこかで書こうと思います。

DL勉強会の主催

初めてDLの勉強会を主催しました。 eventdots.jp

1回で終わらないように続けていきたいと思います。

Twitterでみてみると

色々な人と話しながら、(oiwa-kunsanが一番多いっぽい) Chainerのことをつぶやいてたみたい

来年は

そういえば、旅行にいってない(仙台出張と大阪へのライブ参戦はあったけど)ので、来年こそは旅行に行きたいなと思います。 また、いままでやったことに華開けるよう努力を続けていきたいと思います。

微分を理解するために数列をやりなおす

本投稿は機械学習に必要な高校数学やり直しアドベントカレンダー Advent Calendar 2016の15日目です! 近年、機械学習が物凄く話題になっており、それに付随して数学を学ぼないとやばいという強迫観念にいます。

数学のやりなおし方法

同僚に数学科出身の人がいたので、相談したことがあってすごく感慨深い言葉がありました。 「学校数学は歴史である。小学校1年生で習うが一番古くて段々近代になる」

ということは、「中学からやり直してみよう!」と思い数学の本をぱらぱら読んでました。 中学は余裕だったのですが、数IAの数列で詰まってしまいました。。。 同僚曰く、「数列」ができないと微分にいけず、微分ができないと線形代数にいけないとのことなので、 数列を再勉強しています。(センター試験はBasicで受けたのを思い出した)

数列とは

Wikipediaによると

数学において数列(すうれつ、英: numerical sequence)とは、数が列になったもの (sequence of numbers) を言う。

ちなみになぜ数列が必要かというと、

  • 微積分を行う上で「極限」理解する必要がある
  • 「極限」理解するためには数列が必要

ということらしい。

等差数列

任意の自然数 n に対して、隣り合う 2 項 an と an + 1 の差が一定のものを等差数列または算術数列という。その一定である二項間の差を公差という。

初項 1、公差 2の場合

1,3, 5, 7, 9, 11, 13, ...

となる

等差数列の和の計算

等差数列の和の計算は以下のようになる

初めの数+公差×(N-1)

初めの数が5、公差が7の等差数列の場合

5+7×(85-1)
=5+7×84
=5+588
=593

となる

等比数列

任意の自然数 n に対して、隣り合う 2 項 an と an + 1 の比が一定のものを等比数列または幾何数列という。その任意の 2 項間で一定となる比を公比という。

初項 1、公比 2の場合

1, 2, 4, 8, 16, 32, ...

となる

等比数列の和の計算

f:id:hidetomasuoka:20161231221013p:plain

例)「公比が-3・a3=9」となる等比数列をanを用いて一般のnについての式で表しなさい。

公比が-3なので an = ?・(-3)n の形 a3=9になるように?の値を考えると an = (-3)n-1  となる

感想

等差数列はわかるけど、等比数列の計算ミスが多かったのを思い出した。 来年はもうすこし突っ込んだ内容をができるようにしたいと思います。

参考文献

高校/受験数学~数列の覚え方と基礎:ビジュアル数学(数学B:数列)

Amazon CAPTCHA

数列 - Wikipedia

mathtrain.jp

Chainer Meetupなどのイベント活動報告

Chainer Advent Calender 4日目です。)

私が担当した以下のChainer関係のイベントについて記載したいと思います。

  • Chainer 公式イベント
  • PyCon JP 2016 の招待講演

Chainer 公式イベント

ChainerチームとしてChainer Meetupというイベントを行っております。 過去4回行いました。 (#02 のときは忙しくてブログを書く余裕がなく....) 4半期に1回イベントを行い、ユーザーの方との接点をもつことをテーマにおいて行いました。

Chainer Meetup #0 を開催しました。 | Preferred Research

Chainer Meetup #01 を開催しました | Preferred Research

Chainer Meetup #02 - connpass

Chainer MeetUP #03 を開催しました | Preferred Research

Chainer イベントの構成

Chainerのイベントは以下の構成でやっておりました。

  • 開発陣
    • Chainer,Cupyとは?
    • Chainerのアップデートについて
    • 特別セクション
  • 招待講演
    • 研究者
    • 企業・サービスエンジニア
  • スポンサーセッション
  • LT

招待講演者、LTの方々について改めてお礼を申し上げます。 また、毎回ドーナツを提供いただくNVIDIAさま、藤山さんもありがとうございます。

PyCon JP 2016 の招待講演

Chainerチームのだれかと雑談をしてたときに、「PyCon JP 出たいよね!」という会話から スタッフになり、招待講演の担当となりました。この件はどこかでブログを書こうと思います。

こちらが当日の得居さんの発表およびレポートです

pycon.jp

gihyo.jp

アンケートを読みましたが、かなり高い評価も頂き担当者として、とても満足いく結果になりました。

今後のイベントについて

Chainerのメンバーと色々議論する中で、現在のmeetupの形式だと様々な人を対象にしているため、 すべてのコンテンツを満足してもらうことは難しいという結論になりました。

そのため今後は、以下の3つのような切り分けにできればいいなと考えております。
(あくまで筆者の考えであり、Chainerのcommunityの見解ではありません)

  1. ChainerやCupyのコアに対してPRを送るような人
  2. 上記の人ほどではないが、Chainerを使って開発をしている人
  3. DeepLearningをこれから勉強したいひと、コードは書かないけど事例を知りたい人

いままで行っていたChainer Meetupを 2. のような位置づけに、
1. は、もっとクローズに行いたいなと考えています。

3 については、Chainer communityではなく、筆者個人のイベントとしてやろうと考えています。 その第一弾として以下を企画しました! ぜひご参加いただければと思います。

eventdots.jp

また、引き続きChainerのイベントについては、こちらから発信する予定ですので、 フォローをお願いします!

chainer.connpass.com

Chainer Meetup #03 を行いました

7/2(土)にChainer Meetup #03を行いました!

Chainerとは?

Chainerはディープラーニング用に開発されたオープンソースフレームワークです。Pythonで動作し、実行にはCUDAが使われるため、NvidiaGPUが必要です。Chainerは複雑なグラフ構造を持つニューラルネットワークを自由に構築し、高速に動作することができます。

Chainer Meetupでの資料(7/5時点で公開されてるもの)

Chainer, CuPy入門 @unnonouno

www.slideshare.net

Chainer Update v1.8.0 -> v1.10.0+ @beam2d

www.slideshare.net

シンパーセプション研究におけるChainer活用事例 @n_hidekey

www.slideshare.net

Chainerを使って細胞を数えてみた @samacoba

www.slideshare.net

ヤフー音声認識サービスでのディープラーニングGPU利用事例

資料公開待ち

NVIDIA更新情報: Tesla P100 PCIe/cuDNN 5. NVIDIA 井﨑さん

www.slideshare.net

俺のtensorが全然flowしないのでみんなchainer使おう @hidesuke

www.slideshare.net

深層学習ライブラリの環境問題 @yutakashino

www.slideshare.net

Peephole connectionsを実装してChainerのcontributorになった話 @Kotaro_Setoyama

www.slideshare.net

Chainerを使って白黒アニメの彩色実験をしてみた @Eiji_Kb

Real-Time Style Transferについて @_mayfa

www.slideshare.net

On the benchmark of Chainer @delta2323_

www.slideshare.net

ドーナツスポンサー

今回も エヌビディア合同株式会社様に、ドーナツスポンサーになって頂きました!

毎回準備していただく @yukofujiさんには感謝しております!

次回は

次回は10月ぐらいにできたらいいなーと思っています!

NVIDIA Deep Learning Day@高田馬場

NVIDIA Deep Learning Day@高田馬場に行ってきました
http://www.nvidia.co.jp/object/event-jp.html?id=280

NVIDIA Deep Learning Institute

エヌビディアが加速するディープラーニング~進化するニューラルネットワークとその開発方法について~」

(村上さん)

  • 【概要】ディープラーニングは近年、画像認識の分野で、その高い認識精度から大変注目を集めている技術です。音声認識や自動運転など画像認識の分野以外への応用が進んでおり大変期待されています。本セッションは、日々新しい構造のモデルが提案され進化しているディープラーニングの概要とGPUが必要とされている理由について簡単に説明します。 その後に、実際にディープラーニングの開発のイメージを持って戴けるように、いくつかの代表的なディープラーニングのフレームワークを使い、デモしながら各フレームワークの特徴を解説します。ディープラーニングの最新の状況が知りたい、実際の開発の際にどのフレームワークを使うべきか知りたい、開発を始める前に開発のイメージを持ちたいという方に最適です。

  • http://images.nvidia.com/content/APAC/events/deep-learning-day-2016-jp/NV-DL-Murakami-Session.pdf

内容

NVIDIA Deep Learning SDK を利用した画像認識」

(森野さん)

  • 【概要】ディープラーニング SDKコンポーネントの役割を説明し、ディープラーニング SDK を利用した Inference アプリケーションを画像認識の例を用いてご紹介します。

http://images.nvidia.com/content/APAC/events/deep-learning-day-2016-jp/NV-DL-Morino-Session.pdf

GTC 2016 基調講演からディープラーニング関連情報のご紹介

IBM

  • Watosonについて
    • 質問応答技術を使って、クイズ番組にチャレンジした
  • なぜこのような技術が必要なのか?
    • 情報の爆発
      • 医者は5時間ぐらいしか勉強する時間がないが、130時間ぐらいないと最新に技術をキャッチアップできない
  • どうやって構築してるか?
    • Bluemix
  • 応用先
    • ECサイトで対話をして、感情分析をしrecommendを行っている。
  • Watsin Robotics
    • プロフィールから感情を、会話から目的等を得ることで、より人間ぽい会話ができるようになる
  • IBM watsonでは、GPUを使っている。
    • GPUを使うことで8.5倍ほどはやく計算できるようになった
  • IBMの次期サーバーをつくった(pascalを使った)

    TOYOTA Research

  • 世界では120万人/年、交通事故で亡くなっている
  • 消費電力をもっと減らせるはず
  • TOYOTAの4つの
    • safety
    • Environment
    • Mobility for all
    • Fun to Drive
  • 研究所を作る
  • ソリューションも作っている

    NVIDIA

  • 2015-2016は大きな年だった
    • GTC2015は100人ぐらいしかいなかったのは、2016では、1200人程度になった。
    • image net 、バークレイロボット、ポップカルチャーへの影響があった
  • 従来のCV
    • 専門家のチューニングをしてた
  • DL
    • 一般な手法でいける
  • モダンAIの地平

f:id:hidetomasuoka:20160427211429p:plain

  • ベンチャー企業どんどん作ってる
    • PFN等大企業とコラボをしている
    • スピード感が変わっている
    • 50兆円の市場創出
  • 電力効率がよいGPUであり、色々な会社で使われている。
  • TESLA P100
    • 効率的な商品電力ではやく計算できる
    • 演算性能が3倍になり、3倍のメモリバンド
  • DGX-1 は、DL用のサーバー
  • Chainer等をすぐに使える
  • 学習時間が通常の1/75で計算できる(150時間→2時間)
  • セルフドライビング
    • NVIDIA DRIVE PX パーセプション
      • Driveネットに提供をしている。いろんな方法を使って欲しい
  • BBNET
    • 従来とはちがうやり方で行っている。
  • ロボレース
  • GTC JAPAN 2016開催決定
    • 2016/10/5@ヒルトンお台場

GTC リピートセッション

ここから下のセッションは業務都合により参加できず

Heterogeneous Learning for Multi-task Facial Analysis Using Single Deep Convolutional Network

www.slideshare.net

Chart Pattern Matching in Financial Trading Using RNN

資料なし

Chainer: A Powerful, Flexible, and Intuitive Deep Learning Framework

www.slideshare.net

www.slideshare.net

感想

Oracle Cloud daysなど遜色のない人と期待感もてる会だったと感じたい 今回のドーナツはポンデリングもあってよかった!

f:id:hidetomasuoka:20160427211618j:plainf:id:hidetomasuoka:20160427211616j:plain

NEologd Casual Talksに行ってきた

NEologd Casual Talksに行ってきました。

connpass.com

@eichiroi 先生と一緒に書いたメモをブログにまとめました

NEologdをどう使うと便利なのか ークエリ拡張 or 検索ソート順における活用(@Quasi_quant2010)

www.slideshare.net

概要

計算を補正する言語支援としての利用例

  • 使用用途
  • クエリサジェストにおける前処理エラーを補正
    • アシックスサージールをアシックスターサージルに変換したい
  • 対処法
    • NElogd辞書にあればを使う
      • Neologdがあることでサージール→ターサージールに補完できた
    • suggst結果の複合語を補正
      • 切れすぎてしまった複合名詞をくっつける
      • 「サッカー シューズ」を「サッカーシューズ」に
  • 背景
    • 複合名詞を細かく分割する方針がある
    • 複合名詞の補正Sourceとして使う
  • NELOGDで使って実現したいこと
    • userの検索意図を保ちつつ検索漏れを防ぐ
    • Indexingのときにクエリ拡張する
  • 単純に分かち書きしたものだけでなく、くっつけた長い単語(複合名詞とか)もインデックスに追加する
  • 検索意図を保存するための一つの手段
  • 固有表現を加味した分かち書きをする
    • クエリ拡張とN-bestも併用

前処理用Pythonモジュールneologdnの紹介(@_yukinoi)

  • テキストの前処理とは
    • 見た目が一緒でもコンピュータは違う文字列と判別する
    • テキストの処理がしやすいようにテキストを一定のルールに基づいて整えること
    • 半角カナを全角に
    • 「うぇーーーーい」と「うぇーい」
  • 前処理やってないと
  • nelogdn

質問

  • 今後どういう単語をとれるようにしたいか?
    • 同じ文字の繰り返しで2文字単位のもの、例えば「オラオラオラオラ」を正規化

ファッションを扱うサービスのために、Elasticsearchのユーザー辞書とシノニム辞書を作った話(@sinamon129)

speakerdeck.com

  • Fablicのサーバーサイドエンジニア
  • フリルの検索改善のためにESとuser辞書とシノニム辞書を使った
    • 検索の50%ぐらいがキーワード単体の検索(+絞り込み)
  • 検索パターン
    • userが自由に書く
      • タイトル・商品説明
      • 形態・形状・セールスポイント
      • 略称、表記ゆれあり
    • マスターデータ系
      • カテゴリ
      • ブランド
  • 検索キーワード
    • 表記間違いや省略した単語が結構ある
  • インデックス方式
    • unigaram
      • 再現率高いが適合率が低い
      • 利点
        • ワンピで検索してもワンピースがでる
        • あてはあるものができる限り出力される
      • NG
        • ファーでローファーがひっかかる
  • unigram->kurokojiへ
  • 移行OK要件
    • ヒット件数が大幅に減らなければOK
    • ヒットしてもダメなモノが消えるのはOK
    • unigramでとれなくなったものもある
  • 本番DBでUnigramとkuromoji+辞書で違いを調べてみた
    • 問題点
      • ふりがなのついたファッションデータがなかった
        • 自社でもってるブランドmasterを追加
        • 自社の検索ログ+neologdで分解した
          • uniGRAMで出来た部分を優先して作った
  • 上位概念と下位概念を整理したい
    • サンダルという名前がつく履き物とで香料もあるので、それはわけたい
  • 検索数が多いモノは類義語辞書で対応
    • ブランドは揺れの登録はしない
  • キーワードサジェスト機能を使う
  • 課題
    • 辞書の作り方の情報がない
    • 試行錯誤・断片的な情報しかない。。。
    • できるだけ検索の利便性を高くして、作業コストが低い方法vs 資源としての正しさ
    • なにが正しいのか
      • 検索のための辞書じゃなくて、サービスが言語知見を知りたい

質問

  • どうやって再現率を確認したか
    • 数千件のクエリを投げて確認をした
  • フィードバックがあったか?
    • わからない。まぜらフリマアプリだから..
  • 辞書のメンテナンスはどうやってるか?
    • 定期的に検索ヒットの0件のキーワードを足して対応する
    • はやりもんがあれば足す
    • 週1〜2回
  • 追加した辞書で特に効果的だったと思ったものは何か
    • 今まで2回検索しないといけなかったようなものがなくなった

知識を紡ぐための言語処理と、そのための言語資源(@conditional)

www.slideshare.net

NEologd が2016年末までにやること(@overlast)

  • 渋谷ヒカリエ
    • 形態素区切り結果
    • もう1回UniDicで解析し直す
  • mecab-ipadic-neologd新機能

    • カラム拡張
    • 形態素解析後、一番後ろにunidicの結果を出す
    • UnidiDicでの分割結果を足す
    • キーワード抽出した結果を足す
    • 位置情報をたしたり、wikificationの結果を足したりもできる
    • カラム拡張ができることでプラグインのように使えるようになる
  • 定量的な評価やっているの?

    • 文書分類タスクで確認
      • yahoo newsの大小カテゴリ分類
    • 結果
      • IPA辞書、UniDicのベスト結果を上回る
      • 文書分類では副作用はない
  • mecab-ipadic-neologd(みんなでできるようにすること)

    • 動詞エントリ拡張
    • 略語エントリの追加
    • 新語の追加

最後に

実は弊社の製品であるSedue ExtractorにもNEologdは使われております。 LTもしたかったのですが、資料の準備等できなくて、、、 次回はなにか話せたらなと....

Chainerのユーザーが集まるをSlack Teamを作成した

Chainerのユーザーが集まるSlack Teamを作成しました。以下のページから参加できます。 (Chainer Meetup時に勢いで作りました)

Join us on Slack!

なぜ作ろうと思ったか?

作ろうとおもったきかっけ

Chainerのイベントを行っていると以下のようなコメントをもらうことがあります。

  • Sampleコードが欲しい
  • 日本語のdocumentが欲しい
  • もっとイベントをやってほしい
  • もっと機能を充実して欲しい 等々

ただ、Chainerの開発チームの状況を考えると要望に答えるのは難しいなーと感じていました。
また、この中で開発陣以外の人を巻き込んでできるではないかなと感じていました。

開発陣がやったほうがいいこととユーザーがやったほうがいいことが有るのではないかと考える

自分がSIerにいたり、プリセールスのエンジニアとして働いて経験があるかもしれないが、
開発(Development)と導入・運用(DeliveryとOperation)を行う人は違うべきだとおもうなーとずっと思っていた。

開発エンジニアがやったほうがいいこと

やはりソフトウェアの開発に注力するべきかなと思います。もちろん使いやすさも大事ですが、一番大切なのは 「コアの部分をしっかりつくる」 事だと思います。(もちろんエラーログが見やすさとか、ドキュメント更新はもちろん大切です)
特にChainerの開発には、Deep Learningの知識や、CUDAの知識が必要となります。その辺を集中して開発できるようにすべきかなと感じています。
他のソフトウェアにないものやあってしかるべきモノがあるといいなと思っている。

導入・運用エンジニアがやったほうがいいこと

ノウハウをためること。使いやすくすることだと思っています。
便利ツールとか、サンプルコードとかは、実際に使っている人ができる限り集めるといいと思います。
実際にOracle、SAP、MSとかですら、実際に使ってもらわないとノウハウは貯まらないし、出たばっかりの製品は微妙だし、ノウハウがなく使いこなせないことが多いと感じてます。
そのようなノウハウをつくる基盤をつくれればいいなーと勝手に思っています。

どういう方針でやろうと思っているか?

深層学習の黎明期であるいま、ノウハウがあるコミュニティが強いと思っています。そのノウハウを共有し、大きな組織にして行きたいと思います。 イメージとしては、Amazon Web ServiceとJapan Aws User Group(JAWS)みたいな関係を築いていけるといいなと思っています。 (あくまで目指しているだけなので、うまくいくかどうかわからない。。。)

今後どういう話をしていくか?

具体的には決めていないですが、以下のことをやりたいなーと思っています。

  • Chainerのdocumentの翻訳
  • Meetup等のイベントの開催
  • Sampleや事例のまとめサイト作成

なにか意見等あれば、Slackでいただければと思いますmm