シリコンバレー発 アルゴリズム革命の衝撃 - 櫛田健児
シリコンバレー発 アルゴリズム革命の衝撃 Fintech,IoT,Cloud Computing,AI、 アメリカで起きていること、これから日本で起こること
- 作者: 櫛田健児
- 出版社/メーカー: 朝日新聞出版
- 発売日: 2016/09/20
- メディア: 単行本
- この商品を含むブログ (1件) を見る
著者の櫛田健児さんは、スタンフォード大学の政治学博士とのことで、本書ではアルゴリズムでもビジネスでもなく、政治や社会の切り口から第3次AIブームについて議論されている。
櫛田さん自身、日本とシリコンバレーをつなぐ仕事をされているようで、いくつか日本語の資料をネットで見つけることができる。いずれもシリコンバレーと日本のビジネス社会および会社文化の比較が主な内容となっており、シリコンバレーの新陳代謝の盛んな環境で生まれる技術を旧態依然とした日本大企業へ取り込む接点をどう作っていくかに関心がある様子。
- 『後続者のいない先行者』日本の情報通信 ガラパゴス化の謎: 国際政治経済分析」
- 「シリコンバレー経済エコシステム『活用』への新しいパラダイム:スタンフォード大学からの視座」
- 「シリコンバレーの本質と日本の底力と課題に迫る:アルゴリズム革命から見るFintech, IoT, Cloud Computing, Biotech」
(セミナータイトルから言って、おそらく3つめのセミナーが本書の下敷きになっていると思われる)
そういった背景を確認して本書を見ると
- 1章目:
- シリコンバレーで生まれる革新的ビジネスモデルの例(Uber, airbnbなど)と、それを可能にした技術・設備投資の特徴
- 2章目:
- パソコン、ビッグデータ、クラウド、AIというここ20年で並んできたブームキーワードはコンピュータ処理能力のコモディティ化であり、AIの出現によってアルゴリズムを作るというところまでコモディティ化してきているという時代の流れ
- 3章目:
- 今後進んでいくアルゴリズム生成のコモディティ化(≒自動化)に必要なものは、データであることから、データを取得できるようにする「できる化」(IoT)をどれだけ取り組んだかでビジネスの勝ち負けにつながることを説き、さらに、それをどれだけ早く製品に適用できるかが勝負になってくるということを提言
(市場に出回っているものを後からアップデートすることも含み、それを可能にするリッチなハードウェア搭載も戦略の一つ) - 4章目:
- 2章目のコンピュータ処理能力のコモディティ化による副産物としてFintechも同様に世界が変わる動きとしてあることを紹介
- 5章目:
- 3~4章のような変化による果実を日本企業が手にしていくために、日本の、会社の組織あるいは政治、社会が変化する必要がある部分の提案
という流れになっています。
私自身、年齢的にも会社組織を変えられるほどのポジションにはいないので読後の無力感は否めませんが、欧州留学時に技術者の卵がこういった話を(技術者なのに)するような授業も受けています。20年前以上前の本ですが、Japanese Negotiatorにあるような浪花節が上位に来る会社文化から、そろそろ脱皮するような時期に来ているのかもしれません。
The Japanese Negotiator: Subtlety and Strategy Beyond Western Logic
- 作者: Robert M. March
- 出版社/メーカー: Kodansha America, Inc
- 発売日: 1990/07
- メディア: マスマーケット
- この商品を含むブログを見る
(アメリカも40年前は浪花節的な会社文化だったそうで、日本にコテンパンにされた1980年代から90年代に今の形に変わっていったそうです)
FFTと窓関数の効果
先日FFTのエネルギーについて記事を書いたところ、 その内容を山岡さんに取り上げていただき面白い検証につながり大変楽しく読ませていただいています。
この中で周波数とパワースペクトルと、そしてビンの関係を考察してしていらっしゃいます。
具体的には「ピークの周波数の周辺のパワースペクトルの和がエネルギー(全周波数のパワースペクトルの総和)に占める割合」を求めていますが、拝見したところスペクトル漏れが起きているように見受けられます。
山岡さんの検討にハミング窓を加えるとスペクトル漏れが低減できるというのを示します。
%matplotlib inline import numpy as np import matplotlib.pyplot as plt fs = 44100 size = 4096 t = np.arange(0., size) / fs frq = np.fft.fftfreq(size, 1./fs) fset = np.linspace(400, 500, 1001) range = [1, 3, 5] hammingWindow = np.hamming(size) range = [1, 3, 5] for r in range: peaks = [] for f in fset: y = np.sin(2 * np.pi * f * t)*hammingWindow Y = np.fft.fft(y) P = abs(Y[0:size/2])**2 P_around = np.convolve(P, np.ones(r), 'valid') peaks.append(max(P_around) / sum(P)) plt.plot(fset, peaks) plt.axis([400, 500, 0, 1.1]) plt.show()
Before 窓関数なし(オリジナルの結果)
After ハミング窓あり
青 ピーク値 緑 ピークとサイドビン2個の和 赤 ピークとサイドビン4個の和
ここで周辺和を取らない結果が悪くなるのは、もう離散化の具合の話でそこはスペクトルの裾の広さに現れてしまうのは、昨日のエントリーの通りです。
参考
窓関数の理屈については、こちらが参考になると思います。
また、離散信号の扱いはスター変換など色々あるんですが、 私の出自が制御屋周辺なので、乱暴にいうとこの辺あたりから、 放浪の旅が始められるんではないかと感じました。
差し出がましながら、ここまで。
FFTピーク値とエネルギーの件
山岡さんのブログでFFT結果のピーク値使用の注意がありました。
こちらでは主に音声ファイル44.1kHzのファイルフォーマットとラの音440Hzを中心に考察されていましたが、機械系の開発でもFFTを使うことがあり示唆に富んだ内容であるように思います。
具体例として、440Hzのサイン波と435Hzのサイン波のピーク値が
周波数 | ピーク値 |
---|---|
440Hz | 1999.5 |
435Hz | 1527.2 |
と1.3倍の開きがあり、サンプリング周波数の影響が出ているということを示されています。 具体例として機械部品の共振試験を実施した結果に読み替えると、サンプリング周波数を無視して、試験結果のピーク値を読んで共振倍率を求めると痛い目にあうということです。
山岡さんの結果をそのまま使わせていただくと、最悪1.57倍 負荷を過小評価してしまう。
これを防ぐためには実際に周波数ドメインの振動を評価する際に、エネルギーの考え方を持ち込む必要があります。まず、スクリプトをお借りして、435Hzと440HzのFFT結果を並べます。
%matplotlib inline import numpy as np import matplotlib.pyplot as plt # Sampling Rate fs = 44100 # Sample Size size = 4096 t = np.arange(0., size) / fs frq = np.fft.fftfreq(size, 1./fs) # 440Hzのサイン波をFFT f = 440 y = np.sin(2 * np.pi * f * t) Y = np.fft.fft(y) # 435Hzのサイン波をFFT f2 = 435 y2 = np.sin(2 * np.pi * f2 * t) Y2 = np.fft.fft(y2) # プロット plt.plot(frq, abs(Y)) plt.plot(frq, abs(Y2)) plt.axis([300, 500, 0, 2500]) plt.show()
ごらんの通り440Hz(青)と435Hz(緑)で裾の広がり方が違います。 44.1Khz ÷ 周波数の値がより整数に近い440Hzの方がピークがはっきり出ている結果になっています。
これはフーリエ変換を離散化するとつきまとうものですが、 FFTがユニタリ変換なので簡単に(変換前後の)エネルギーの保存を確認できます。
で、それぞれのエネルギーを求めるのは簡単で下記のとおり、
E1 = np.conj(Y)*Y E2 = np.conj(Y2)*Y2 TTL1 = sum(E1) TTL2 = sum(E2)
この結果、それぞれの水準でのエネルギーは
周波数 | エネルギー値 |
---|---|
440Hz | 8403716 |
435Hz | 8403443 |
と、ほぼ一致します。周波数そっくりさんですしね。 (弱冠440Hzの方が大きいのは周波数が高い分、もともと波のエネルギーが高いのです)
当初懸案だったピーク値のような差が大きくなく、評価としてよりロバストだと言えそうですね。
では、ここから、どうやってピーク値を求めるかというと、単純なものから学術的なものまでいろいろあるそうです。入り口としてリンクだけおいておきます。
- How to Interpolate the Peak Location of a DFT or FFT if the Frequency of Interest is Between Bins | dspGuru.com
- fourier transform - How do you find the frequency and amplitude from a DFT? - Signal Processing Stack Exchange
では!