SHOYAN BLOG

I am a pragmatic programmer.

これから機械学習の理論を学ぶ人に最適な入門書とは?

こんにちは、SHOYANです。

様々なところで使われるようになってきている機械学習ですが、その仕組みを理解するには数学の知識が必要なため、そこが壁になっている人も多いことかと思います。という私もその1人です。今回、そのような初学者向けに良い入門本が出版されたので紹介します。

やさしく学ぶ 機械学習を理解するための数学の基本

やさしく学ぶ 機械学習を理解するための数学の基本

2017年9月にマイナビ出版より発売されています。物語を読むような感覚で機械学習の理論と数学を学べるようになっており、これから機械学習の理論を学んでいく初学者に最適な1冊です。機械学習に使われる理論と数式について、アヤノ、ミオの2人の登場人物が会話形式で学んでいきます。

著者の紹介

著者の立石賢吾さんはLINE Fukuoka株式会社でデータ分析や機械学習を使った業務を行っているエンジニアです。プログラマのための数学勉強会@福岡も主催しています。

この一冊で機械学習の理論と数学、実装まで

機械学習でよく使われる、回帰、分類、クラスタリングとその理論についての説明が主な内容となっています。アヤノ、ミオの2人によって会話形式で話が展開されていくため、物語を読んでいく感覚で機械学習の理論を学んでいくことができます。数学については付録があり、そちらでより詳しく学べるようにもなっています。また、Pythonを使ったサンプルコードが用意されており、実際に動かすことができます。この1冊で機械学習の理論、数学、実装を一通り学べるようになっています。

これから機械学習の理論を学ぼうと考えている初学者に最適

私自身、初学者向けの機械学習の本を何冊か見てきましたが、この本が1番わかりやすいように思います。なぜかといいますと、アヤノ、ミオの2人による会話形式で話が展開されていくため、物語を読むように理論を学ぶことができます。また、疑問に思う部分についてはアヤノが質問するようになっており、そのおかげで都度疑問が解消されていきます。これから機械学習の理論を学び始める人、難しくて挫折してしまった人におすすめの入門書です。

航空券を安くとる方法

こんにちは、SHOYANです。

東京出張の予定があるので航空券をとりました。
航空券は早く予約して、なるべく安い会社の航空券を買えば安く手にいれることができます。

おすすめの購入方法

安い航空券を探すには、航空券の比較サイトを使うと便利です。
私はスカイ・シートラベリストを利用しました。

スカイ・シー


14社から航空券を検索することができます。面倒な会員登録が必要ないのもメリットの1つです。もちろん、領収書も発行できます。今回はスカイ・シーでチケットを購入しました。

トラべリスト


クルーズグループが運営する格安航空券サイトです。こちらは10社から航空券を検索できるようです。いまなら会員登録すると600円オフのクーポン券がゲットできます。

最安値は8,790円

福岡→羽田間の10月の最安値はスカイ・シー、トラべリストともに8,790円でした。
この価格だと高速バスよりも安いです。高速バスだと半日ほどかかりますが、飛行機だと2時間弱で行けてしまうので、そう考えるととてつもなく飛行機って便利ですね。

戦争のふちに立たされている日本

こんにちは、SHOYANです。

きな臭いタイトルですが、北朝鮮とはいつ戦争が始まってもおかしくない状況になってきました。今後、どのように状況が動いていくかは中国の動き次第と言えます。

今後の動向の鍵を握る中国

予想される最悪のシナリオは経済制裁の強化で北朝鮮が先制攻撃に出ることです。このシナリオは第2次世界大戦を彷彿とさせます。第2次世界大戦のきっかけとなったのは日本が行った真珠湾への先制攻撃ですが、この原因はアメリカが日本に行った経済制裁です。具体的には石油の輸出禁止措置です。石油の輸出禁止措置がきっかけで日本は真珠湾攻撃を行いました。私はこれと同じことが北朝鮮で起こってしまうのではないかと危惧しています。

石油の90%を中国からの輸入に頼っている北朝鮮ですが、ここで中国がどのような行動をとるかが今後の事態に大きく影響してくるでしょう。中国としては東アジアにおけるアメリカの影響力をこれ以上高めたくないので、北朝鮮の先制攻撃を誘発する石油の輸出禁止措置を行う可能性は低いと思います。しかし、北朝鮮と中国の関係がうまくいっていない現状では、アメリカの圧力に屈した中国が石油の輸出禁止措置に踏み切る可能性がないとは言い切れない状況です。

アメリカに残された時間は少ない

アメリカが北朝鮮に対して強硬手段に出れる時間はそれほど残されていません。核搭載の長距離弾道ミサイルが完成に近づいています。ミサイルの飛距離と精度は時間に比例してあがっており、アメリカ本土へと届く日もそう遠くはないでしょう。アメリカとしては今のタイミングで北朝鮮をなんとかしたいと考えているはずです。

戦争のふちに立たされている日本

仮に戦争が始まったらどうなるでしょうか。日本は黙って見ているわけにはいきません。自衛隊は戦争に参加することになります。韓国も参加せざるをえないでしょう。このことはトランプ大統領のツイートからも見てとれます。

I am allowing Japan & South Korea to buy a substantially increased amount of highly sophisticated military equipment from the United States.
私は日本と韓国にさらに十分な量の最新式の高度な軍事品をアメリカから買うことを許可しています。

要するに戦争が始まった時のために、アメリカからたくさん軍事品を買って準備しといてねということです。日本は戦争のふちに立たされているのが現在の状況です。

日本語を使う外国人があまりにも少なすぎる現状

こんにちは、SHOYANです。

最近の北朝鮮の状況を世界はどう見ているのだろうかと、海外メディアを見ることが多くなったこの頃。NewYorkTimesを見ていた時に英語版の他に、中国語版とスペイン語版があることに気づきました。このようなところで、国の影響力の強さをうかがい知れたりするものです。

スペイン語は世界で4位

中国の人口とGDPを鑑みると、中国語版があることは納得できます。スペイン語版があるのはなぜなのかと疑問に思ったので、スペイン語が世界でどれくらい使われているのかを調べてみました。WikipediaのList of languages by total number of speakersによるとスペイン語を使う世界の人口は4位で、およそ5億人がスペイン語を使っています。これは、16世紀ごろにスペインが世界中に築き上げてきた植民地、スペイン帝国のなごりだと考えられます。

第2外国語としての日本語のスピーカーがあまりにも少ない

言語別に見てみましょう。

順位 言語 母国語として話す人 第2外国語として話す人 話す人の合計
1位 中国語 8億9700万人 1億9300万人 10億9000万人
2位 英語 3億7100万人 6億1100万人 9億8300万人
3位 ヒンディー語 3億2900万人 2億1500万人 5億4400万人
4位 スペイン語 4億3600万人 9100万人 5億2700万人
5位 アラビア語 2億9000万人 1億3200万人 4億2200万人
6位 マレー語 7700万人 2億400万人 2億8100万人
7位 ロシア語 1億5300万人 1億1300万人 2億6700万人
8位 ベンガル語 2億4200万人 1900万人 2億6100万人
9位 ポルトガル語 2億1800万人 1100万人 2億2900万人
10位 フランス語 7600万人 1億5300万人 2億2900万人
11位 ハウサ語 8500万人 6500万人 1億4800万人
12位 パンジャーブ語 1億4800万人 ? 1億4800万人
13位 日本語 1億2800万人 100万人 1億2900万人

日本語は13位です。第2外国語として話す人の人口も公開されているのですが、なんと日本語は100万人程度です。
他の言語に比べてあまりにも少なすぎる。これは日本だけ間違っているのではないかと勘ぐりたくなるくらいの違いです。地理的な要因が大きいと考えられますが、外国人から見て日本という国はあまり魅力的ではないのかもしれません。

ハッカソンでチャットBotを作って感じた課題

GMOペパボで開催されたハッカソンに参加するため東京へ行ってきました。
チームを作って、2日でプロダクトを作るというイベントです。

チームについて

チーム

エンジニア2名とデザイナー、カスタマーサービスの4名で構成されています(農家ではありませんよ!)。
チームメンバーについては、なるべく異なった技能を持つ人で構成しようと考えました。
チーム名はすいかとかぼちゃです。開催されたのが8月だったので、夏っぽい名前をコンセプトとしましたが、深い意味はありません。

お産合宿で作ったもの

チャットBotを作りました。チャットBotにした理由は、チャットBotの作成に関するサービス、オープンソースが充実してきたことです。これらを利用すればそれほどコードを書かずにチャットBotの実装が可能だと考えました。また、どれほどの労力でどれほどのものが作れるかといったことを実際に検証してみたかったという理由もあります。

お産合宿1日目

朝6時に家を出て東京に移動しました。朝が早すぎて大変でした。
会場に着いたらまずは、事前に担当を決めて実装していたコードをマージしました。
チャットBotを各自のPCで動かして、機能の修正、データのチューニングを行いました。
デモができる程度には出来たので、24時に就寝しました。

お産合宿2日目

朝7時に起床して、外を15分くらい散歩しました。
東京は福岡に比べて高層ビルが多いですね。緑が意識的に植えてあって丁寧に管理されてあるんだなぁという印象でした(この写真にはほとんど写っていませんが)。

osan01

朝食を食べて、開発開始。15時から品評会です。
今回は19チームの参加があり、たくさんのプロダクトができていました。

osan02

19時の飛行機で福岡へ帰りました。

チャットBotを作って感じた課題

実際にチャットBotを作ってみることで、どういうことができて、どこが課題なのかを肌で感じることができました。

ウェブベースのチャットBotの開発コスト

今回はウェブブラウザで動作するチャットBotを作ったのですが、チャットのUI自体を自前で用意する必要がありました。LINEやFacebook Messengerのプラットフォーム上で動くボットであればチャットの画面自体の開発が必要ないため、開発コストを削減できます。この点から各種のプラットフォームで動くボットが主流となっていると考えられます。とはいえ、WebベースのチャットBotの需要はあるでしょうから、WebベースのチャットBotを簡単に作れるサービスの需要はあると思います。ちなみに今回はNode.js+Socket.ioBotUIを使って実装しました。

回答精度の問題

質問の解析、返答に関してはユーザーローカルが提供している人工知能チャットボットのAPIを利用しました。
単純なキーワード一致であれば対応できますが、少し複雑な質問になると全然関係のない応答を返したりと、精度の点ではまだまだといった印象でした。

終わりに

チャットBotの開発に関しては多くのサービスやソフトウェアが提供されており、まさにチャットBot戦国時代といったところでしょうか。このように、チャットBotを作る環境は整ってきつつあります。しかし、自然な会話ができるチャットBotを誰もが作れるわけではなく、まだまだノウハウやコツが必要だと感じます。