ゆーかん

徒然日記

海外の最新事例でみる、Machine Re-enginereeing(マシン・リエンジニアリング)

はじめに

仲良い先輩に機械学習の業務改善に関する事例を調べてーと言われたので、せっかくなのでまとめることにした。

ちなみに表題にある Machine Re engineering とは、機械学習を用いた業務の自動化による改善のこと。日本語に訳すとなんなんだろう。範囲はだいぶ狭いけど、マーケティングオートメーションとかは割とこの領域かもしれない。

実際のMachine Re-engineering はもっと範囲の広い話で、ビジネスプロセス全体を指す。クライアントとのメールのやり取りとか、日本ではあまり知られてない単語だけど、チャーン(churn)防止とかも機械学習用いると、圧倒的に改善できたりする。もうちょっと詳しく、改善できる範囲についてまとめてみる。

機械学習で改善できる範囲とは?

機械学習を用いた業務改善では、大別して以下の3つの領域で改善をすることができる。

  • コスト削減
  • CRM
  • 売上高最大化

いくつか具体例を使って見ていくことにする。紹介する例としては以下の4つ。

  1. カナダの銀行の音声照合による事例
  2. Londonのスタートアップによる、「ドキュメント作成の自動化」
  3. サンフランシスコベンチャーによる製造プロセスにおける、アラートの検知
  4. 賄賂・インサイダー取り引きを事前に検知する人工知能

などなど。どれも割とびっくりした内容があったのでそれをまとめてみる。

カナダに籍を置くNuanceって銀行

カナダにあるNuanceっていう銀行が、人の声紋を認識する音声照合を使って、1人あたりの対応時間を40秒も削減した事例。

音声照合での生体認証を導入

手順としてはこんな感じ。

  1. お問い合わせの電話がかかってくる
  2. 自然な会話の中から、音声照合
  3. 本人確認をこの音声称号で済ませる

その成果は?

1人あたり40秒くらい対応時間が減少したとか。自然な会話の中で音声照合を済ませて、気付いたら本人確認がなくなってるってすごく嬉しい。あのやりとりすごくめんどくさいんだよなぁ。。

日本でこれが可能なのか

音声照合は言語ではなく、人間の声紋をしっかり認識できるかどうかの問題なので、これはできない理由はないはず。音声認識っていう話だったら、日本語でやるのはなかなか難しいはずなんだけど(言語構造的な問題、日本語の優秀な音声認識サーバーは存在していないなど)。

ドキュメント化、データ入力(Arria : Londonに拠点を置くスタートアップ)

日頃よくあるドキュメント作成とか、データ入力。こういう単純作業に死ぬほど時間を取られると、1日が30時間あっても十分じゃない。しかも、こういう無駄で単調な作業は、かなりやる気も削がれる。できればやりたくない。

レポートの自動作成をする手助けをする

レポートの自動作成をする手助けをしてくれるやつ。自動作成といっても、完全に自動で文章が書きあがる訳ではない。この機械学習を利用したサービスは、自分の書いたテキストの編集をしてくれると思ってた方がいい。

具体的になにをしてくれるのか

バラバラで箇条書きにしたような文章を入力データとして、一個の完成度の高いドキュメントを書き上げる。箇条書きにした文章を入力としては、ちゃんとした一個のドキュメントを作ってくれるんだとか。顧客の業種の幅は広く、ヘルスケア企業から、ファイナンス、石油会社なども含まれる。結構ドキュメント化の多い大企業なんかだとすごく歓迎されるサービスなのかな。

どれくらい生産性があがるのか

生産性は25%くらい上昇したらしい。身近な数値に置き換えると、レポート作成のタスクの時間を40時間/月削減することに成功している。1日あたり2時間くらいフリーな時間ができるくらい。これはすごい。

日本でもできるのか

これまた日本語で、ラテン語系と同じクオリティで完成するとは思っちゃいけないはず。日本語は文章的なルールが崩壊しているので、文章を組み立てるのとかはすごく苦手だっていう話をよく聞くので。。

品質管理における問題解決 ( Sight Machine )

品質管理っていうよりもちゃんと言うならば、製造プロセスをしっかりと監視する必要がある。大きな倉庫でお互いの部署同士が連絡を取れない、そんな状況で部門横断的にアラートが鳴ったとしたら、原因究明には時間がかかってもしょうがない。

そんな悩みを抱えるあなたに!諦めないで、あなたにはSight Machine があるじゃない!あっという間にアラートの原因を特定、しかも「アラートが鳴る前に、やばいところを教えてくれる」機能までついてるとあったら素晴らしい。

アラートの原因追求

製造業の現場とかだと、1つの品質の問題の問題によって、何百ものアラートを同時に引き起こされる。そのいくつものアラートの根源になる問題を特定するのには通常非常に時間がかかるし、なんなら製造のプロセスを止める必要さえ出てきたりする。

Sight Machineはそのアラートパターンを学習して、問題を特定する手助けをするんだとか。しかし、次はもっとすごい。

アラートが出そうなものを、事前に感知する

さらに問題が出現する前に起こった事例のパターンも学習して、このままエラーが出そうなことを知らせることもできるらしい。そして前もって、エラーが発生する箇所を対処することで被害を最小限に留める。まぁよくあるパターンの機械学習ってやつなんだろうけど、これを実際の現場でやるってのはすごいなぁ。僕の好きなコマツのIoT事例の進化版みたいな感じ。

シンガポール最大の銀行による汚職防止作戦:DBS

知ってる人は多いと思うけど、以前にもまとめたようにシンガポールは人工知能大国。国ぐるみで人工知能を導入して、未来の社会の実験室にしてみよう、みたいなことを大臣が言っているような国。自分的には、このシンガポールみたいな国はすごくかっこいいと思う。保守的であるよりも、ドラスティックに未来だけを求める感じ、素敵。

賄賂やインサイダー情報の漏洩などの不正を犯しそうな人を事前判定

銀行の業務は結構直に色々な人の欲望に関わる。インサイダー情報だったら事前に知れればこっそりボロ儲けできちゃうし、銀行からの融資を受けられるかどうかであれば直に会社の存続に関わってくる。こういう感じのところではもちろん、きな臭い話は存在するみたい。

やってること

emailや社内での行動、ミーティングでの行動を元に学習させて、「汚職をしそうな人」を検出する人工知能

銀行に関わる不正に関しては、前から検知する試みはあったみたい。そうなんだけど従来のやり方は、「詐欺・利回り」とかの外的要因についての研究だったとか。つまり会社ではなくて、第3者の機関が人工知能を使って市場を監視していたみたい。

DBSの例は結構有名なはずなんだけど、その上記の内容がその理由。社内の不正検出について活用された事例としては珍しいらしい。

日本でこんな例はでてくるのかなぁ。。

データ分析を始めるには、多額の初期投資が必要だったりする。データの分析をしたことがある人なら分かると思うけど、データの収集、クレンジングとかには死ぬほど時間がかかるし、専門家じゃないとできないくらい面倒臭くて難しい。しかも失敗するかもしれない。データ分析でいつも正しい結果が得られる訳がない。日本で機械学習を活用した成功例で話題に上がっているものはほとんど見ない。

そのような決断を日本の企業ができるのかなぁー、、と思うとすごくこう心が暗くなったりする。企業はできるかもしれないけど、その「機械にまかせよう」っていう素敵で合理的な無責任さを良しとしない社会も存在するような気がする。

僕は学ぶことが大好きで結構真剣にやったりしてる。だからこそその分感情を持つ人間の限界を感じる。感情が判断を鈍らせる人間である限り、100%合理的で理想的な行動をするなんて不可能だ。機械に任せて生産性を上げて暇を作って、趣味に時間を費やせるような世の中であるほうが素敵だなぁと思う。

Qiita:機械学習を用いた、業務改善最前線を追え!海外事例で見る、"Machine Re engineering" とは?

vimで検索した文字列から行末まで削除を、検索ヒットした文字列全てで繰り返す

メモリ8GB詰んでるmacを使ってるのですが、プラグインや便利なソフトウェアの入れすぎでPCが重くなりがちになってきたので、vimへの移行を検討中。

移行期なので、Visual Studio Codeのvimマッピングを使って、集中したい時はその恩恵を借りながら少しずつ勉強しています。

タイトル通りのことをするのに割とはまったので、メモ書くを残します。

やりたいこと

以下の文字列の,に続く部分を全て削除したかった。名前だけを抽出したかったんです。

Lauren Rhue, Wake Forrest University
Wael Jabr, Georgia State University
Jesse Bockstedt, Emory University
Arvind Malhotra, University of North Carolina
Pei-yu Chen, Arizona State University
Ben Fabian, Hochschule für Telekommunikation Leipzig
Mareike Möhlmann, University of Warwick
Ioanna Constantiou, Copenhagen Business School
Michel Avital, Copenhagen Business School
Young Bong Chang, Sungkyunkwan University
Wooje Cho, University of Seoul
Sangpil Han, Arizona State University
Byung Cho Kim, Korea University Business School
Seung Hyun Kim, Yonsei University
YoungOk Kwon, Sookmyung Women’s University
Gene Moo Lee, University of Texas Arlington
Hyelim Oh, National University of Singapore
Jaehong Park, Kyung Hee University
Sungyong Um, National University of Singapore
Ulrich Bretschneider, University of Siegen, Germany
Rob Gleasure, University College Cork, Ireland
Lorraine Morgan, National University of Ireland
Ivo Blohm, Universität St. Gallen, Switzerland
Keongtae Kim, City University of Hong Kong
Joseph Feller, University College Cork
Hanna Halaburda, bank of Canada

結論

下記の順番に実行すればできます。

/,  (<- , を検索)
qqnd$q  (qにマクロを登録)
100@q  (繰り返す)

nで次の検索結果に移レなくなったタイミングでエラーで抜けてくれるので、適当に大きい値をcountしてあげれば、ヒットするものが全て消せる

参考

Vimで編集を効率的に行うための繰り返し操作について

東大が大学ランキング首位から転落!? 人工知能が国を管理する近未来社会シンガポール

東大がアジア大学ランキング1位から7位に転落

イギリスの教育専門誌がアジア各国の大学の最新のランキングを発表し、シンガポールの大学がトップに立った一方、このランキングで3年連続でトップだった東京大学は7位に転落しました。 NHK NEWSより

って報道を見て、朝から「いや、待てよ1位がシンガポール?東大も負けてないっしょ、おいいい!?」と憤慨していた。

で、録画してあったNHKスペシャル人工知能は天使か悪魔か」シンガポールが取り上げてたのを思い出した。それを見て、シンガポールが1位ならしょうがないか。。」 って納得して思わず書いたエントリー。

いやシンガポールやばいっすよ、まじ。人工知能を国ぐるみで有効活用している、アジアの小さい巨人でしたわ。

シンガポール人工知能事情

シンガポールは国土が狭い。人口密度は世界第2位で、東京都の人口密度も軽く上回っている。そんな中国際社会で生き残っていくために、国ぐるみで人工知能を活用した効率化社会を実現しようとしている。

NHKスペシャルの「人工知能は天使か悪魔か」で、シンガポールのスマートシティ大臣みたいな人が

人工知能で国を効率化する。シンガポールはその実験室になる。

みたいなことを言ってて、すっげーやる気だな、、って感心した。。

実際の取組を見てみても、

  • 渋滞を未然に防ぐ
  • 国営マンションの住人の健康状態の把握
  • 銀行でワイロなどの不正を事前に察知!

など。これを国と企業が協力して進めているんだから、凄まじい。自国の国際社会での状況などをしっかり把握してやっててすごい。。

いくつか簡単に紹介。

人工知能で不正を監視!

シンガポールの銀行が取り入れている人工知能。従業員の行動やチャット、社内メールの内容を解析して、不正をしそうな人指数みたいなものを定義。それを元に、収賄とかインサイダー取り引きとかを未然に防いでるのだとか。

その的中率は約9割!!とんでもねぇ。。

老人の孤独死はさせない!

シンガポールの国営マンションには監視するためのカメラを全ての部屋に設置するらしい。監視と言っても悪い使われ方は一切していなくて、 - 普段とは違う行動をしている人の健康状態の把握 - 異常があればその緊急度を察知して、家族や医師に連絡するかを判別 - みんな幸せ!ばんざい!

ってなるとか。日本の老人を全てこういった国営マンションに住ませて、日常生活に困ってる度人工知能で計測。それが高い順に老人ホームとかに入れてあげるとかしたらもっと世の中は幸せになりそうだなぁ。。って思った

人工知能で渋滞改善

車の平均速度を測定、渋滞が起こる前兆の速度みたいなものを人工知能を活用して測定。それを検知すると、青信号の時間を延ばして渋滞を未然に防ぐらしい。。

こんな感じの社会は近未来だと思ってたのに、すぐ近くの国で実現されているなんておったまげた とんでもねぇな、シンガポール!!

qiita

東大が大学ランキング首位から転落!? 人工知能が国を管理する近未来社会、シンガポールが1位なら納得かも。。

人工知能活用アプリまとめ

機械学習人工知能の勉強を最近してるんだけど、今世の中にどんなアプリがあるのかまとめてみたくなった。これらを調べてまとめた上で、これから作るアプリにうまい具合に詰め込んで、流行り遅れて人工知能アプリをうまく作りたい。

普通にsmartnewsとかGoogleアプリにも機械学習はふんだんに使われてるけど、ちょっと今風で新しいものを取り上げてみる。

人工知能AI英会話ナンナ

人工知能が話し相手になってくれて、英語が勉強できるサービス。無料だし。まだテストなのかな? そして自分が苦手な構文とかを、ナンナが指摘してくれるらしい。ほぉ〜

これがちゃんとできたら素晴らしい。

ナンナ

SENSY

ファッション×人工知能。コーディネートとかを出してくれるんだとか。 自分の家にある洋服とか全部登録しなきゃいけないのかな?

そもそも朝ってそんなに時間無い気がするけど、、、 使うシーンがイメージできないなぁ〜

SENSY

Less Mail

自動返信をしてくれるらしい。これは日本語の言語的な問題で期待できないんじゃないかな これはちょっと使ってみたいなぁと思います。

http://robingets.me/lessmail/thanks.html

Health Tap

これはいいかもしれない。日本は医療先進国だから、なかなか注目されないのかもしれないけど、、、 これも既にリソースを持っている人たちが、やっているイメージ

既にアメリカでは、毎月1000万件以上の質問が問い合わせされているとか。実際、これがあったらとてつもなく欲しい。

人工知能はおそらく、医師と質問者との効率のいいマッチングに使われているのかな?

Health Tap

SELF

いわゆるパーソナルアシスタント。会話ができたり、日常のログを記録してくれたり、ニュースとかを提案してくれたり。FBを見る限り、3ヶ月前くらいにスタートしたのかな?FBがビジネスページじゃなくて、いいね!できないのが印象的、笑

SELF

感想

あまり面白いモノないなぁ。なんとなく思ってたけど、人工知能ってやっぱり前面に押し出すものじゃない気がする。今ある人工知能押し出してる系のものって、マッチング・パーソナルアシスタントの2個くらいしかないのか。

Google PhotoとかAmazonのレコメンドとかの方が圧倒的にいけてるな。そもそも人工知能って言葉が氾濫しすぎてて、機械学習なのか、ただのプログラムなのか、ディープラーニングなのか全くわからない。雰囲気でビジネスやってる時点でそもそも終わってるのか。

今回思ったのは、 - 優れた人工知能を作るには、そもそも圧倒的なデータ量が必要 - 人工知能効率化のための手段でしかない - 人工知能を前面に押し出してる時点で既にイケてない

人工知能アプリを作りたいなら、少し考えないとダメかもしれない。

Qiitaの元記事:ここらで1つ、気になった”人工知能”搭載アプリをまとめてみる

python3での文字列フォーマットの方法まとめ

昔ながらのやり方(まだ使われてるけど)

'This is our %s' % 'string'
  # This is our string

print('we are learning %s %s' % ('Python', '3'))
  # we are learning Python 3

print('we are learning %(lang)s %(ver)s' % {'lang': 'Python', 'ver': '3'})
  #we are learning Python 3

新型 (推奨されてるやり方)

文字列の後ろに formatメソッドをくっつける。 挿入する場所は基本的に { }にて指定する。

'This is our string {}'.format('in Python')

'{} {} {}'.format('a','b','c') 
  # 'a b c'

'{2} {1} {0}'.format('a','b','c') 
  #c b a
  #インデックスみたいな指定ができる

'we are learning {lang} {ver}'.format(lang = 'Python', version = '3') 
  #we are learning Python 3

language = ('Python', '3')
'we are learning {0[0]} {0[1]}'.format(language)
  #we are learning Python 3

上級編

formatメソッドを使うんだけど、思ったよりたくさんのことができるらしい。

  • 数字をバイナリーに変換
  • 左寄せ・右寄せ・中央寄せとかで文字列作成
animal = ('Dog', 'Cat')
name = ('Maggie', 'Missy')

'I have a {0[0]} named {1[0]}'.format(animal,name)
    #I have a dog named Maggie

'I have a {0[1]} named {1[1]}'.format(animal,name)
    #I have a cat named Missy

'{:<50}'.format('aligned left')
  #'aligned left          
  #50インデックス用意して左詰めで文字入力
                            '{:a<50}.format('aligned left ')
  #'aligned left aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
  #上のが見づらいのでaで埋めてみた

'{:>50}'.format('aligned right')

'{:^50}'.format('aligned center')

'{:$^50}'.format('More Money')
  #'$$$$$$$$$$$$$$$$$$$$More Money$$$$$$$$$$$$$$$$$$$$'

'Binary: {0:b}'.format(324)
    #Binary: 101000100

'{:,}'.format(123456787654321)
    #'123,456,787,654,321'

  #割り算した結果も表示できるらしい
correct = 78
total = 84
'Your score is: {:.1%}'.format(correct/total)
    #'Your score is: 92.9%'
'Your score is: {:.3%}'.format(correct/total)
    #'Your score is 92.857%'

Qiitaの記事はこちらPython3での文字列フォーマットまとめ 旧型で生きるか、新型で生きるか

家庭教師業界についてのまとめと感じた課題

家庭教師業界ってオンライン授業がとても流行っていますが、実際に人を送る方の業界って全く注目されてないですね。気になったのでざっくり調べて見ました。

  1. 検索ワードから調査
  2. 業態の調査

1. 検索エンジンから調査

キーワードプランナーで検索ワード確認

家庭教師と入力して検索ワードを見てみました。想像通りだが、「トライ」が純粋想起を勝ち取っているようで、結構な検索ボリュームを持っています。

f:id:u-kan:20171009114959p:plain

ただ、「家庭教師 英語」といった「家庭教師 + 教科」っていう検索が無いのが不思議でした。使い方間違ってるのかな?

リスティング広告

どんな感じの広告が出てくるのか気になったので、リスティング広告から調べてみました。

f:id:u-kan:20171009115650p:plain

成熟産業なのでリスティング広告は激戦っぽいです。何回調べても新しい業者が現れる。。笑

「家庭教師 トライ」でも調べてみると意外なことに、トライのリスティング広告しかでてきませんでした。死守してるんですかね。

f:id:u-kan:20171009115924p:plain

2. 業態の調査

先ほどのキーワードプランナーの結果から見ても、ただし、全体の検索量も10万近く。そもそもマーケットはそこまで大きく無いようですね。

応募の多い時期は?

1月か4月が多いと想定していました 理由は昔よく両親から、「次の学年は大丈夫なの?」、「今年度は頑張ってよ」などと詰められるのがこの月に多かったからです。

グーグルトレンドで確認してみるとこんな感じです。時間軸がわかりにくい。。

f:id:u-kan:20171009120606p:plain

だいたいこんな感じの傾向がありました。まぁ肌感にはあってると思います。

  • 1 ~ 4月にかけて徐々に上がり始める。
  • 5 ~ 8月にかけてはよこばい 
  • 9 ~ 12月にかけて現象

既存サービスを見てみる

大きく分けて下記のようなカテゴリ分けになると思います。オンライン・オフラインがカテゴリのトップになるのが正しいのかはわかりませんが。

  • オンライン
    • ビデオ授業
    • 質問サービス
  • オフライン
    • 対面授業

現状激戦区になっているのが、主にオンライン。特にオンラインのビデオ授業。基本的にはZ会の一人勝ちですが。。

オフラインの対面授業に関しては、トライを除けば、10年前のサイトのまま整備もされていないようなのが多数、、笑

しかも、このオフライン対面授業のための応募プラットフォームがいけてなさすぎる。下記がさらっと感じた課題感。

  • 実際にあって授業を受けるまで先生の人となりがわからない
  • 先生の過去の成果もわからない
  • 応募はネットだけどそれ以外は基本アナログ
  • 先生とのマッチングのために、何十項目も入力しないといけない

課題だらけで、これが理由で家庭教師を雇わない人ってたくさんいるような気が。。

そもそもマーケット大きく無いから、参入メリットがないケースが多いのかな?

そもそも対面授業向けの家庭教師の申し込みサイトで大事なこと

そもそも家庭教師を利用するときに大事なのは、プラットフォームを運営する会社の信頼度ではなく、教えてくれる先生の過去のレビューと人となりなはず。

にも関わらず、先生の実績が直接見れるサイトは一個もないようです。ここがブラックボックスになっている現状は、如何なものでしょう。

ちなみに、カナダでホストファミリーを探したときにも同じような課題は抱えてました。探したと言うか、業者が全てやってくれるのですが、、

現地に行くまで家の様子も泊まる家も分からない。国籍もあまり分からずこちらに選択肢が無い状況。ここも社会的な課題だと常々思います。作ってもUIがほぼairbnbになりそうですが。。

pythonの秀逸なオブジェクト保存方法の設計

びっくりした話

以下のように記述した際、aとbは全く同じオブジェクト(ここでは2)を指しているらしい。

a = 2
b = 2

全く同じ。英語で言うと"the same object"。色々と疑問が生じたので調べてみた。 まずは、疑問を箇条書きにしてみます。

  1. 同じところを指してたらaを変更した時に、bも変わっちゃわない?
  2. てかそれ本当なの?

疑問1:書き変わらない?

これはよく考えれば、一個前の記事で調べてた内容でした。

簡単にまとめると、

全く同じオブジェクトが既に存在している場合には、
メモリの節約のために、その同じオブジェクト参照する。

同じオブジェクトが存在しなければ、新しく作成される。

つまり、a=3と新しく入力された場合、新規にオブジェクトを作成する。そして、b=2はそのまま保存される、というところでしょうか。

もちろん初心者のメモ書きなので、根本的な部分ではもっと複雑なことが起こってるのでしょうが、この定義でも矛盾なく説明できるので、とりあえずこのまま進んでみます。

疑問2:本当かどうか確かめる(id関数の使用)

本当かどうか確かめるために、メモリ空間のアドレスと言われるものを直接見られるid関数を使って見る。

id() について調べてみると分かるのですが、どうやら識別値を戻り値とするようです。つまり、同じオブジェクトを指していれば、戻り値は同じで、違うものであれば、戻り値も違うってことですね。

では、本題の本当に一緒のものなのかを調べていきます。

a = 2
b = 2

id(a) #4401166416

id(b) #4401166416

id(a) == id(b) #True 数字を見るのが面倒なので==使ってみた。

どうやら本当らしい。つまり、オブジェクトが新しく生成される時のルールは以下の通りになっているんだろう。

c=3を定義して、もう一回実験をしてみた。

c = 3 

id(c) #4401166448

id(a) == id(c) #False 

#この後、aを3に書き換えてcと同じになるか確かめる。

a = 3

id(a) #4401166448

id(a) == id(c) #True

と見事一緒になりました。つまり、

同一のオブジェクトが存在してれば、
新しいオブジェクトは作られない。

みたいですね。(※追記にて、一部訂正あり)

何の役に立つかわからないけど、内容的には不思議で面白いですねぇ

追記

yubaさんより

このような設計手法のことをFlyweightパターンと呼びます(メモリ消費が軽くなるから「フライ級」です)。ご参考に。

とのことです。ありがとうございます。

shiracamusさんからコメントにて訂正を頂きました。

どうやら大きな値である場合には、値が全く同じオブジェクトであっても、新しいオブジェクトは作られるみたいです。

てことで実行してみたのがこちら。

d = 50000
e = 50000

id(d) #4406088592
id(e) #4404350832

id(d) == id(e) #False

システムの中身のしまわれ方とか見るのも、意外と面白いですね

元記事:pythonでの、変数の処理について詳しく調べてみた