怪我をしても歩ける6足歩行ロボットの学習

KumeAyaka

2015-08-31 17:34:43

こんにちは。コロンビア大学の久米です。7月からの2ヶ月間、ロボットと機械学習をテーマにインターンをしました。この記事は先日、ustreamで発表した内容のダイジェスト版となっています。

インターンでは、6本脚ロボットが脚を失ってもすぐに新しい歩き方を学習する方法の実装を行いました。具体的にいうと、Natureで2015年に発表された、Robots that can adapt like animals(PDF)の再現実験です。ロボットの組み立て、シミュレーション(事前学習)、手法の実装、実験をしました。

下の動画を御覧ください。6本脚ロボットは、6本の脚を使って歩行します。左側の動きが通常時の動き方です。歩行中、脚を一部失ってしまうこともありえます(下の写真)。そうすると右側の動画のように同じように脚を動かすだけでは、前向きに歩くことができなくなってしまいます。

今までの方法では、ロボットが脚を損失した状態で前進する歩き方を見つけるためには、事前に色々な状況に対して歩き方を設定しておくか、学習するとすればたくさんの時間がかかっていました(強化学習など)。
提案手法では、脚がなくなってしまっても数回から数十回程度の試行で前進する方法を発見することができます。下の方に結果を掲載していますが、実際に実験してみると、1本脚の先がなくなったり、2本の脚が動かなくなっても、5種類の歩き方を試しただけで前進の方法を発見しました。

手法のコンセプトは次のような感じです。
まずは、健康な状態の時に色々な歩き方を試しておきます(事前学習)。上手く前進できなくなった時には、事前に覚えていた歩き方の中からいくつか試して、良い方法を発見します(Adaption step)。

propose

事前学習

実際の歩き方は36個のパラメーターを指定して決定するので、歩き方は膨大に存在します。
色々な状況に対処するためには、ただ良い歩き方を記憶するだけではなく、色々な状況に対して良い歩き方を記憶する必要があります。論文では「各脚の着地時間」をその指標にし、パフォーマンスのマップを作成しています。つまり、各脚の着地時間という6次元の値に対して、着地時間も5通りに離散化して、各脚0%,25%,50%,75%,100%に分類し、合計で15625通りの状況を想定します。

下の図が、このマップを2次元に表したもので、脚1と2の着地時間によって、大きい四角形の場所が決まり(左下ほど着地時間が少ない)、3と4の着地時間によって、各大きい四角形の中の小さな四角形の場所を決定、5と6については小さい四角形の中の場所を決定します。
各脚の着地時間に応じて場所が決定し、そこにパフォーマンスとパラメーターを記憶していきます。

map

jizeng

事前学習のやり方
  • 一つの歩き方を試す
  • 歩き方の距離(パフォーマンス)と各脚の着地時間(状況)について計測する
  • その状況の距離が今まで記録されていなければマップに記録する。記録されていても、今回の方がパフォーマンスが良ければ記録を上書き、悪ければこの歩き方は捨てる
  • 今までに記録されている歩き方を少し変化させて歩き方を試す(上に戻る)

何千万回もの試行が必要なため、事前学習は実機ではなくシミュレーション上で行います。

事前学習の結果

シミュレーションは、Open Dynamics Engine(ODE)という物理シミュレーターを使って行いました。

私は実際に 5188万4543回のシミュレーションを行って、マップを作成していきました。
Amazon AWSを使って並列実行し、10日間位で学習しました。

params
この図は、横軸がシミュレーション回数で、縦軸がマップの中で埋まったマスの個数です。
仮に全部埋まったとしたら15625マスですが、新しいパラメーターを既存のパラメーターから作っていくことと、動きようがない部分(0,0,0,0,0,0)なども存在するので全部は埋まりません。
result1

これらが、マップの途中経過です。回数の下の数字は最大値と平均値です。図は、最終マップの最大値を1(赤)とした時のそれぞれのマスのパフォーマンスを示しています。初めの1000万回くらいで、マップのマスの数自体は増えなくなりますが、パフォーマンスは向上しているのがわかります。

Adaption step

mboa4
実際にロボットが壊れてしまった時には、マップの中から新しい歩き方を試します。
その時には、今歩いている方法はあまり良くないので、それに似た歩き方を避けて、かつパフォーマンスが高そうな歩き方を探していきます。

mboa3
(論文より引用)

初めは壊れたロボットでの歩き方については、実際には試していないため確信度は全て最低レベルで、パフォーマンスは事前学習の時の値です。
一度実際に歩くと、マップ上で既に観測された歩き方に近い歩き方は、確信度が高くなっていき、それと同時にパフォーマンスも観測された値に応じて更新されていきます。マップの更新にはBaysian optimizationを使います。

実験結果

最後に、実験結果の動画です。

動画の見方

脚(6個の数字): 動画の歩き方において各脚がマップの中のどこにいるかを示しています。
各脚0-4までの数字。(着地時間 0%:0 25%:1 50%:2 75%:3 100%:4)

パフォーマンス:計測した値

期待MAX:更新されたパフォーマンスマップでの最高値

パフォーマンスマップの1.0は事前学習での最高値(0.17)。
色々な歩き方を試すうちにマップがどんどん下方修正されていきます。

確信度は青ほど低く、実測されると赤色になっていきます。

最後の方にでてくる相対的パフォーマンスマップというのが、ロボットがその時に持っているパフォーマンスマップの最大値を1としたときのパフォーマンスマップです。

このように、わずか数回の試行で、前進方法を学習することができました!2つ目の実験のように、実際には1回目で良い歩き方を発見した場合でもまずは、もっと良い歩き方がないか探します。調べているうちに全体のパフォーマンスが更新されていって、期待されるパフォーマンスが下がってきて、一回目の歩き方が良い歩き方だということが発覚します。

事前学習のシミュレーションの精度はどうしても完璧というわけにもいかないのですが、それでもこのように成果がでました。
この手法を用いれば、状況が変わった時に、改めて学習をするのではなく、理想的な状況(シミュレーション)にたいして学習を行えば、すぐに色々な状況に対処できるため、常に人間の監視下にいるわけではないロボットに対して応用できれば、突然の事故などに対応できると思います。

ICML2015読み会を開催しました

大野 健太
エンジニア

2015-08-31 08:31:28

大野です。夏も終わりますね。

先日8月20日に、株式会社ドワンゴ様のセミナールームにて、ICML2015読み会を開催いたしました。

トップレベルの会議に投稿された論文を真正面から紹介する勉強会でしたので、どの位の方々が興味を持つのか不安がありましたが、幸いにも前回のNIPS2014読み会に引き続き、100名近くの方に参加していただきました。休憩時間も含めて多くのディスカッションや質問がなされていたようです。懇親会にも40名近くの方々が参加していただきました、懇親会では、発表もしていただいた神嶌さんによるKDDの参加報告も行われました。

また、今回初めての試みとして、当日の様子をドワンゴ研究開発チャンネルにて生放送配信しました。私の予想をはるかに超えて、のべ1000名弱の方が来場したようです。ご視聴いただきありがとうございました。配信に関する感想なども今後の参考にさせていただきます。

参加者、発表者、視聴者の皆様のご協力で充実した勉強会になったと考えております。ご参加いただきありがとうございました。また、会場提供及び生放送配信をしていただいたドワンゴ様には改めてお礼を申し上げます。今回の勉強会を踏まえて、今後も機械学習の勉強会を継続して開催していきたいと考えておりますので、ご賛同・ご協力いただけると大変ありがたいです。

アンケート結果

続きを読む »

機械学習の経済学:クラウドはIoTの夢を見るか

hido
Chief Research Officer

2015-08-21 07:16:37

比戸です。夏の思い出、もう作りましたか?

今回はPreferred Networksのポジショントークをします。と言っても、ディープラーニングではなく、Internet of Thingsのほうです。

前回IoT関連のブログ「のび太とインターネット・オブ・シングス」を書いてから1年半弱、枯れたバズワードどころか、IoTはあらゆる業界を巻き込んだムーブメントになりつつあります。ちょうど昨日発表された、ガートナーの2015年度版ハイプサイクルでも、去年に続きハイプカーブの頂点に位置付けられていました。

IoTではコネクションとデバイスの管理、プロトコルの互換性、セキュリティについての議論が盛んですが、それは脇において、我々はいつも通りデータ解析の話をしたいと思います。 興味は「クラウドコンピューティングはIoT向けデータ解析でも唯一の主役となるのか?」です。 結論はずばり「そんなにうまくはいかないよ、特にインダストリアルな、機械学習頼みの応用ではね。」です(ほら、ポジショントークっぽくなってきた)。

続きを読む »

分散深層強化学習でロボット制御

mattya

2015-06-10 16:50:33

新入社員の松元です。はじめまして。

“分散深層強化学習”の技術デモを作成し、公開いたしました。ロボットカーが0から動作を学習していきます!
まずはこの動画を御覧ください。

以下で、動画の見どころと、使っている技術を紹介します。

動画の見どころ

Screen Shot 2015-06-10 at 1.09.41 PM
Car 0(○の付いている車)が右折カーブの手前で減速する様子(右画面の白いバーのところが、ブレーキのところで赤くなっている。ニューラルネットはブレーキが最も多く報酬が得られると推測していることがわかる)。速い速度ほど報酬は大きいが、カーブを曲がりきれず壁にぶつかってしまうので学習が進むとカーブ手前でのみ減速するようになる。

Screen Shot 2015-06-10 at 1.18.49 PM
目の前に車がいるときは一時停止して、いなくなってから加速する。
エチオピアには本当にこのような交差点があるらしい。

Screen Shot 2015-06-10 at 1.22.24 PM
ぎりぎりですれ違う2台。学習途中ではすれ違いきれずにぶつかって倒れてしまうこともある(早送りシーン中に人が写っているのは、倒れたり詰んだりするたびに起こしていたためです)。

この動画で使われている技術について少し解説をしたいと思います。

強化学習

このデモにおけるロボットは、強化学習という手法で学習しました。
よくあるロボットの制御では、ある状況でどの行動をとるべきかのルールを人間が作り、そのルールに従って制御を行ったり、ロボットの取るべき軌道を予め人間が設計しておいて、その目標とのズレが最小になるように制御を行います。しかし、あらゆるシチュエーションに対してとるべき行動を設計するのはとても大変です。それに、臨機応変に軌道を変更することができません。
そこで、強化学習では、目標とするロボットの最適な動きを正解として与える代わりに、ロボットの各行動に対して報酬を与えます。今回の課題では、道にそって速い速度で進んだときにプラスの報酬を、壁や他の車にぶつかったり、道を逆走したときにマイナスの報酬(罰)を与えています。
ロボットはどのように行動するとどれくらいの報酬が得られそうかを学習していき、最も多くの報酬が得られそうな行動を選択することで、結果的に最適な行動をとることができるという仕組みです。これによって、「障害物が何mの位置に来たら、ハンドルを何度に回す」みたいなルールを人間が設計しなくても、自然とそのような行動を獲得してくれるわけです。

センサー

ロボットはセンサーを使って自分の今の状態を認識します。
Screen Shot 2015-06-10 at 10.45.28 AM
このデモでは、車は周囲32方向に仮想的なセンサビームを飛ばしていて、壁、他車、道路の中心線までの距離と角度を取得しています(図のcar 0が出している黄色い線がビームを表している。正確には遠距離センサ16本と近距離センサ16本に分かれている)。現実の自動運転車に搭載されているレーザー距離センサーをイメージしています。
そのセンサ情報に現在速度とハンドル位置、直近3ステップの自車の行動を加えて、合わせて273個の数を入力として受け取ります。右上のグラフにそれが可視化されていますが、車はこの情報だけから、今どの行動(アクセル、ブレーキ、左右ハンドル、バック)を取るべきかを決定しなければなりません。このような多様かつ多数のセンサ情報をうまく統合して適切な判断を行う問題はセンサフュージョンと呼ばれていて、これからのスマートデバイスや機械制御などに必須となる技術と考えられています。

ちなみに、学習開始時点では、ロボットはどのセンサ入力が何の入力を表しているのか、どの行動がどういう結果をもたらすのかを全く分かっていない状態から始まります。人間は「壁との距離」とか「アクセル」とか言われればその意味を理解できますが、ロボットは、まずはそこから学んでいかないといけないというハードな問題設定です。

Q-learning

強化学習には様々なアルゴリズムがありますが、今回はQ-learning + ε-greedyというベーシックな手法を使いました。
Q-learningでは、ある状態sである行動aをとったときに、将来にわたってどのくらいの報酬が得られそうかを表す関数Q(s, a)を学習します。
もし、Qが完全にわかっていたなら、状態sで取るべき行動は次のようにして決定できます。
行動の候補a1, a2, …があったとして、Q(s, a1), Q(s, a2), …を求め、最もQが大きくなったaを選ぶ。
Q関数は将来に渡る報酬の期待値をあらわすので、その行動が最も多くの報酬を生むことになります。

しかし、学習の開始時点では、Q関数は全くわかっていません。そのような状況では、Qが最大になるaを選んだとしても、それが最適な行動である保証は全くありません。Q関数を学習するためには、いろいろなシチュエーションを体験して、ある行動がどのくらいの報酬に結びつくのかを学ぶ必要があります。そのために、最初はランダムに動いて経験を貯めます。ある程度学習が進むと、(学習中の)Q関数が最大になるような行動が、そこそこ良い行動を表すようになっていきます。
そこで、ある割合εでランダムな行動を、1-εでQが最大になるような行動を選択します。これをε-greedy法といいます。「基本的には現在把握している最善の行動をとって、ときどき違うことも試してみる」というイメージです。

Deep Reinforcement Learning

Q-learningは古くから使われている手法ですが、昔は小さいサイズの問題にしか適用できていませんでした。例えばロボットが直面する状態が100通りしかなくて、行動も5通りしかないとしたら、Q関数は、100*5の表を埋めていくことで学習できます。Q(s, a)は表のs行a列目になるわけです。
ここで、状態1番のときに行動3番をとったら、10点の報酬がもらえて、状態が20番に移ったとしましょう。このとき、Q(1, 3) (状態1で行動3をとったときに将来得られそうな報酬の期待値)は、10 + max{ Q(20, a) }と考えることができます。10は今得られた報酬で、max{ Q(20, a) }は次の状態20のときに、現在わかっている最善の行動をとったときに得られる将来の報酬期待値になります。そこで、Q関数をあらわす表の1行3列目の値を10 + max{ Q(20, a) }に近づけます。この操作を繰り返すことで、この表は次第に正しいQ(s, a)に近づいていきます。

さて、今回のロボットは273成分の入力を受け取ります。これがロボットの認識する状態になるわけですが、各センサの値が0か1だとしても、2^273 ~ 10の82乗もの状態数になります。Q関数を表で表すならこれだけの数の行数が必要になりますが、とても不可能です。

そこで、表を使う代わりに、状態sを与えたら各aに対するQ(s, a)を出力するようなニューラルネットワークを使います。近年のDeep Learning(深層学習)技術の発展により、画像データのような数万成分の入力から、数千成分の出力を出すような巨大なニューラルネットが学習可能になりました。強化学習分野にDeep Learningを適用して有名になったのが、DeepMind社の発表したAtariのゲームをプレイする”DQN”(Deep Q-Network)です。
参考:昨夏のインターンでDQNの再現と改良に取り組んだ。
http://www.ustream.tv/recorded/53153399

今回の問題では273成分から5成分への7層(273-600-400-200-100-50-5)のニューラルネットを用いました。図の左下の白と赤のバーが、ニューラルネットの出力したQ(s, a)になります。

Screen Shot 2015-06-10 at 12.57.37 PM

学習には、もちろん、昨日発表したあの、Chainerが使われています!!!Chainerサイコー!!

ニューラルネットが入力をどのように変換していくのかを解析することは容易でないですが、出現しない状態を見ないようにしたり、よく似た状態をひとまとめにするなどして効率的に情報処理を行っていると考えられます。この性質により、見たことがない状態に直面しても、そこそこ適切な答えを返すことが出来るという力(汎化能力)を持ちます。
動画中で突然現れた障害物にも対応できているのは、この能力のおかげと言えます。
Screen Shot 2015-06-10 at 1.29.09 PM
四角い小さな障害物がランダムに存在していた環境で学習したら、丸い大きな障害物が突然現れる環境にも汎化して適応することが出来る。

Deep Learning のフレームワーク Chainer を公開しました

beam2d
リサーチャー

2015-06-09 15:09:35

こんにちは、得居です。最近は毎晩イカになって戦場を駆けまわっています。

本日、Deep Learning の新しいフレームワークである Chainer を公開しました。

Chainer 公式サイト
GitHub – pfnet/chainer
Chainer Documentation

Chainer は、ニューラルネットを誤差逆伝播法で学習するためのフレームワークです。以下のような特徴を持っています。

  • Python のライブラリとして提供(要 Python 2.7+)
  • あらゆるニューラルネットの構造に柔軟に対応
  • 動的な計算グラフ構築による直感的なコード
  • GPU をサポートし、複数 GPU をつかった学習も直感的に記述可能

ニューラルネットをどのように書けるか

次のコードは多層パーセプトロンの勾配を計算する例です。

from chainer import FunctionSet, Variable
import chainer.functions as F

# 多層パーセプトロンの定義
model = FunctionSet(l1=F.Linear( 784, 1000),
                    l2=F.Linear(1000, 1000),
                    l3=F.Linear(1000, 10))
def forward(x_data, y_data):
    x, t = Variable(x_data), Variable(y_data)
    h1 = F.relu(model.l1(x))
    h2 = F.relu(model.l2(h1))
    y  = model.l3(h2)
    return F.softmax_cross_entropy(y, t)

# 勾配計算
x_data, y_data = ...            # ミニバッチを初期化
loss = forward(x_data, y_data)  # 順伝播
loss.backward()                 # 逆伝播

ここで x_datay_data はともに NumPy または PyCUDA の配列です。順伝播の処理をそのまま書けば、あとは最終的な結果に対して backward 関数を実行することで、それまでに行った処理と逆順で誤差逆伝播が実行されます。この例はもっとも単純な例なので現れませんでしたが、順伝播の処理には分岐やループなど Python の制御構造を自由に含めることができます。

なぜ今新しいフレームワーク?

Deep Learning のフレームワークとしては Caffe, Theano/Pylearn2, Torch7 の 3 つが人気です。これらはフィードフォワードなネットワークを書くことが基本的な目標として開発されています。ですが、最近では Deep Learning の進展に伴い、より複雑なネットワークを柔軟に書けることの必要性が高まっています。そこで、この中でも特に自由度が高い Theano をベースに、新しいフレームワークがたくさん模索されています(例:Blocks, Keras, Lasagne, deepy など)。

これらのフレームワークを含め、既存の実装のほとんどは、一度ニューラルネット全体の構造をメモリ上に展開して、その処理を順に見てその通りに順伝播・逆伝播を実行するというアプローチを取っています。これは、独自のミニ言語に対するインタープリタを実装しているようなものです。例えば Caffe ならば Protocol Buffer で定義されたスキーマがミニ言語に対応します。Torch7 の場合には、コンテナと呼ばれる特殊なモジュールが制御構造の役割を果たします。Theano はより柔軟な定義が可能ですが、ループを書くために scan と呼ばれる特殊な機能を使います。このアプローチにおいて、より複雑な計算フローをサポートしようと思ったら、基本的にはこのミニ言語を拡充していく必要があり、学習コストや記述コストは高くなっていきます。基本的には今後、ニューラルネットの構造はさらに複雑化していくことを考えると、この展開は好ましくありません。

Chainer はこれとは異なるアプローチを取ります。Python をベースとしていますが、Theano は使いません。制御構造はすべて Python のものがそのままつかえます。Chainer は、実際に Python のコードを用いて入力配列に何の処理が適用されたかだけを記憶しておき、それを誤差逆伝播の実行に使います。このアプローチは、複雑化していく Deep Learning の研究・開発速度を保つために必要だと考えており、私たちが新しいフレームワークの開発に乗り出した理由です。

使い方

ドキュメントも同時に公開しました。チュートリアルとリファレンスを提供しています。チュートリアルでは、基本的な多層パーセプトロンの書き方から、リカレントネットの書き方、GPGPU の利用法などを紹介しています。今のところドキュメントはすべて英語のみとなっていますが、要望が大きければ日本語への翻訳も検討します。

また、公式リポジトリ内の examples ディレクトリの中にサンプルがいくつか入っています。こちらは、実際にデータの読み込みから学習までを Chainer で書く方法を知るのに適しています。

質問やバグ報告

Chainer はまだ公開されたばかりのフレームワークで、機能面ではまだまだ足りない部分もあります。PFI/PFN の Chainer 開発チームでは、これから継続的に開発を行い、定期的に新しいバージョンをリリースしていく予定です。プルリクエストも受け付けます(今のところ Contribution Guide のような文書はありませんが、今後用意する予定です)。

使用法やバグについての報告も随時受け付けます。使用法の質問については、Google Groupsを開設しましたので、こちらに投稿してください。また、バグの報告や修正については、GitHub の Issue やプルリクエストを登録していただければと思います。GitHub のアカウントをお持ちでない場合は、Google Groups へ投稿していただいても構いませんし、Twitter アカウント (@ChainerOfficial)にメンションを送って頂いても対応可能です。

オンライン機械学習(機械学習プロフェッショナルシリーズ第1期)発売のお知らせ

preferred

2015-04-06 19:01:44

お久しぶりです。徳永です。

講談社からオンライン機械学習というタイトルの本が出版されます。著者はPreferred Infrastructure/Preferred Networksの海野, 岡野原, 得居, 徳永の4人です。

続きを読む »

NIPS2014読み会を開催しました

大野 健太
エンジニア

2015-01-23 19:33:15

大野です。
先日2015年1月20日に、NIPS2014読み会を開催しました。

当日に関する情報はこちらをご覧ください:connpass, togetter
当日の発表タイトルとインターネット上で入手可能な資料は記事の最後に掲載します(connpassからも入手可能です)。

昨年と同時期、同場所での開催にも関わらず、前回の1.5倍以上の方に参加いただきました。また、正確な統計はありませんが、機械学習に限らず様々なバックグラウンド方がいらっしゃったようです。ビジネス系メディアで特集で組まれるなど、機械学習・人工知能への注目度が高まっておりますが、それと並行して機械学習を専門に研究されている方や、最先端の機械学習研究に関心を持つ方の層が広がっているのではないかと思います。このような勉強会で交流が増えて分野の発展につながれば、今回の勉強会を開催したかいがあったと考えています。

改めまして、発表者の皆様、参加者の皆様、そして会場をご提供いただいた東京大学の武田先生・中川先生にお礼を申し上げます。

会議に関する所感

会議全体を見ると、最適化の理論解析もあれば特定の業界への実応用もあり、また特定のトピックについて基礎から応用まで垂直に扱われているワークショップがいくつも開催されました。参加人数からみても、KDDなど他の機械学習・データマイニング系の研究集会と同様に、NIPSもここ数年の規模の拡大が顕著なようです。
個別のトピックで言えば、Deep Learning/Deep Neural Networkが依然として関心を集めているようです。DLを主題としたワークショップが少なくとも2件あり、主題ではなくても、DLに関連と予想される発表が多くのワークショップで散見します。今回の読み会でも7件中2件(山本さん、得居さん)がDL関連でした。
大岩さんに発表していただきましたが、今回のNIPSではのレビュープロセスについての実験的な企画が行われました。同じ投稿論文を独立した2グループ両方に査読してもらいその相関を調べたもので、1つ目のグループでAcceptされた論文のうち57%が2つ目のグループではRejectされたという結果が話題になりました。例えば「NIPS review experiment」などで検索すると、より詳細にこれらを論じた記事がいくつも見つかり、レビュープロセスに関しては多くの方が問題意識や関心を持っているのだと感じました。

読み会発表タイトル一覧

  • 山本浩司さん , Learning Generative Models with Visual Attention : Proceeding arXiv
  • 大岩秀和さん,  Partition-wise Linear Models : Proceeding arXiv
  • 楠本充さん,  Advances in Learning Bayesian Networks of Bounded Treewidth : Proceeding arXiv
  • Quasi_quant2010さん,  Analysis of Learning from Positive and Unlabeled Data : Proceeding
  • 得居誠也さん , Semi-supervised Learning with Deep Generative Models : Proceeding arXiv
  • 加藤公一さん , A Safe Screening Rule for Sparse Logistic Regression : Proceeding arXiv
  • 関喜史さん , Content-based recommendations with Poisson factorization Proceeding

 

発表資料

続きを読む »

Deep Learningと自然言語処理

preferred

2014-12-26 11:22:09

クリスマスイブの夜は男三人しかいないオフィスで関数型言語の素晴らしさについて語っていた西鳥羽です。こんにちは。

昨日のPFIセミナーで「Deep Learningと自然言語処理」というタイトルで発表させていただきました。以下がその時の資料です。


この辺りに興味を持たれた方は今度の1月20日に「NIPS 2014 読み会」http://connpass.com/event/10568/ もどうぞ。残り枠数少ないので申し込みはお早めに。

続きを読む »

PyData Tokyo Meetup #1でCaffeとmafについて発表しました

大野 健太
エンジニア

2014-11-07 12:04:37

10月30日のPyData Tokyo MeetUp #1にて「Caffeとmafを用いたディープラーニング開発・実験方法」というタイトルで発表を行いました。

当日の発表に関する情報はconnpassにまとめられています(私以外の発表の資料へのリンクや当日のUstreamでの配信へのリンクもあります)。また、当日までのtwitterの反応はtogetterにもまとめられています。

 

発表資料はSlideShareで公開しています(当日きちんと答えられなかった質問の回答を資料の最後に追記しました)。

Development and Experiment of Deep Learning with Caffe and maf from Kenta Oono

 

今回はディープラーニングライブラリの中でも特に開発が活発に行われているCaffeと、PFI/PFNで開発している実験ビルドツールのmafをそれぞれ紹介しました。発起人の柴田さんから、Caffeを用いて自分で何か作れるようになるとうれしい人が集まっていると事前に聞いておりましたので、デモを通じてmafとCaffeを用いて実験を行う具体的な方法の紹介を意識したつもりです。

勉強会主催の方々が標榜しているようにとても濃い勉強会でした。勉強会の立ち上げ会での発表で恐れ多かったですが、多くの方に興味を持っていただきました。発表の機会をくださった発起人の皆様、発表を聞いてくださった方々に改めてお礼を申し上げます。今後も微力ながら活動を応援をさせていただければと考えております。

Group Lassoでグループごと重みが0に潰れる理由

海野 裕也
リサーチャー

2014-05-23 18:15:03

海野です。
先日会社の論文読み会で、ICML2014のMaking the Most of Bag of Words: Sentence Regularization with Alternating Direction Method of Multipliersという論文を紹介しました。さて、この時話題になったのが正則化項をグループ化すると何でグループごと重みが0に潰れるのかという話でした。式を見ても直感的にはわからなかったのですが、得居さんがとてもわかり易い説明をしてくれました。この話、日本語で検索してもあまり出てこないのでちょっと紹介します。

続きを読む »