機械学習の幕開け

大量にデータを入手できる時代となった。大量データをそのまま扱うことがもとめられる。2012年6月、グーグルXチームが、1万6千台のCPUで、10億の結合部を持つニューラルネット(NN)を構築した。YOUTUBEの映像サムネイル1000万件を3日連続して入力し続けたら、画像の中から猫を認識できるようになった。人が介在したり、途中で何も変更しなかった。

大量データをそのまま畳込NNに入力をするだけで、結果を得られるという素晴らしいアーキテクチャを手にすることができた。

心理学者のゲルト氏は、不確実性の高い市場では、物事を単純化して、ヒューリスティクスで変数をできるだけシンプルに少なくしたほうがよいという。しかし、安定して予測しやすい市場では、分析を複雑化して多くの変数を使うアルゴリズムを使ったほうがよいと語っている。

[browser-shot url=”https://www.ted.com/talks/fei_fei_li_how_we_re_teaching_computers_to_understand_pictures?language=ja” width=”400″ height=”300″ alt=”コンピュータが写真を理解するようになるまで TED2015 · 17:58 · Filmed Mar 2015″]

FeiFeiLiさんのTED映像を拝借する。ノード数2400万、パラメータ数1億、結合数150億もの巨大なNNを構築して、成功をおさめたと説明をしている。

大量のデータから、思いもよらない結果が得られる指針を見つけられたことは、すばらしい。IoTなどセンサーからはかれる大量データは今後急増する。結果はこうあってほしい、こういう結果が得たいのだが、システムに落とし込むところから、悩む。そもそもデータの特徴量はなんだっけと。そして、データ構造はどうするべきか、なかば強引に(人の恣意に基づいて)抽象化してしまう。さらに、結果に近づかなければならないので、外れたデータを、外せないかというアプローチを取ってしまう。

データをそもそもうまく分けられないのだから、計算機にそのデータを素直に扱ってもらう仕組みは、いままでなかったので、たいへん興味が湧く。そもそも計算機が特徴量を自動で見つけ出すことは、たかが数年で、はじまったばかりであり、これからのビジネスへの応用(例えばひとにつく固有の暗黙知理解なども)に期待がかかる。

ビジネスプロデュース戦略

3000億円の事業を生み出すビジネスプロデュース戦略』(三宅孝之、島崎崇)を読み進めています。米国では大企業が伸びているにも関わらず、なぜ日本で新規事業が生み出されなくなったかの理由の説明が納得しました。自前主義でまとまり続けた日本。過去の成功体験があるから、基本それに従えっていればよかった。いまさら新規事業をと云われても、何から始めたらいいのか分からない。一方米国企業は新興だけではなく大企業ほど売上を伸ばしている。その理由は、米国企業には、繋がる力があった。繋がるためには、大きな絵を描ける構想力があったと。私のお伺いをする先にも、それは前例はありますか、当社の範疇ではありませんね、もっとこうしたらいいというのを提示してください、それが出来ましたらご訪問くださいと何度、云われたことか。もっと酷いのは、前例がこうなので、これと比べてどこがどれだけ良くなったのかを説明してください、えーとなる。この本を読んで良く分かった。次に成長ができる企業になるためのコツがここにあると思った。いち早くこのような手法を取り入れて、ブルーオーシャンを作りだせるかどうか。初版が2015年7月、日本への提言がなされたわけなので、進化・繋がりから生まれるビジネスの考えが、定着するのに、さらに10年かかるのだろう。三枝 匡さんの書とも感覚的に近く、私として、出会えてよかった1冊である。機会があれば、著者にもお会いしたいと思った。

ここで説明される映像は分かりやすいですね。

 

大人の健康倶楽部

『大人の健康倶楽部』という会を2014年から検討をしている。世界に類を見ない超高齢社会に入り、健康な男性・女性はますます増える。日本人男性の健康寿命71歳、女性は74歳である。定年を60歳で迎えたあと、軽く10年以上、活力のある男性女性は、時間に余裕がある。かれらは、まだまだ活力がある。自宅にいても時間を持て余すのであれば、月に1度、知的向健心(造語)の高い紳士・淑女が集まる場を提供してみては、どうかというのが、『大人の健康倶楽部』の作る意義である。今後内容をつめていくことになるが、経産省・厚労省も積極的に健康寿命延伸計画を後押しをしている。この会は、今の日本において、たぶん、求められる会になると予想している。

[趣味]Raspberry Pi とandroidアプリをbluetooth通信させてみた

趣味の世界、Raspberry Pi (ラズベリパイ)とandroidアプリをbluetooth通信させたのでそのメモを残しておこう。

Bluetooth 経由で、Raspberry Pi とandroidアプリを通信させた。
RP 側設定

# hciconfig
hci0:   Type: BR/EDR  Bus: USB
BD Address: 00:1B:DC:04:AE:D7  ACL MTU: 310:10  SCO MTU: 64:8
DOWN
RX bytes:1842 acl:9 sco:0 events:97 errors:0
TX bytes:2048 acl:9 sco:0 commands:75 errors:0

# hciconfig hci0 up
# hciconfig hci0 piscan
# hciconfig
hci0:   Type: BR/EDR  Bus: USB
BD Address: 00:1B:DC:04:AE:D7  ACL MTU: 310:10  SCO MTU: 64:8
UP RUNNING PSCAN ISCAN ←★変わることを確認
RX bytes:11852 acl:222 sco:0 events:579 errors:0
TX bytes:11710 acl:260 sco:0 commands:175 errors:0
# /etc/init.d/Bluetooth stop
# /usr/lib/bluetooth/bluetoothd -C &
# sdptool add –channel=22 SP  ★BT上、シリアル通信を22番で行う宣言
# sdptool browse local 登録されたかを確認
<略>
Service Name: Serial Port
Service Description: COM Port
Service Provider: BlueZ
Service RecHandle: 0x10005
Service Class ID List:
“Serial Port” (0x1101)
Protocol Descriptor List:
“L2CAP” (0x0100)
“RFCOMM” (0x0003)
Channel: 22
Language Base Attr List:
code_ISO639: 0x656e
encoding:    0x6a
base_offset: 0x100
Profile Descriptor List:
“Serial Port” (0x1101)
Version: 0x0100

方法1)rfcommコマンドを使って 22番ポート待ち受ける
# rfcomm listen /dev/rfcomm0 22
Waiting for connection on channel 22
<アプリから通知があるまで、ここで待つ>
Connection from 44:D4:E0:72:8A:39 to /dev/rfcomm0
Press CTRL-C for hangup

方法2)rfcomm-server.c を改編
オリジナルソース:http://people.csail.mit.edu/albert/bluez-intro/x502.html
実行プログラム作成
#gcc -o rfcomm-serer rfcomm-serer.c -lbluetooth

rfcomm-server.cの内容 ★最初に端末から文字を読み取り、その後端末にhelloと戻す。
#include <stdio.h>
#include <unistd.h>
#include <sys/socket.h>
#include <bluetooth/bluetooth.h>
#include <bluetooth/rfcomm.h>

int main(int argc, char **argv)
{
//struct sockaddr_rc loc_addr = {00:1B:DC:04:AE:D7}, rem_addr = {44:d4:e0:c8:45:11};
struct sockaddr_rc loc_addr = { 0 }, rem_addr = { 0 };
char buf[1024] = { 0 };
int s, client, bytes_read, status;
socklen_t opt = sizeof(rem_addr);
int ch = 1 < argc ? atoi(argv[1]) : 1;
printf(“channel [%d]\n”,ch);

// allocate socket
s = socket(AF_BLUETOOTH, SOCK_STREAM, BTPROTO_RFCOMM);
printf(“socket [%d]\n”,s);

// bind socket to port 22 of the first available
// local bluetooth adapter
loc_addr.rc_family = AF_BLUETOOTH;
loc_addr.rc_bdaddr = *BDADDR_ANY;
loc_addr.rc_channel = (uint8_t) ch;
bind(s, (struct sockaddr *)&loc_addr, sizeof(loc_addr));

// put socket into listening mode
listen(s, 1);

// accept one connection
client = accept(s, (struct sockaddr *)&rem_addr, &opt);

ba2str( &rem_addr.rc_bdaddr, buf );
fprintf(stderr, “accepted connection from %s\n”, buf);
memset(buf, 0, sizeof(buf));

// read data from the client
bytes_read = read(client, buf, sizeof(buf));
if( bytes_read > 0 ) {
printf(“received [%s]\n”, buf);
}
if( status == 0 ) {
status = write(client, “Hello”, 5);
}

if( status < 0 ) perror(“uh oh”);

// close connection
close(client);
close(s);
return 0;
}

# rfcomm-server 22 (22番ポートで起動する)

Android アプリの設定
アプリは、クライアントとして動作させる。
Android studio 起動して File->import sample -> Connectivity:BluetoothChat をロード
コンパイルして androidアプリとして起動する。
Select a device connect にて raspberry pi(00:1B:DC:04:AE:D7)をタッチする。
(RP にて、rfcomm-server 22 が起動してないと not connected として終了)
起動していれば、connected to raspberry pi となる。
アプリ側から、適当な文字を入力して send ボタンを押す。
「あいう」と送ると、RPに表示されて、そのあと端末画面に「Hello」と表示。

Screenshot_2015-06-12-16-28-262015y06m12d_162908638

 

Engadget例大祭の参加

ハッカソン・アイデアソンがブームである。数週間前に、NTT DOCMOの健康ハッカソンに参加した。会社のスタッフとは違い、見ず知らず、年齢も全く異なるメンバーが即席にチームを構成をして、目標・問題設定から、問題解決まで、短時間に走り抜ける。たった3週間の時間の短い期間。お会いする機会もなかなか作りだせないなか、FBのグループにて情報共有が役だった。『観光名所での自撮装置』を考案し、簡単でも実現した。とにかく難しくは考えず、一人一人が持てる力を発揮するという仕組みがハッカソンのいいところ。良い経験をすることができた。ちょうど、タイミングが良いことに、Engadget例大祭で発表する機会を得た。いわゆる遊び心として、童心にもどって、愉しめた。