ぱたへね!

はてなダイアリーはrustの色分けができないのでこっちに来た

One-Netbook OneMix 2SでDOSのゲームを遊ぶ

One-Netbook OneMix 2Sをゲーム機として買ったのですが、通常のゲームは字が小さくて辛くどうしてもDOSのゲームを遊んでしまいます。 ところが、SteamやGOGで購入したDOSのゲームを起動すると右側が切れる症状に悩まされていました。最近ようやく解決できたので記録しておきます。

f:id:natsutan:20190916123721p:plain

駄目な画面はこんな感じ。GPD Pocket等でも同じ報告あり。

解決策としては、正しくフルスクリーンで表示できるDOSBoxを使う事です。とりあえず、僕の環境で上手くいったのは、Steam版 Wizardry 6: Bane of the Cosmic Forge に含まれるDOSBox Daumです。DOSのゲームは、DOSBox Daumから起動することでフルスクリーンで遊ぶことができます。

f:id:natsutan:20190916123742p:plain

Dungeon Hackもこの通り。

DOSBoxの設定はDOSSHELLを使っています。

f:id:natsutan:20190916123755p:plain

このように、実行するDOSBoxのパスをSteamのWiz6の下にあるDOSBox DaunにすればOKです。

Coursera Discrete Optimization

www.coursera.org

動機

この講義は2年くらいまえから気になっていて、Machine Learningの次くらいに受けようかなと思っていたのが大分遅くなってしまいました。僕は大学でコンピュータサイエンスとかプログラミングを習ってないので、大学のコンピュータサイエンスの講義に憧れがあるんですよね。

そんなこんなでお仕事でもエッジのDeep Learningをやるようになりました。量子化された状態で係数をいじって再学習するのを浮動小数点演算を使わずにやろうとすると、それって離散最適化だよねって気がついて、そこから根性出してやってみました。

どんな講義

  • 熱血先生の熱い授業
  • 最先端のトピック
  • 異常に難しい課題

この辺が、僕が憧れるハイレベルな大学の講義そのもので良かったです。多分、東大とか京大とかMITとかはこんな講義しているはずです。

僕が卒業した東京理科大学でも熱血先生はいましたが、ちゃんと授業を聞いていれば単位はもらえたし、単位もらうために自分で論文を探してきて読んで理解しないと駄目って事は無かったです。はい。

最後までやってみてある程度のプログラミング技術と経験は必要かなと感じました。(情報系以外の学部生だと正直きついと思う)

  • グラフやツリーのデータ構造を書けて、適当に操作できる。可視化ツールを自分で作れる。
  • レアケース用の入力データを自分で作ってちゃんと処理できるか確認できる。
  • アルゴリムに乱数を使うときはシードを固定してデバッグするとか、そういう実践的なテクを知っている。
  • nが大きくなったときにメモリ不足で落ちるような、アルゴリズムと関係の無い障害も乗り越えられる。
  • 最後力業で解けそうなとき、ピンポイントで処理速度をチューニングできる
  • 英語の論文を読んでアルゴリズムを実装できる。上手く性能がでなくても泣かない。

くらいの力は欲しいです。

基本的には長い動画を見て、自分で離散最適化を解くソルバーを書きます。解くといっても全部最適解は最初から無理で、それなりの時間で近似解を求める実装になります。だいたい週末の課題が6問あって、先生の言うとおりに実装しても1問目くらいしか解けないのが困ったところ。制約ソルバーのアーキテクチャが聞けるという素晴らしい体験をしましたが、その通りに実装してもn=10000くらいの問題を解くのは無理だと思う。

講義のレビューを見ても「今まで受けたオンライン講義の中で一番難しい」とか「動画がクソ長い(loooooooooong)」とか、散々書かれていますが、☆5つだったりすので最後までやった人は楽しんでやってたと思います。個人的には動画が長いよりも、動画の内容が課題を解くのに役に立たないのがなんとかして欲しい。

ちなみに、Courseraには他にも人気の離散最適化のコースがあります。

www.coursera.org

三国志のアニメが目立つこちらの講義は、MiniZincという制約ソルバーを使って離散最適化を解く講義です。問題をどのようにソルバーに落とし込むかという講義です。講義のアニメが面白いのですが、僕の目的とは違ったので途中で解約しました。単純にソルバー使って問題解きたい人はこちらの講義をお勧めです。

プログラミング環境

最初は自分のVAIO+Rustでやってましたが、出張中のホテルでやりたくなって途中から会社支給のPCにしました。win10、i5、メモリ8Gの人権があるかどうかギリのラインです。人権以前にRust環境(正確にはVSのリンカー)が入れられなくてPythonで解きました。終わってみれば、そんなにハイパワーな環境は要らなかったです。

Rustはこういうアルゴリズムを試行錯誤するにはものすごく向いていない言語で、アルゴリズムが固まってからRustで清書しないと駄目という事を実感しました。例えば、ナップサック問題で入力が整数なのでi32としていろいろ書いた後、リラクゼーションという整数を実数に拡張してプルーニングの効率をあげる仕組みを入れようとすると、ほぼ全ての場所を書き換えて回るのが辛かったです。ただ、絶対負にならないと思っていた値が負になった瞬間に落ちてくれたので、しっかりしたプログラムを書くには良い言語だと思います。Rustに関しては、もっと経験値を上げたいところ。

内容

ナップサック問題

week1はチュートリアルなので、先生のコスプレを楽しんでいればOK。普通の人はweek2のナップサック問題で心が折れると思う。

f:id:natsutan:20190908012307p:plain

ナップサックに荷物を入れる入れないをツリー構造にして、再帰的に解を探し行く方法を教えた後にこういう例がでてきます。探索空間でずっと左ばっかりやって駄目だったら、一個右にいって後は左ばっかり選んでも良いよってのりなんですが、あれこれ単純に再帰で書くの難しくね?って思っていろいろ考えるわけです。

で練習問題は、n=1000とn=10000があってそもそもこのやり方だと全然計算が終わらない。普通にDP使っても駄目。ここで改めて最適解を求めたら駄目で、適当な点数を稼げる近似解が必要と理解するも、なかなか近似解の情報って無いんですよね。ちょうどその時に、この本を入手して事なきを得ましたが、この本がなかったらこの講義はweek2で挫折していたでしょう。

www.kyoritsu-pub.co.jp

彩色問題

ここで、汎用的な制約ソルバーの話がでます。

f:id:natsutan:20190908012408p:plain

多分、これを信じて汎用ソルバーを実装すると、それだけですごい時間食いそうな気がします。講義では4色とか決まった色を割り当てるアルゴリズムはそれっぽく教えてくれるのですが、課題は最小の色数を探す問題なのでこれまた講義が役に立ちませんでした。ちなみにこの問題の有効な解き方(Local Search)は後の週で詳しく教わります。

巡回セールスマン

ここが最大の壁でした。ただ、巡回セールスマンについては、厳密解が求めにくいこともあり、Webで近似解の情報を集めることができたのは良かったです。クロスした経路をまっすぐにしたり、ちょっと手を加えると値が小さくなるのがうれしかったのですが、課題の都市数が多すぎて小手先の最適化では歯が立たなかったです。

乱数を使ったアルゴリズムに入れる前に、greedyの出力をある程度整形してあげると効果が上がるのですが、整形しすぎると同じような局所解になってしまうのが面白かったです。ほどほどの状態で乱数を投入するのが良かったです。本来はここでシミュレーテッドアニーリングとかタブーサーチとか遺伝アルゴリズムを使って欲しそうな講義でしたが、基本的に講義のアルゴリズムは課題を解くときに信じないことにしていているので気合いで乗り切りました。

全体を通してずるをしたくなったのが唯一この週です。乱択アルゴリズを採用したので、暇な会議中にずーっとソルバーを回していると、たまに最適解っぽいのを出すんですよね。そうなると、自分が書いたソルバー自体は解く能力があるんだから、そのまま正解だしてもよくねと思ってしまいました。講義の最初に、答えだけ出力するのは駄目よって言われていて、外部のソルバー使って解いてもOKなのに、なんで答えだけはNGなんと思っていたのが、こういうことなんだなと。

人生で一度くらいは巡回セールスマンソルバー書いても良いと思います。

工場配置問題

講義ではシンプレックス法の説明がありました。多分、この本読んだ方が分かりやすいです。 https://www.amazon.co.jp/dp/4320017862

ほどほどに手こずって解きました。結局シンプレックス法は使わなかったし、人生で一度くらいはシンプレックス法書いた方が良いと思いました。

最終問題

最後の問題はあーなるほどーと思える問題でした。(内緒)

感想

SICPやCourseraのMLコースでも感じたのですが、途中まで泣きそうな課題を出しながら、最後の最後は急に難易度が下がるのはそういう物なんですかね。

greedyアルゴリズムが最強。いろんな指針でgreedy回したり、iterated greedyやるだけでもずいぶん点数かせげました。頭が良い人が考えるgreedyは、下手なアルゴリズムよりも良い成果と近似保証もあり侮れないなと思いました。

世の中にある汎用ソルバーはすごい。自分で実装したら数時間かかるものが秒で答え返してくる。

巡回セールスマンソルバーを書くという人生の実績を解除したので、また次の講義に挑みたいです。すごく楽しかったです。

NN論文を肴に酒を飲む会 #9

tfug-tokyo.connpass.com

先週の水曜日にたまたま東京出張が入っていたので参加してきました。 会場をご提供いただいたgranica様ありがとうございました。

NoriakiOoshitaさん

薬関係の論文の紹介でした。グラフに関するMLは最近興味を持っているのですが、何よりもDruglikenessという指標が気になってしまいました。薬らしさの意味でしょうか。○○とくっつき易い薬をDruglikenessの指標として使う事で、ある特徴を持った薬を見つけやすくなったりしそうと聞いてなるほどーと思いました。

tamaki さん

AIに関する説明責任のお話。結構難しい話をわかりやすく説明していただきました。データの扱いについて、中国、アメリカ、日本を並べて比較してあるのは面白かったです。MSの論文の紹介があったのですがメモを忘れました。

龍一郎 さん

自然言語処理系の発表でした。僕は全然知らない分野なのに、皆さんふんふんと聞いていたので、ある程度常識だったりするのかなーと思いながら聞いていました。

f:id:natsutan:20190907193001p:plain

論文の本筋じゃないんですが、この図が面白かったです。ドイツ語のdieと、死ぬの意味のdie、サイコロのdieがちゃんと分類できていることの可視化です。

koreyou さん

これも自然言語処理の話。データのラベリングを、効率的にする話です。質問に答える形のアノテーションでは、yes, noの1ビットの情報しか無くもったいない。判断の理由を使う事で、アノテーション付きデータを量産します。その仕組みが、雑に作ったルールベースであっても、上手くフィルターすることで有効なルールのみを使えるようにになります。面白い。

TetsuoIshigaki さん

テーラー展開を使って、DLのモデルが入力画像のどこに反応しているかを可視化する手法の紹介でした。数式の展開は途中までついていったけど、途中で力尽きました。そもそもの所で、「テーラー展開の第一項は勾配と同じ」は分かるんだけど、じゃあGRAD-CAMみたいに勾配を直接使ったらあかんの?ってのが分からなかったです。

最後に

こういう何が出てくるかわからない勉強会は面白いですね。意外に自然言語処理が多くて楽しめました。

次、大阪でTFUG KANSAIやります。そこで、僕も機械学習の解釈について話します。僕の発表はこれから機械学習の理由付けをしないといけない人や単に興味を持っている人向けで、難しい式などはでてきません。興味ある人は是非来てください。

tfug-kansai.connpass.com

ちなみに今回も僕以外の発表者は超豪華です。

最後の最後にTFUG KANSAIのオーガナイザーも募集しています。興味ある方は一度TFUG KANSAIのイベントに参加していただいて声をかけてください。

Iterated greedyでグラフの彩色問題

Courseraで離散最適化を勉強していたら、フォーラムにIG(iterated greedy) というアルゴリズムが出てきたので紹介します。

元の論文はこちら。

http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.45.7721

グラフ彩色の練習問題で使ってみたところ、非決定性もなく、むつかしい操作もなく、そこそこの計算量でそれなりの解が得られました。メモリの使用量や計算時間も、エッジのソート分を見ておけばOKなので組込みなどの厳しい環境でも使えます。

グラフ彩色問題

https://ja.wikipedia.org/wiki/%E3%82%B0%E3%83%A9%E3%83%95%E5%BD%A9%E8%89%B2
今回はエッジに対する色分け問題です。実装と評価が簡単なので、他の問題でもとりあえずやってみる価値はあると思います。

アルゴリズム

通常のgreedy algorithmは一回で近似解を求めに行きますが、IGではgreedy algorithmを繰り返すことでより良い近似解を求めます。

f:id:natsutan:20190821171450p:plain
graph
このグラフに対して、abc順にgreedy algorithmを使うと、a=1, b=1, c=2, d=2, e=3, f=4なり4色使う結果になります。次に、この色順でgreedyを適用します。順番がfecdabとなり、greedy algorithmでも2色の最適解を得ることができます。

本質的にはこれだけです。これでうまくいく理由は、一般的に制約プログラミングでは、制約の厳しい所から値を設定していくのが有効と言われています。一回目のgreedy algorithmで彩色した結果、彩色が厳しかったところから再度greedy algorithmを使うことで、うまく精度を上げています。これにヒューリスティックな方法を組み合わせることで、さらに良い解が見つかる可能性があります。

もっと厳密な話は上の論文を読んでみてください。

とあるグラフでやってみた結果

エッジの数 n = 1000でIGを試してみた結果です。

f:id:natsutan:20190821171512p:plain
Iterated greedy

縦軸を色数K、横軸をIGのイテレーション数としてプロットしてみます。iteration=0は、通常のgreedy algorithmの結果です。イテレーションを回すと、色数Kが少しずつ減っているのがわかります。これに、様々な既存手法を加えることで、さらに色数を減らすことが期待できます。

ナップサック問題の近似解を求める

Courseraの離散最適化コースを勉強していたところ、二週目の問題がこなせず一ヶ月以上停滞してしまいました。物の数(n)が30個くらいなら授業の方法で解けるのですが、40個で全然駄目になりました。練習問題は1000個とか10000個まであり厳密解でやるアプローチは見るからに無理、Webで調べても近似解の求め方はあまり見つからず苦労しました。

そんなとき、近似アルゴリズム―離散最適化問題への効果的アプローチ― という本がちょうど良いタイミングで発売され、そこに書いてあるアルゴリズムで上手く計算できたのでまとめます。

https://www.kyoritsu-pub.co.jp/bookdetail/9784320121775

Corseraの練習問題が元ネタです。そのまま回答になってしまうためコードは無しですいません。ちなみにRustで書きましたが、問題が大きくなると時間よりも先にメモリ不足で落ちてしまいました。そんなときも、近似解を求めることで使用メモリ量も制御できます。

問題

 入力:n組の2個の正整数 a_i, c_i(i=1,2,...,n) と正整数b

 タスク: \Sigma_{i\in X} a_i \leq b を満たすような部分集合 X \subseteq  {1,2,...n} のうち、和 \Sigma_{i \in X} ci が最大になる物を求める

ナップサックの用語にするとaiが大きさ、ciが価値、bがナップサックの大きさです。nの物品のなかから大きさの合計がb以下になる組み合わせで、価値の合計が最大になる組み合わせを探す問題です。

アルゴリズム(厳密解)

ナップサック問題における疑似多項式時間アルゴリズム(pseudo polynomial time algorithm)を使います。アルゴリズム自体は厳密解を求めます。最後に書くように、同じアルゴリズムで簡単に計算量を減らした近似解を求めることもできます。アルゴリズム時代はDP(動的計画法)の一種なのですが、いまいち正しい名前のような気がしません。

価値の最大値

 C = max \{ c_i : i = 1, 2, ..., n \}

とおくと   O(n^{2}C)  の計算時間で解くことができます。Cの値によって計算量が変わってきます。

今回はこの例でやってみます。

 a_i = \{4, 5, 8, 3, 2\}

 c_i = \{6, 10, 12, 4, 4\}

b = 11, n = 5です。

テーブルを作る

DP法と同じように二次元のテーブルを作ります。全ての物品の価値を足してPとします。

 P = \Sigma_{i=1}^{n} c_i = c(\{1, 2, ... n\})

配列をこのように作ります。

# 配列を初期化
a = [4, 5, 8, 3, 2];
c = [6, 10, 12, 4, 4];

テーブルの初期化

n×P+1の二次元配列を作る。 A[i][0]を0で初期化し、A[0][最初の物の価値]に最初の物の重さを入れる。それ以外は無限大とする。

配列の中を計算する

iとpで2重ループさせる。ループを疑似コードで書くとこう。

for(i=1;i<n;i++) {
  for(p=0;p<=P;p++) {
    処理
    }
}

処理の部分は、

  • p<c[i]ならば A[i][p] = A[i-1][p];
  • p >= ciならばA[i][p]は、①A[i-1][p]と②a[i]+A[i-1,p-c[i]]の小さい方とする。

良く分からないのでやってみましょう。 Pが、c = [6, 10, 12, 4, 4]の各要素の和なので36です。n=5なので、5x37の二次元配列Aを作ります。 iとpでループを回し、A[i][p]でアクセスします。

最初にi=0の行を初期化します。 A[0] = 0, A[c[0]] = a[0];で後の項はA[6]=4;になります。A[0]行のそれ以外の要素は無限大で初期化します。

p 0 1 2 3 4 5 6 7 8 ...
A[0][p] 0 4 ...

右側はp=36まで∞が続きます。

次にi=1の行を処理します。 c[i]=10なので、c[0]からc[9]までは上の列をコピーします。 c[10]は、①がA[0][10]で∞、②がa[1] + A[0][p-c[1]]=5+A[0][10-10] = 5+A[0][0] =5 になります。A[1][10]=min(①、②)なので、A[1][10]は5になります。同じように、A[1][16]が5+4で9になり、それ以外は∞です。

p 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 ...
A[0][p] 0 4 ...
A[1][p] 0 4 5 9 ...

これをi=4まで繰り返すとこうなります。

p 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
A[0][p] 0 4
A[1][p] 0 4 5 9
A[2][p] 0 4 5 8 9 12 13 17
A[3][p] 0 3 4 5 8 8 9 12 12 13 16 17 20
A[4][p] 0 2 4 5 5 8 7 9 10 11 13 14 15 17 18 19 22

最大値探す

Aの値が決まると、次に一番下の行から、A[4][p] <= bとなる最大のpを探します。

p 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
A[4][p] 0 2 4 5 5 8 7 9 10 11 13 14 15 17 18 19 22

bが11なので、A[4][20]、つまりp=20が最大値となります。この値が条件を満たす最大の価値qになります。

ナップサックの中身を決める

今度はq=pとして、iでn-1から1まで逆向きにループします。 疑似コードです。

for(i=n-1;i>=1;i--) {
  処理
}

処理の部分は、A[i][q]<A[i-1][q]ならば、そのiをナップサックの中に入れて、q=q-c[i]とします。ちょうど、表の一つ上と比較して、値が大きくなっていたらその物を追加し、qを価値分減らしていきます。最後、ループを出た後にq>0であれば、i=0の物もナップサックに加えます。厳密解を求めるときは、ループを出た後のqは、0かc[0]のどちらかです。

P=20より右側は無視してかまいません。

p 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
A[0][p] 0 4
A[1][p] 0 4 5 9
A[2][p] 0 4 5 8 9 12 12
A[3][p] 0 3 4 5 8 8 9 12 12
A[4][p] 0 2 4 5 5 8 7 9 10 11
  • i=4:A[4][20]の一つ上を見て11 < 12 なので、ナップサックに入れ、qを16にします。
  • i=3:A[3][16]の一つ上をみて、同じ値なのでナップサックに入れない。qはそのまま。
  • i=2:A[2][16]の一つ上をみて、同じ値なのでナップサックに入れない。qはそのまま。
  • i=1:A[1][16]の一つ上をみて、9 < ∞なのでナップサックにいれ、qを4にします。
  • 最後、q!=0なので、i=0もナップサックに入れます。

最終的に i={0,1,4}が厳密解になります。

アルゴリズム(近似解)

このアルゴリズムの計算量は [tex] O(n^{2}C) ] なので、Cが大きくなると遅くなります。例えば、C>nという状況では、n3以上の計算オーダーになります。

近似解の求め方は簡単で、物の重さ(c)とナップサックの容量bを、ある値で割って小さくする(Scaling)事で近似解を得ることができます。

a = [422, 543, 802, 322, 223];
b = 11234;

のような入力に対してaもbも100で割り最適解を求めると、それがそのまま近似解の組み合わせとなります。近似解の精度も保証されており、証明が気になる方は上の本を買って読んでみてください。

7/25日に東京でエッジAIのイベントやりまーす

イベント概要

7月25日、パソナテック本社で「これからのエッジAI」というタイトルでイベントを行います。

申し込みはこちらから。 https://connpass.com/event/137100/

申し込みページの案内が微妙&微妙なので、勝手に見所をお知らせします。ちなみに関係者と言うよりは、もろ主催者側の人間です。

今回登壇していただく方は3名、Google佐藤様、DMP大渕様、パソナテック林の豪華ラインナップです。案内が企業様向けとなっていますが、テクノロジー好きな人達の発表なのでどうしてもテクノロジーに寄ると思いますよ!登壇の順序とかタイムテーブルとかよくわかんないですけど、それぞれ45分程度の発表と聞いています。正式な案内を待ちましょう。

では講演内容の紹介です。

グーグル合同会社 Google Cloud デベロッパーアドボケイト 佐藤一憲様

タイトル:TensorFlow Lite、AutoML、Edge TPUで加速するエッジデバイスの機械学習

概要: 機械学習のエッジデバイス導入におけるの大きな課題は、ニューラルネットワークのモデルサイズとCPU消費です。Googleでは、これらの問題を解消する技術として、エッジデバイス向けの機械学習フレームワーク「TensorFlow Lite」と、そして低消費電力の推論プロセッサ「Edge TPU」を開発しました。このセッションでは、 TensorFlow LiteやEdge TPUを用いてモバイルアプリやエッジデバイスに最新のAIを導入するための課題や各種手法を解説します。また機械学習モデルの作成を自動化するAutoML Vision Edgeを利用し、モバイルアプリやエッジデバイス向けの機械学習モデルをプログラミングレスで作成する例を紹介します

俺ポイント: 僕がはまっているAutoMLからのEdge TPU。AutoML技術があれば、あなたも私もすぐにDeep Learningできるようになります。先月くらいから日本でもAutoMLが話題になっていますが、まだ話を聞いたことが無い人はぜひ聞きに来てください。AutoML知らないのは遅れてますよ。そしてEdge TPU、謎のデバイスの秘密が今明かされるかも。プロセッサマニアは正座して聞くべし!

株式会社ディジタルメディアプロフェッショナル 常務取締役開発統括部長 大渕栄作様

タイトル:エッジにおけるAI処理とそれを実現するDMP ZIA C3モジュールについて

概要: エッジデバイスにおけるAI処理の動向を紹介するとともに、NEDO IoT横断プロ ジェクトにおける省電力AIエンジンのアーキテクチャ及び、それをモジュール化 したDMP ZIA C3について紹介します。 DMPはこれまで省電力GPUアーキテクチャの研究開発をおこなってきたスタートアップベンチャーで、設計物のIPコアとし て、ニンテンドー3DSやデジカメ、プリンタといった機器で採用されています。 日本では貴重となったGPUベンダーとして近年ではAIアプリケーションで省電力GPUコアを活用したソリューションとして省電力AIエンジンの研究開発を進めて います。 本講演では、AI動向やディープラーニングを用いた画像認識とは?という基本から、省電力化に向けたアプローチを紹介します。

俺ポイント: DMPさんは10年ほど前、三鷹にお邪魔したことがあります。当時はバリバリベンチャーでしたが、今やGPU界で老舗のイメージすらあります。ZIA C3モジュールなので、Xilinx Zynq UltraScaleですね。FPGAですよ!AIのFPGA実装と、国産GPUの話を聞きたい人は集まれ。

株式会社パソナテック IoEソリューション事業部 AIプロダクトG Qumico Tech Lead  林徹

タイトル:『AI・IoT分野の開発サポートツール「Qumico」について』

概要: 今、発表資料を作ってるんじゃ・・・。

俺ポイント: 二年前に一瞬だけメディアに取り上げられて消えてしまったコキュートス。その血を引くQumicoがパソナテックの正式なプロダクトとして登場します。コンパスの案内だとデモだけっぽいですが、45分の公演もあります。プアーな環境でも組込 Deep Learning が動かせるツール。開発者自らが語るQumico開発の狙いと実機デモをお楽しみください。

最後に

企業様向けと書いてありますが、絶対エンジニアも楽しめるイベントです。 ここだけの話ですが、社内では企業様向けで企画が動いているため、あるタイミングで営業が動き出すと枠が一気に埋まってしまいます。個人での参加はお早めに。

https://connpass.com/event/137100/

俺ポイントは完全に想像なので外していたらごめんなさい。

世界で闘うプロダクトマネジャーになるための本

https://www.amazon.co.jp/dp/4839951772/

「今日から君はプロダクトマネージャーだ」と言われた人が、世界レベルになるための本と思ってタイトル買いしたが、ちょっと内容が違いました。半分以上が、履歴書の書き方だったり、面接の受け答え、知っておくべき知識など、転職活動のアドバイスでした。

原初のタイトルは、Cracking the PM Interview: How to Land a Product Manager Job in Technology なので、完全に就職対策本ですね。日本語タイトルはちょっと不満があります。とはいえ、最初の方のプロダクトマネージャーの仕事とは、プロジェクトマネージャとの違いとは、って所はわかりやすく書いてありました。その次の章で、有名企業でのプロジェクトマネージャの役割も楽しく読めたので、値段分以上の内容はあると思います。

転職してプロダクトマネージャーになりたい人にはお勧め。