とある三流プログラマーの覚書

機械学習、自然言語処理を中心にIT系の話題を書いていく予定です

人工知能に置き換えられる職業について考えてみた

2016年4月に考えた人工知能に置き換えられる職業

はじめに

ITmedia「人工知能に置き換えられる職業と置き換えられない職業」という記事を見つけました。

元ネタは、野村総研が2015年の12月に出した「2030年の日本に備える」というレポートらしいです。

12月から4か月が経過して、AlphaGoがトップ棋士に勝利を経た現在、人工知能に置き換えられそうな職業は増えているのではないかと思ったので、2016年4月時点の私の予想を書いておきます。

なお、個人的な予想であって、特に根拠はありません。

置き換えられる可能性が高い職業は変わらないと思うので、置き換えられる可能性が低い職業について考えてみます。

人工知能に置き換えられそうな職業

アナウンサー

時間内に正確に原稿を読むというのは、コンピュータの得意とするところです。

インテリアコーディネーター、スタイリスト、旅行会社カウンター係

個人の嗜好に合わせた最適な組み合わせを提案するのは、データが揃えばコンピュータの方が得意そうです。

コピーライター

広告コピーを作る人工知能はすでにあります。データが揃えやすい分野だし、いずれコンピュータの方が上になるでしょう。

作曲家

作曲する人工知能もすでにあります。これも新しい音楽を作り出すくらいの才能がないと、苦しいでしょう。

音楽教室講師、大学・短期大学教員、日本語教師

MOOC(大規模オープンオンライン講座)的にトップの人の講座を、いつでも、どこでも受けれるようになっていくでしょう。

街の音楽教室や、トップ以外の大学教員なんかは苦しいのではないでしょうか。

インテリアデザイナー、グラフィックデザイナー、ジュエリーデザイナー、etc

どれがどんな仕事かよくわかってないのですが、データが多く、組み合わせ数の少ないデザインは、いずれコンピュータにもできるようになりそうです。

ネイル・アーティスト

3Dプリンタ的に手を入れたら、ネイルアートを施してくれる機械はできそうです。

人工知能に置き換えられるのが最も遠そうな職業

アロマセラピスト、ソムリエ、料理研究家

デジタルデータ化されていない分野は、コンピュータには何もできません。

視覚、聴覚はデジタルデータ化が進んできていますが、味覚、嗅覚、触覚はまだまだデータ化されていなので、この分野は当分人間の仕事でしょう。

映画監督、レストラン支配人、etc

ものごとの全体をデザイン、設計する仕事は人間の仕事です。

監督が思い描く映画を作るために、人工知能が利用されるのであって、コンピュータが映画を作りたがったりはしません。

小学校教員、フリーライター、etc

子供に勉強をさせたり、対象に取材をするなど、相手に何かさせるというのはロボットには難しいと思っています。

まとめ

よくよく考えると、ほとんどの仕事が、いずれはコンピュータにもできそうな気がしてきました。

つまり、これから先の時代は、いわゆる人工知能を使いこなす人とそうでない人には大きな差がつく時代になっていくのではないでしょうか。

というわけで、ますます機械学習の勉強に対するモチベーションが上がったので、考えてみてよかったです。

未来を予想してみるというのは、ほとんどが外れるとしても、意味のあることだと思いました。

 最後に

どんな仕事なのか、よくわからない職業がたくさんありました。

なんとなくイメージで書いているので、間違ってたらすいません。

あくまで、個人的に考えてみた覚書です。

『実践機械学習システム』1章

『実践機械学習システム』1章をやってみた記録

はじめに

機械学習勉強のために、O'Reillyの『実践機械学習システム』を買ってきました。

とりあえず理論は置いといて、コード書いて試してみること優先です。

ちなみに例の黄色い本を本屋で軽く読んでみましたが、すぐに挫折しました。

1章の内容

過去のWEBトラフィックデータから、将来のトラフィックを予測するという課題を通して、典型的な機械学習によるデータ分析の手順を紹介しています。

典型的な手順とは以下の通りです。

  1. データを読み込み、データを整形する
  2. 入力データの調査および解釈を行う
  3. 学習アルゴリズムにどのような形でデータを入力するのが相応しいか分析を行う
  4. 正しいモデルと学習アルゴリズムを選択する
  5. 結果に対して正確な評価を行う

また、よく使われるライブラリである、NumPy, SciPy, Matplotlibが紹介されています。

メモ

NumPyについて

数値計算を高速に行うために、型付きの多次元配列と、配列を操作する数学関数を提供するライブラリです。

無駄なコピーをしない、配列や条件式で配列の要素にアクセスできるといった特徴があります。

import numpy as np

a = np.array([1, 10, 100, -5, 1000, -55])

# 配列の次元数を変換
b = a.reshape((3,2))
print(b)
>>>[[   1   10]
>>>[ 100   -5]
>>>[1000  -55]]

# 通常はコピーされない
b[0][0] = 77
print(a)        
>>>[  77   10  100   -5 1000  -55]

# コピーするときは
c = a.reshape((3,2)).copy()
c[0][0] = 400
print(a)
>>>[  77   10  100   -5 1000  -55]

# 配列でアクセス
print(a[np.array([2,4])])
>>>[ 100 1000]

# 条件式でアクセス
print(a[a>10])
>>>[  77  100 1000]

# 1章で使った主な関数
x = np.array([1, 2, 3, 4, 5])
y = np.array([2, 4, 6, 8, 10])

# numpy.polyfit(x, y, deg) 回帰分析、xとyをdeg次式で回帰分析した結果を返す
f = np.polyfit(x, y, 1)
print(f)
>>>[  2.00000000e+00   3.97205465e-16]

# 配列xをランダムに並べ替えて返す
z = np.random.permutation(x) 
print(z)
>>> [3 1 4 2 5]

# numpy.linspace(start, stop, num=50) startからstopまでの間のnum個の要素を返す
a = np.linspace(1, 10, 20)
print(a)
>>>[  1.           1.47368421   1.94736842   2.42105263   2.89473684
>>>   3.36842105   3.84210526   4.31578947   4.78947368   5.26315789
>>>   5.73684211   6.21052632   6.68421053   7.15789474   7.63157895
>>>   8.10526316   8.57894737   9.05263158   9.52631579  10.        ]
   

SciPyについて

NumPyの配列を利用して、多くの数値計算アルゴリズムを提供しています。

SciPyの名前空間からNumPyの名前空間にアクセスできます。

import numpy as np
import scipy as sp

sp.polyfit is np.polyfit
>>>True

Matplotlibについて

グラフ描画ライブラリです。

Pythonでデータ処理をするときは、だいたいこれで可視化するのが一般的のようです。

import matplotlib.pyplot as plt

x = np.array([1, 2, 3, 4, 5])
y = np.array([2, 4, 6, 8, 10])

# 散布図を書く
plt.scatter(x,y)    
plt.title("title")
plt.xlabel("x-axis")
plt.ylabel("y-axis")
plt.autoscale(tight=True)  

# 凡例を左上に表示する
plt.legend(["legend"], loc="upper left") 

# グリッド線を表示する 
plt.grid()
plt.show()

Doc2Vecでライトノベルの内容紹介を解析

はじめに

前回ラノベの内容紹介をトピックモデルで解析しました。

同じデータを今度はDoc2Vecにかけて遊んでみます。

Doc2Vecとは、文書(Document)のベクトル表現で、文書同士の類似度を算出したり、文書間で足し算や引き算ができるらしいです。

これで好みの小説を探せたりできたら面白いですね。

方法

gensimにDoc2Vecモジュールがあるので、これを使います。

コードはWord2Vecの進化形Doc2Vecで文章と文章の類似度を算出するを参考にさせてもらいました。

結果

とりあえず、メジャーどころの「ソードアート・オンライン」と類似度が高い小説を抽出しました。

ソードアート・オンライン〈1〉アインクラッド

  1. ニーベルングの指輪 2 神々の黄昏、そして―― : 0.34169912338256836

  2. アイドライジング! (4) : 0.31899577379226685

  3. レオ・アッティール伝 II 首なし公の肖像 : 0.3177222013473511

  4. 会長の切り札 忍者ガールで罠をはれ! : 0.31571415066719055

  5. 金星特急 (7) : 0.31085237860679626

あまり似ていない…

まとめ

期待していた結果にはなりませんでした。

チューニングの問題というよりは、内容紹介くらいの短い文書だと、わかりやすい類似度は出てこないような印象です。

もう少し長い文書で次回は試してみたいですね。

ライトノベルの内容紹介をトピックモデルで解析

ライトノベルの内容紹介をトピックモデルで解析

はじめに

最近、機械学習とか自然言語処理に興味があります。

まずは、理論は置いといてライブラリで遊んでみようということで、 小説家になろうのランキングをトピックモデルで解析(gensim) を参考にgensimのトピックモデルでラノベの内容紹介を解析してみました。

トピックモデルというのは、対象の文書が何について書かれたものなのかを推定してくれるモデルらしいです。 内容紹介から、ラノベのジャンルや代表的な要素を抽出できたらいいなと思ってます。

方法

[ラノベの杜](http://ranobe-mori.net/) さんにラノベのisbnコード一覧があったので、このisbnコードをキーにAmazonの内容紹介を取得します。

1975年からあったけど、古いのはAmazonに内容紹介がなかったので、とりあえず1991年〜2015年分を解析します。

ソースコードは上記ブログのものを、ほとんどそのまま利用しました。

結果

内容紹介25年分全件からgensimのLDAでトピックを抽出しました。

トピック数はとりあえず50個にしました。

10個、20個、30個と試してみたけど、少ないと人間の直感とは合わない気がします。

結果の全件がこちら

0.057*生徒 + 0.024*会長 + 0.018*イベント + 0.013*水着 + 0.012*為
0.037*ポニーキャニオン + 0.028*花嫁 + 0.018*ライト + 0.015*勝負 + 0.014*ジーク
0.028*豪華 + 0.026*イラスト + 0.022*出版 + 0.021*太郎 + 0.018*社
0.029*GET + 0.028*太 + 0.023*隊 + 0.015*戦 + 0.014*隊長
0.034*蒼 + 0.027*歌 + 0.025*馬 + 0.015*引き + 0.015*条件
0.027*応募 + 0.026*キャンペーン + 0.024*付属 + 0.021*開催 + 0.018*あやかし
0.024*婚約 + 0.022*召喚 + 0.017*国王 + 0.016*結婚 + 0.015*騎士
0.037*コード + 0.036*獣 + 0.031*伯爵 + 0.026*ファンタジア + 0.022*シリアル
0.032*電撃 + 0.023*収録 + 0.020*編 + 0.018*キス + 0.017*シナリオ
0.123*勇者 + 0.031*魔王 + 0.026*妹 + 0.018*里 + 0.017*属性
0.024*樹 + 0.022*銀 + 0.015*紅 + 0.013*革命 + 0.013*リオン
0.047*君 + 0.032*道中 + 0.028*vs + 0.019*!》 + 0.016*右手
0.019*皇国 + 0.019*土地 + 0.018*武器 + 0.017*加速 + 0.016*――!?
0.028*エルフ + 0.025*吸血鬼 + 0.023*女神 + 0.019*転生 + 0.017*令嬢
0.036*探偵 + 0.030*殺人 + 0.022*連続 + 0.018*神社 + 0.017*寮
0.023*契約 + 0.013*対峙 + 0.013*人形 + 0.012*狩り + 0.011*ミッション
0.023*女の子 + 0.019*コメ + 0.016*生 + 0.014*子 + 0.012*ハーレム
0.028*版 + 0.027*周年 + 0.023*アニメ + 0.018*今年 + 0.014*本
0.065*魔王 + 0.035*帝国 + 0.018*同盟 + 0.018*理 + 0.017*軍
0.017*緋 + 0.013*お嬢様 + 0.013*執事 + 0.011*将 + 0.011*天然
0.031*祭 + 0.020*文化 + 0.019*リア + 0.013*郎 + 0.010*規模
0.058*王子 + 0.026*魔法 + 0.023*王女 + 0.019*様 + 0.017*イラスト
0.027*桜 + 0.016*残念 + 0.013*高校生 + 0.012*事故 + 0.012*修学旅行
0.036*学院 + 0.019*モテ + 0.018*黒幕 + 0.016*ゲーマー + 0.016*なみ
0.116*竜 + 0.023*霊 + 0.020*幻想 + 0.019*曲 + 0.019*華
0.030*悪魔 + 0.028*香 + 0.020*緒 + 0.020*満喫 + 0.019*薔薇
0.021*ミステリ + 0.021*千葉 + 0.020*京極 + 0.019*注目 + 0.019*埼玉
0.032*男子 + 0.021*結 + 0.020*零 + 0.017*ライフ + 0.016*銀賞
0.045*アリス + 0.031*カード + 0.021*百 + 0.019*魔界 + 0.016*枚
0.027*ダンジョン + 0.021*ぼく + 0.019*政治 + 0.015*紗 + 0.013*毬
0.025*組 + 0.025*先生 + 0.019*公式 + 0.019*by + 0.016*サイト
0.023*攻略 + 0.020*皇 + 0.016*宇宙 + 0.016*機 + 0.013*殺し
0.058*騎士 + 0.020*未来 + 0.019*聖 + 0.016*最強 + 0.016*人類
0.020*プレイヤー + 0.018*幽霊 + 0.015*ミステリー + 0.012*監視 + 0.011*日本
0.050*魔術 + 0.039*魔女 + 0.022*魔法 + 0.019*武 + 0.013*ドラゴン
0.072*魔法 + 0.038*村 + 0.027*感謝 + 0.017*珠 + 0.015*士
0.034*漫画 + 0.026*原作 + 0.024*愛 + 0.022*イケメン + 0.021*料理
0.036*葉 + 0.032*海賊 + 0.029*咲 + 0.020*祭り + 0.018*海
0.039*ライト + 0.030*悠 + 0.023*新人 + 0.017*導 + 0.014*花
0.020*夏 + 0.016*あなた + 0.016*春 + 0.015*菜 + 0.014*夫婦
0.031*雪 + 0.019*白 + 0.017*綾 + 0.015*魔神 + 0.013*空
0.038*達 + 0.032*島 + 0.027*精霊 + 0.022*天 + 0.016*使い
0.040*GA + 0.035*プレゼント + 0.020*奨励 + 0.014*司 + 0.014*気持ち
0.045*種類 + 0.028*迷宮 + 0.019*妖怪 + 0.016*怪異 + 0.014*憑
0.034*鬼 + 0.027*アプリ + 0.018*ログ + 0.017*紫 + 0.017*衣
0.034*神様 + 0.024*妹 + 0.021*族 + 0.019*法 + 0.014*日常
0.060*猫 + 0.030*堂 + 0.025*コン + 0.018*累計 + 0.017*宝石
0.032*貴族 + 0.028*城 + 0.026*豪華 + 0.022*章 + 0.017*執筆
0.055*応募 + 0.032*斗 + 0.031*説明 + 0.027*商品 + 0.026*表示
0.048*夫 + 0.031*アイドル + 0.027*天使 + 0.021*犬 + 0.017*マンガ

わかりやすいトピックとしては、このあたりでしょうか。

殺人事件と探偵のミステリ

0.036*探偵 + 0.030*殺人 + 0.022*連続 + 0.018*神社 + 0.017*寮

魔法とドラゴンが出てくるファンタジー

0.050*魔術 + 0.039*魔女 + 0.022*魔法 + 0.019*武 + 0.013*ドラゴン

中世風異世界の恋愛物

0.024*婚約 + 0.022*召喚 + 0.017*国王 + 0.016*結婚 + 0.015*騎士

プレゼントとかキャンペーンに応募みたいなのが、トピックとして抽出されてます。 このあたりは、前処理で取り除いておくべきものですね。

0.037*コード + 0.036*獣 + 0.031*伯爵 + 0.026*ファンタジア + 0.022*シリアル
0.028*豪華 + 0.026*イラスト + 0.022*出版 + 0.021*太郎 + 0.018*社
0.027*応募 + 0.026*キャンペーン + 0.024*付属 + 0.021*開催 + 0.018*あやかし
0.040*GA + 0.035*プレゼント + 0.020*奨励 + 0.014*司 + 0.014*気持ち

まとめ

gensimのLDAでそれっぽいトピックが抽出できた。

でも、人間にはよくわからないトピックも多数ある。

自然言語処理をやるならやはり前処理は大事。

AlphaGo 対 イ・セドル九段の囲碁対決の感想

3/9から3/15にかけてGoogle囲碁ソフト「AlphaGo」対 トップ棋士のイ・セドル九段の対局が行われていました。注目の対戦だったので囲碁のルールもよくわかってないのに、土日はユーチューブライブとニコニコ動画の解説に張り付いていました。

 

結果は、AlphaGoの4勝1敗ということで、トップ棋士がコンピュータに負けて、囲碁界は騒然としていたみたいですが、いやいや、囲碁界どころじゃないだろう、これは人類やばいんじゃね!というのが私の感想です。

 

AlphaGoを作ったのはGoogle傘下のDeepMind社です。DQNを作った会社ですね。人間が何も教えなくても、自己学習して昔のゲームを人間よりも上手くプレイできるようになった、あのソフトを作った会社ですね。

 

つまり、これはDeepMindの自己学習アルゴリズム囲碁の対戦データを呑ませて、自己学習させたら、人間のトップを超えるくらいになってしまったということなんでしょう。

 

ということは、コンピュータ上でシミュレーションできて、スコアが明確につくような分野では、もう人間はコンピュータに勝てないというのが証明されてしまったんじゃないかな、と思っています。

 

ちょっと前に、10年後には今ある仕事の半分はコンピュータに置き換えられるというような予想がありましたが、下手するとそれどころじゃないんじゃないかと思いました。

 

うーん、この分野はちゃんとウォッチしておかないと本当に怖そう。