2019年11月アーカイブ

今回は初めて統計学を勉強しよう、統計検定を受けようという

  • 文系の大学生
  • 文系出身のビジネスマン


このような方に向けて、勉強方法やおすすめの本について紹介していきます。
今回紹介する本の内容をマスターすると、統計検定2級の合格や機械学習の本を理解できるようになります。

目次

  • 自己紹介
  • なぜ統計学の勉強が大変なのか
  • 本の紹介


自己紹介

僕は現在、大学3年生で文系の学部に所属しています。
統計学を勉強したきっかけは以下の2つです。

  • データを分析するのに必要なため
  • 機械学習の本を読むため


数学は、高校2年生のコース選択で文系に進んで以来、ほとんど勉強したことがありませんでした。
そのため勉強を始めた頃は、統計学も数学も1から勉強し直すのと同じ状況でした。
このように前提知識がほとんど無かったので、統計学を勉強していくのに苦労しました笑
そのため初学者や数学が苦手な文系の方が、勉強を進める中でどこでつまずきやすいかも触れていきたいと思います。

なぜ統計学の勉強が大変なのか

大きく2つあるとおもいます。

  • 本に書かれている数式や記号を読んでいくのがしんどい
  • やっている勉強が何のためにやっているのかわからなくなる


この2つの理由が統計学を勉強するのに大きく立ちはだかります笑

例えばですが 

\begin{equation} \sum \end{equation}

\begin{equation} \prod \end{equation}


これらの記号の読み方がわからない方、かなりいらっしゃると思います。
統計学の本で数式自体を文字で丁寧に説明してくれるものは結構あります。
しかし、記号についてまで丁寧に説明してくれている統計学の本はほぼないです。
統計学は集めたデータを数学的に扱うという性質から、やはりある程度の数学の知識が必要になります。
そのため一度、数学を学びなおして数学アレルギーを克服したほうが近道だと思います。
しかし高校数学を全部やり直すようなことはしないでください、統計学に行き着く前におそらく挫折します笑

そこでおすすめなのがこの本です。

統計学のおすすめ本 経済学と(経済学、ビジネスに必要な)数学がイッキにわかる!!

ビジネスマンや経済学部生向けの内容ですが、
会社の売上を最高にするにはどうするか? 得するお金の預け方はどっち?
みたいな身近なテーマを数学を使って解いていく内容なので、多くの方が取り組みやすいと思います。
この本で最小限の式変形や、記号の意味を学びなおしましょう。

またここで数学について説明しますが、
数学の知識は大きく2つにわかれています。

  • 式を自在に変形し、解けるようにする計算力
  • 式が何を意味しているのかを理解できる能力


どちらもあるに越したことはないですが、受験生と違い短時間に多くの問題を解く必要はありません。
むしろ本に書かれている式が、何を表しているのかを理解することが重要なので、計算力を上げるためにたくさんの問題を解くよりも
式や記号が何を表しているのかなどの概念を理解することを意識して学びなおした方が良いでしょう。

ここで話を戻して統計学を勉強しているうちに自分が、何のために勉強しているのかわからなくなる現象について説明します。
先程のように、文系の方だと前提知識が少ない場合が多いです。そのため、それらを学び直そうとするうちに気がつくと前提知識の勉強に深入りしすぎて
統計学を勉強するという目標を見失います。また、統計学で何ができるのかがわからずモチベーションを維持できない状態に陥ります。
勉強するモチベーションを維持するには、統計学でどんなことがわかるのかを知ることが重要だと思います。

数学を勉強しながら、以下の本を読むとモチベーションを保てると思います。
また、実際にデータ分析するときに必要な考え方についても身につけることができるでしょう。

統計学のおすすめ本 「原因と結果」の経済学―――データから真実を見抜く思考法

統計学のおすすめ本 ヤバい経済学-増補改訂版


どちらもタイトルに経済学とありますが、子供にテレビを見せると学力が下がるのは本当か?といったテーマが、読み物テイストで書かれているのでとても読みやすいです。
様々な世の中の常識を統計学で分析し、実際はこうだったという例がたくさん紹介されており
統計学をマスターすれば自分もこうしたことが出来る!と想像できるので勉強のモチベーション維持に役立つと思います。


統計学の本の紹介

ここからは自分が読んでおすすめだと思える統計学の本を紹介したいと思います。
ある程度数学アレルギーが克服できたらこちらの本がおすすめです。

統計学のおすすめ本 コア・テキスト統計学


この本は統計学の理論や式について、しっかり文字で説明してくれています。具体例も豊富なので常に統計学で何が出来るのかを見失わずに
勉強することができると思います。
またこの本の演習本もあります。問題を解くことは本質ではありませんが、実際に手を動かした方が理論を理解しやすいのは確かなのでおすすめです。

統計学のおすすめ本 基本演習-統計学
上記2冊を読む中で数学的にわからない部分があったら、以下の2冊がAmazonのprime会員なら無料で読めるのでおすすめです。(2019年11月現在)

統計学のおすすめ本 ふたたびの高校数学

統計学のおすすめ本 ふたたびの微分・積分


この2冊は全部読むのではなく、わからない箇所を調べるといった使い方のほうが効率よく勉強が進むと思います。


さいごに

ここまでの知識をマスターできたら、統計検定2級などの検定試験にもある程度対応できるので過去問などを解いてぜひ挑戦してみましょう!
また機械学習の本も、式を読み飛ばすことなく読めると思います。
それ以外にも、実際にデータ分析する際にパラメータのどの部分に気をつければよいかなどが、以前よりも明確にわかるようになっていると思います。
ここまでどうすれば挫折しないで統計学を勉強する方法を書いてきましたが最も大切なのは

  • なるべく説明の簡単な本を選ぶ
  • 常に何のために勉強しているのかを意識する


この2点だと思います。
これらに気をつければある程度の統計学はマスターできるはずです。
頑張っていきましょう!

※本記事の対象:自然言語処理という言葉は聞いたことはあるが、どういうアプローチで処理がされているかイメージが湧かない方(大学レベルの数学の知識は必要)
※内容はオーム社『ゼロから学ぶDeep Learning2』を参考にしている

目次


1. はじめに:自然言語処理(NLP)とは
2. シソーラスによる手法
3. カウントベースの手法( 統計的手法 )
4. カウントベースの手法の改善点
5. 【次回】word2vec( ←これがメイン )
6. まとめ
7. 参考文献

1.はじめに:自然言語処理(NLP)とは

まず一般に 自然言語 (Natural Language)とは、人間によって日常の意思疎通のために用いられる、文化的背景を持って自然に発展してきた言語(日本語、英語、中国語など)である。
そこで 自然言語処理 (Natural Language Processing: NLP )とは、一言で言うと「我々が普段用いてる言葉をコンピュータに理解させるための技術」である。
NLPの目標とするところは、人間が話す「同じような文章でも意味や表現が異なるような」言葉をコンピュータに理解させ、我々にとって有益なことをコンピュータに行わせることである。例えば機械翻訳、検索エンジン、文章の感情分析などが挙げられる。
我々の身の回りではそのような自然言語処理の技術がすでに数多く使われている。

我々の使う言葉は「文字」によって構成され、言葉の意味は「単語」によって構成されている。「単語」は、言わば意味の最小単位である。
つまるところ、自然言語をコンピュータに理解させるには、「単語の意味」を理解させることが重要であるといえそうだ。
そこで本記事では「単語の意味」をうまく捉えた表現方法について「シソーラス」による手法、「カウントベース」の手法の2つを見ていく。 

2.シソーラスによる手法

「単語の意味」を表すためには、人の手によって単語の意味を定義することが考えられる。例えば『広辞苑』のように、ひとつひとつの単語に対してその単語の意味を説明することである。
しかし自然言語の歴史を振り返ると、『広辞苑』のように人が使う一般的な辞書ではなく 、 シソーラス (thesaurus)と呼ばれるタイプの辞書が多く使われてきた。
シソーラスとは「類語辞書」のことで、「同義語」や「類義語」が同じグループに分類されている。例えば、「car」という単語に対して、
自然言語処理 のようにいくつかの同義語が存在することが分かる。
また、自然言語処理において利用されるシソーラスでは、単語間で「上位と下位(is a の関係)」、「全体と部分(part-of の関係)」などのより細かい関係性が定義されている場合がある。次のようなグラフ構造によって各単語の関係性が定義される。
自然言語処理 このグラフ構造だと、「car」の上位概念に「motor vehicle」という単語が、また「car」の下位概念に「SUV」などの具体的な車種があることが示されている。
このように全ての単語に対して類義語の集合を作り、それぞれの関係をグラフ構造で表現することで、単語間のつながりを定義できる。
自然言語処理のアプリケーションにおいてシソーラスをどのように利用するかというと、例えば検索エンジンにおいて、「automobile」と「car」が類義語であることを知っていれば、「automobile」の検索結果を「car」の検索結果に含めることができる。

WordNet

自然言語処理の分野において、最も有名なシソーラスは「WordNet」である。WordNetは1985年からプリンストン大学で開発がスタートされたシソーラスであり、様々な自然言語処理のアプリケーションにおいて大いに活躍してきた。
WordNetを使えば類義語を取得したり、「単語ネットワーク」を利用したりすることができる。また、「単語ネットワーク」を用いれば単語間の類似度を算出することも可能だ。
しかし既にお気付きの方もいるだろうが、このWordNetなどのようなシソーラスには、以下のような欠点がある。

時代の変化に対応することが困難
時とともに新しい言葉が誕生し、古い言葉は廃れていくように我々の使う言葉は「生きて」いる。
人の作業コストが高い
例えば、現存する英単語は1,000万語を超えており、それぞれの単語に対し定義付けを行うには大幅な人件コストがかかる。
単語の細かなニュアンスを表現できない
似たような単語であったとしてもそれぞれニュアンスは異なり、それを人間の手によって関連付けを行うのは至極困難。

このように、シソーラスなどの人手によって単語の意味を定義付けていく手法には大きな問題がある。
そこでこの問題を回避するために、続いて「カウントベースの手法」、ニューラルネットワークを用いた「推論ベースの手法【次回】」を紹介する。
これら二つの手法は、大量のテキストデータから自動的に「単語の意味」を抽出する、つまり、単語の関連付けに人が介入しなくても良いということだ。

3.カウントベースの手法【統計的手法】

これからカウントベースの手法を説明していくが、ここでは「コーパス」と呼ばれる大量のテキストデータを用いる。
このコーパスと呼ばれるデータは、自然言語処理の研究やアプリケーションのために目的を持って収集されたテキストデータである。
自然言語処理に関する分野で有名なコーパスといえば、WikipediaやGoogle Newsなどのテキストデータが挙げられる。

分散表現・分布仮説

さて、世の中には様々な「色」が存在するが、それらの色には「暗紅色」や「飴色」などの固有の名前が付けられている。
他方RGBの3成分がどれだけの割合で存在するかといった方法でも色は表現できる。つまり色を3次元のベクトルとして表現できるということである。
注目すべき点はRGBのようなベクトル表現の方がより正確に色を表現、指定できるということである。例えば先の飴色のようにどういう色なのか想像できない場合、飴色のRGBは(R, G, B)=(144, 103, 62)と表現できるので、明るい茶色っぽい感じがわかる。
また、色同士の関連性もこのベクトル表現の方が容易に判断しやすく、定量化も行えるので便利である。
このようなベクトル表現を、今議論している「単語」についても行えないだろうか?我々の目指すべきゴールは「単語の意味」を的確に捉えたベクトル表現である。
これは自然言語処理の分野では、単語の分散表現と呼ばれる。
自然言語処理の歴史において、単語をベクトルで表す研究は今まで数多く行われてきたが、その重要な手法の殆どがあるアイデアに基づいていることが分かる。
それは『単語の意味は、その周辺の単語によって形成される』という非常にシンプルなものである。
これは、分布仮説 (distributional hypothesis) と呼ばれている。つまり単語自体には意味がなく、その単語の「コンテキスト(文脈)」によって単語の意味が形成されるということだ。
例えば、「I drink water.」「You drink coffee.」などのように「drink」という単語の近くには飲み物が現れやすい。
また「I guzzle water.」「You guzzle coffee.」などの文章から、「drink」「guzzle」の意味は近そうだといった具合である。(guzzle: ガブガブ飲む という意味)
本記事では「コンテキスト」と言うとき、注目する単語に対してその周囲にある単語のことを指す。またコンテキストのサイズを「ウィンドウサイズ」という言葉で表すことにする。
例えばウィンドウサイズ2の場合、 自然言語処理
といったように、「goodbye」に注目したときその左右の2単語をコンテキストとして利用する。

共起行列

では、分布仮説に基づいて単語をベクトルとして表す方法を考えてみよう。
そのための素直な方法は、周囲の単語をカウントする「カウントベースの手法」である。
具体的には、或る注目している単語に対して、その周囲にどのような単語がどれだけ現れているのかをカウント、集計するのである。
では実際に、先の"You say goodbye and I say hello."という文章について、そのコンテキストに含まれる単語の頻度をカウントしていこう。ウィンドウサイズは1とする。
この文字列には全部で7つの単語(ピリオド含む)が含まれており、「You」という単語は[0, 1, 0, 0, 0, 0, 0]とベクトル表記できることがわかる。
なぜならばウィンドウサイズを1としているので、「You」の周辺単語は「say」のみであり、「say」にのみコンテキストの目印として共起した回数の1をカウントしているからである。
次に「say」については文字列中に2回現れていることに注意すると、[1, 0, 1, 0, 1, 1, 0]とベクトル表記できる。これらの作業を7つの単語について全て行うと、次のようなテーブルが得られる。
自然言語処理 このテーブルの各行が、該当する単語のベクトルに対応している。これは行列の形に対応していることから 共起行列と呼ばれている。
ここでは手動で共起行列を作成したが、もちろんこれはpythonなどを用いて自動化でき、コードはGithub上に上がっているので参照してもらいたい。

ベクトル間の類似度

今、共起行列で単語をベクトル化することに成功したが、続いてベクトル間の類似度を計測する方法を見ていこう。
ベクトル間の類似度を計測するのには、ベクトルの内積、ユークリッド距離などが代表例としてあげられるが、単語のベクトル間類似度を計測する際は コサイン類似度が主に使われる。コサイン類似度は以下の式で定義される。
\(\boldsymbol{x}=(x_1, x_2, \cdots ,x_n ), \boldsymbol{y}=(y_1, y_2, \cdots ,y_n )\)とした時、
$$ sim_{cos} = \dfrac{\boldsymbol{x} \cdot \boldsymbol{y}}{|\boldsymbol{x}| |\boldsymbol{y}|} = \dfrac{x_1 y_1 + x_2 y_2 + \cdots + x_n y_n}{\sqrt{x_1^2 + x_2^2 + \cdots + x_n^2} \sqrt{y_1^2 + y_2^2 + \cdots + y_n^2}} $$ 分子にベクトルの内積、分母に各ベクトルのL2ノルムの積を取っている。
注目すべきポイントはベクトルを正規化してから内積を取っているということである。2つのベクトルが同じ向きを向いているときにコサイン類似度は1、完全に反対向きだと-1になることは直感的に分かるだろう。

4.カウントベースの手法の改善点

さて、ここまでで我々は単語の共起行列を作れるようになり、それによって我々のゴールであった単語のベクトル化に成功した。
しかし、カウントベースの手法(特に共起行列の部分)には様々な改善点があり、今回はその改善点について取り組んでいくことにする。

相互情報量(Pointwise Mutual Information)

先程も述べたように共起行列の要素は、2つの単語が共起した回数を表している。
しかしこの回数は実際あまり良い性質を持っていない。というのも、例えばあるコーパスにおいて「the」と「car」の共起を考えてみることにする。「the」は冠詞なので「...the car...」などというフレーズは多数あり、共起回数は必然的に大きくなる。
他方、「car」と「drive」は明らかに強い関係があるが、「...drive car...」というフレーズの出現回数は低いと予想できる。つまり、単に共起回数だけを見てしまうと「drive」よりも「the」のほうが強い関連性があると評価してしまうことになる。
こういった問題を解決するために、 相互情報量(PMI) という指標が使われる。これはX、Yという確率変数に対して次の式で定義される。
$$ PMI(X,Y) = \log_2 \frac{P(X,Y)}{P(X)P(Y)}$$ このPMIの値が大きいほど関連性が高いことが示される。
この式より、単語単独の出現回数が考慮されたことになるので良い指標と言えそうだ。
しかし、このPMIの式には1つ問題がある。それは、2つの単語で共起する回数が0となるとき\(PMI =\log_2 0 = -\infty\)となってしまうことである。それに対応して、実際によく使われるのは次の 正の相互情報量(Positive PMI:以降PPMIと書く) である。
$$ PPMI(X,Y) = max(0, PMI(X,Y))$$ これは、PMIがマイナスのときは0を返す関数と見ることができ、単語間の関係性を0以上の実数値として表している。
これによって共起行列をPPMI行列に変換できるのだが、このPPMI行列にも大きな問題がある。例えば語彙数100万のコーパスを扱うとなると、ベクトルの次元数も必然的に100万にまで及び、このベクトルをそのまま用いるのは現実的でない。
さらに、PPMI行列の要素を見てみるとその多くが0であることが分かる(疎な行列)。これはベクトルの殆どの情報が重要ではない、つまり各要素の持つ重要度は低いと言える。このようなベクトルはノイズに弱く、頑健性に乏しいため次に説明する次元削減を行うのが一般的である。

次元削減(Dimensionality reduction)

次元削減とは、ベクトルの次元を削減することに他ならないが、ベクトルの持つ「重要な情報」をできる限り保持した上で削減することがポイントである。
次元削減を行う方法はたくさんあるが今回は特異値分解(SVD)を使った次元削減を行う。SVDは任意の行列を3つの行列の積として表せる。数式で書くと、
$$ X = \boldsymbol{US}\boldsymbol{V}^{T} $$ ここでUとVは直交行列でありその列ベクトルは互いに直行する。またSは対角行列である。
これらを視覚的に表すと次のようになる。(薄緑の部分にそれぞれ要素の値が入る)
自然言語処理 さて、上式においてUは直交行列であったがこの直行行列は何らかの基底を形成している。
つまりUという行列を単語空間として扱うことができる。またSは対角行列であり、その対角成分には特異値が大きい順に並んでいる。特異値は対応する基底の重要度とみなすことができる。つまり以下のように重要でない要素を削ることができるのである。
自然言語処理Wikipedia
ゼロから学ぶDeep Learning2

問1に続いて問2です。 同じくご指摘があればコメントをお願いします。


[1]\(U\)の期待値\(E[U]\)を求めよ。

\begin{equation} E[U] = E[X_1+X_2] = E[X_1]+E[X_2] \ (\because X_1, X_2は互いに独立) \end{equation} 今、\(X_i\)(\(i=1, 2\))について、
\begin{eqnarray*} E[X_i] &=& \int_0^\infty x_i f(x_i) dx_i \\ &=& \int_0^\infty x_i \lambda \mathrm{e}^{-\lambda x_i} dx_i \\ &=& \left[ x_i\mathrm{e}^{-\lambda x_i} \right]_0^\infty + \int_0^\infty \mathrm{e}^{-\lambda x_i} dx_i\\ &=& \left[-\frac{1}{\lambda}\mathrm{e}^{-\lambda x_i} \right]_0^\infty \\ &=& \frac{1}{\lambda} \end{eqnarray*} であるので、結局 \begin{equation} E[U] = \frac{1}{\lambda} + \frac{1}{\lambda} = \frac{2}{\lambda} \end{equation}
[2]\(U\)の確率密度関数\(g(u)\)を求めよ

まず\(U\)の積率母関数\(M_U(t)\)を求める。
\begin{equation} M_U(t) = M_{X_1+X_2}(t) = M_{X_1}(t)M_{X_2}(t) \ (\because X_1, X_2は互いに独立) \end{equation} であり、\(M_{X_i}(t)\)について、
\begin{eqnarray*} M_{X_i}(t) = E[\mathrm{e}^{t X_i}] &=& \int_0^\infty \mathrm{e}^{t x_i}\lambda \mathrm{e}^{-\lambda x_i} dx_i \\ &=& \lambda \int_0^\infty \mathrm{e}^{(t-\lambda)x_i}dx_i\\ &=& \lambda \left[ \frac{1}{t-\lambda} \mathrm{e}^{(t-\lambda)x_i} \right]_0^\infty\\ &=&\frac{\lambda}{\lambda - t}\ (\lambda > t) \end{eqnarray*} \begin{equation} \therefore M_U(t) = \left( \frac{\lambda}{\lambda - t}\right)^2 = \left( \frac{1}{1 - \frac{t}{\lambda}} \right)^2 \end{equation} これはパラメータ(2, \(\frac{1}{\lambda}\))のガンマ分布の積率母関数に一致する。積率母関数と確率密度関数の一対一対応性から、\(U\)の確率密度関数は、
\begin{equation} g(u) = \frac{{\lambda}^2}{\Gamma(2)}u^{2-1}\mathrm{e}^{-\lambda u} = {\lambda}^2 u\mathrm{e}^{-\lambda u}\ (\because \Gamma(2)=1! ) \end{equation} [3]期待値\(E[\frac{1}{U}]\)を求めよ。

\begin{eqnarray*} E\left[ \frac{1}{U} \right] &=& \int_0^\infty \frac{1}{u} g(u)du \\ &=& \int_0^\infty {\lambda}^2 \mathrm{e}^{-\lambda u}\\ &=& {\lambda}^2 \left[ -\frac{1}{\lambda} \mathrm{e}^{-\lambda u} \right]_0^\infty \\ &=& \lambda \end{eqnarray*}
[4]\(\alpha\)を正の定数とし、パラメータ\(\theta=\frac{1}{\lambda}\)を\(\alpha \bar{X}\)で推定する。その時の損失関数を
\begin{equation} L(\alpha\bar{X}, \theta) = \frac{\alpha\bar{X}}{\theta}+ \frac{\theta}{\alpha\bar{X}}-2 \end{equation} として期待値\(R(\alpha, \theta) = E[L(\alpha\bar{X}, \theta)]\)を導出し、\(R(\alpha, \theta)\)が最小となる\(\alpha\)の値を求めよ。

問題文の定義及び、[1][3]の結果から、 \begin{eqnarray*} E[L(\alpha\bar{X}, \theta)] &=& E \left[ \frac{\alpha\bar{X}}{\theta}+ \frac{\theta}{\alpha\bar{X}}-2 \right]\\ &=& \frac{\alpha}{\theta}E[\bar{X}] + \frac{\theta}{\alpha}E \left[\frac{1}{\bar{X}} \right] -2\\ &=& \lambda\alpha E \left[ \frac{U}{2} \right] + \frac{1}{\lambda\alpha}E \left[ \frac{2}{U} \right]-2\\ &=& \frac{\lambda\alpha}{2} E[U] + \frac{2}{\lambda\alpha}E \left[ \frac{1}{U} \right]-2\\ &=& \frac{\lambda\alpha}{2}\frac{2}{\lambda} + \frac{2}{\lambda\alpha}\lambda - 2\\ &=& \alpha + \frac{2}{\alpha} -2 \end{eqnarray*} となる。ここで\(R(\alpha, \theta)\)が最小となる\(\alpha\)の値を求めるために、上式を\(\alpha\)で微分したもの=0を解くと、 \begin{equation} 1-\frac{2}{{\alpha}^2} = 0\\ \therefore \alpha = \sqrt{2} \ (\because \alpha >0) \end{equation}


以上です。
普段は機械学習がメインなので機械学習でやってみたブログや理論、論文解説をおこなっています。
アクセルユニバース技術ブログ一覧


本記事や他の情報が役に立つことを祈って、問3の解説も作成していきます。

問2に続いて問3です。
同じくご指摘があればコメントをお願いします。


また、問1問2はこちらをご確認ください。
合格記も書きました。


[1]
\(X_1, X_2, \cdots , X_n\)の同時確率密度関数
\[ f(x_1, x_2, \cdots, x_n) = \begin{cases} \frac{1}{\theta ^n} & (x_1, x_2, \cdots , x_n \leq \theta)\\ 0 & (otherwise) \end{cases} \] の条件\((x_1, x_2, \cdots , x_n \leq \theta)\)は\(y \leq \theta\)と同値であるので、 フィッシャーネイマンの分解定理により、\(Y\)は\(\theta\)に関する十分統計量である.

[2]
区間\((0,\theta)\)上の一様分布に従う確率変数\(X\)の累積分布関数\(F_{X}(x)\)について \[ F_{X}(x) = P(X\leq x) = \begin{cases} \cfrac{x}{\theta} & (0\leq x \leq \theta) \\ 0 & (x<0) \\ 1 & (x>\theta) \end{cases} \] となる。よって\(Y\)の累積分布関数\(G(y)\)は \begin{eqnarray*} G(y) &=& P(X_{1}, X_{2}, \cdots, X_{n}\leq y) \\ &=& P(X_{1}\leq y)P(X_{2}\leq y)\cdots P(X_{n}\leq y) \\ &=& \left(\frac{y}{\theta}\right)^{n} \end{eqnarray*} これを\(y\)について微分することで \[ g(y) = \frac{n}{\theta^{n}}y^{n-1} \]

[3]
\(Y=max(X_1, X_2, \cdots , X_n)\)であったから、\(X_1, X_2, \cdots , X_n\)のうち最大の値をとる確率変数を、例えば\(Y=X_n\)とすれば、 \(Y=y\)つまり\(X_n=y\)が与えられたとき、
\[ f(x_1, \cdots , x_{n-1}, y | y) = \frac{1}{y^{n-1}} \] となる。

[4]
\begin{eqnarray*} E[Y] &=& \int^{\theta}_{0}y\frac{n}{\theta^{n}}y^{n-1} dy \\ &=& \frac{n}{\theta^{n}} \cdot \frac{\theta^{n+1}}{n+1} \\ &=& \frac{n}{n+1}\theta \end{eqnarray*} これより、\(\tilde{\theta}=\cfrac{n+1}{n}Y\)とすると\(E[\tilde{\theta}]=\theta\)となり不偏性をもつ。したがって、求めるパラメータ\(\theta\)の不偏推定量は\(\tilde{\theta}=\cfrac{n+1}{n}Y\)

[5]
関数\(u(Y)\)の期待値が0となるとき、 \begin{eqnarray*} E[u(Y)] &=& \int^{\theta}_{0}u(y)\frac{n}{\theta^{n}}y^{n-1}dy = 0 \\ &\Rightarrow& \int^{\theta}_{0}u(y)y^{n-1}dy = 0 \end{eqnarray*} どのような\(\theta\)についても等式が成り立つためには\(u(Y)\equiv0\)でなければならない。

[6]
\(Y\)の関数であるパラメータ\(\theta\)の不偏推定量を\(s(Y)\)とし、\(E[s(Y)-\tilde{\theta}]\)を計算すると、\(E[s(Y)-\tilde{\theta}]=0\)となり、[5]の結果から\(s(Y)-\tilde{\theta}=0\)で、どのような\(s(Y)\)に対しても\(s(Y)=\tilde{\theta}\)となる。つまり\(\tilde{\theta}\)は\(Y\)の関数であるパラメータ\(\theta\)の唯一の不偏推定量である。

解答は以上です。指摘事項があればお手数ですがご連絡ください。

2019年11月24日に実施された統計検定1級を受験しました! 略解は既に公開されているのですが、改めて勉強したい人(僕もその1人ですが...。)のために解答を共有します。 少しでも役に立つと嬉しいです。。。
本記事では統計数理の問1、次記事で問2を解説していきます。


[1]
確率母関数の1階および2階微分はそれぞれ \[ \frac{d}{dt}G_{X}(t) = \sum_{k} kt^{k-1}P(X=k) \] \[ \frac{d^{2}}{dt^{2}}G_{X}(t) = \sum_{k} k(k-1)t^{k-2}P(X=k) \] である。 ここで\(t=1\)を代入して \[ \frac{d}{dt}G_{X}(1) = \sum_{k} kP(X=k) = E[X] \] \[ \frac{d^{2}}{dt^{2}}G_{X}(1) = \sum_{k} k(k-1)P(X=k) = E[X(X-1)] \] したがって期待値、分散を求める式はそれぞれ \[ E[X] = \frac{d}{dt}G_{X}(1) \] \begin{eqnarray*} V[X] &=& E[X(X-1)] + E[X] - (E[X])^2 \\ &=& \frac{d^{2}}{dt^{2}}G_{X}(1) + \frac{d}{dt}G_{X}(1) - \left(\frac{d}{dt}G_{X}(1)\right)^{2} \end{eqnarray*} となる。

[2]
\(X\)~\(B(n,p)\)のとき、\(P(X=k)=\left( \begin{array}{c} n \\ k \end{array} \right) p^{k}(1-p)^{n-k}\)より、確率母関数は \begin{eqnarray*} G_{X}(t) &=& \sum_{k=0}^{n}t^{k}\left( \begin{array}{c} n \\ k \end{array} \right) p^{k}(1-p)^{n-k} \\ \\ &=& \sum_{k=0}^{n}\left( \begin{array}{c} n \\ k \end{array} \right) (tp)^{k}(1-p)^{n-k} \\ \\ &=& (tp+1-p)^n \end{eqnarray*} となる。最後の行では二項定理を用いた。また、この結果から \[ \frac{d}{dt}G_{X}(1) = np(tp+1-p)^{n-1}|_{t=1} = np \] \begin{eqnarray*} \frac{d^{2}}{dt^{2}}G_{X}(1) &=& n(n-1)p^{2}(tp+1-p)^{n-2}|_{t=1} \\ &=& n(n-1)p^{2} \end{eqnarray*} と求められるので、\(B(n,p)\)の期待値と分散は[1]の式を用いて \[ E[X] = np \] \[ V[X] = n(n-1)p^{2} + np - (np)^{2} = np(1-p) \]

[3]
確率母関数の定義式から、正の実数\(r\)について、 \begin{eqnarray*} G_{X}(t) &=& \sum_{k} t^{k}P(X=k) \\ &=& \sum_{k\leq r} t^{k}P(X=k) + \sum_{k> r} t^{k}P(X=k) \\ &\geq& \sum_{k\leq r} t^{k}P(X=k) \end{eqnarray*} となる。ここで\(k\leq r\)ならば\(t^{k-r}\geq 1\)が成り立つので \begin{eqnarray*} t^{-r}G_{X}(t) &\geq& t^{-r}\sum_{k\leq r} t^{k}P(X=k) \\ &=& \sum_{k\leq r} t^{k-r}P(X=k) \\ &\geq& \sum_{k\leq r} P(X=k) \\ &=& P(X\leq r) \end{eqnarray*} よって示された。

[4]
[2]、[3]の結果から\(X\)~\(B(n,p)\)と実数\(a\)について \[ P(X\leq an) \leq t^{-an}(tp+1-p)^n \] ここで、不等式の右辺において最小値を与える\(t\)を求める。右辺の値の自然対数をとった関数\(f(t)=n\{\log(tp+1-p)-a\log t\}\)を\(t \)で微分してその値を0とおくと \begin{eqnarray*} && \frac{d}{dt}f(t) = n\left(\frac{p}{tp+1-p} - \frac{a}{t}\right) = 0 \\ \\ &\Leftrightarrow& t = \frac{(1-p)a}{p(1-a)} \end{eqnarray*} この\(t\)を不等式の右辺の式に代入して \begin{eqnarray*} && \left\{\frac{(1-p)a}{p(1-a)}\right\}^{-an}\left\{\left\{\frac{(1-p)a}{p(1-a)}\right\}p+1-p\right\}^n \\ \\ &=& \left(\frac{a}{p}\right)^{-an}\left(\frac{1-p}{1-a}\right)^{-an}\left(\frac{1-p}{1-a}\right)^{n} \\ \\ &=& \left(\frac{p}{a}\right)^{an}\left(\frac{1-p}{1-a}\right)^{(1-a)n} \end{eqnarray*} よって \[ P(X\leq an) \leq \left(\frac{p}{a}\right)^{an}\left(\frac{1-p}{1-a}\right)^{(1-a)n} \]


以上が問1です。 ご指摘があればコメント頂けると嬉しいです。


普段はアクセルユニバース株式会社でデータサイエンティストとしてインターンをしています。
kaggleコンペに挑戦したり、pythonで機械学習を実装したりしています。ゼロから学ぶ!機械学習とプロセス
コンペの結果、解法や実装した成果物等を今後も公開していくので、ぜひご覧頂きたいです!


目次

はじめに:機械学習の社会実装

『機械学習』という言葉を聞いて何を思いつきますか?自動運転、顔認証、AI...。さながら映画のような世界が訪れるとワクワクしている人、その一方で「AIが人間の仕事を奪う」と憂いている人もいるでしょう。


目覚ましい機械学習技術の発展とともにメディアなどで盛大に取り上げられているため「機械学習(主にAI)を使えば何でもできそう!(もしくはできてしまう...)」と思っている方もいるのではないでしょうか?


しかしながら、機械学習は魔法ではありません。機械学習はそのアルゴリズムやディープラーニングを駆使し人間の脳の認識能力を模倣したり、計算処理を行っています。「機械学習、ディープラーニングとは?」と思った方は下記の記事を参照にしてください。特に機械学習についての2つはわかりやすくて概要を掴むのにぴったりです。





筆者は『機械学習技術は社会実装できる』と考えています。社会実装とは、社会技術研究開発センター(JST)が提唱した「社会の問題解決に資する研究開発成果の社会実装活動」を意味します。要するに技術を社会問題の解決に活用することです(例:介護ロボット、きゅうりやその他野菜の判別機 等)。ここでは社会問題の解決というよりも、私たちの日常生活に機械学習が実装される(根付いていく)という意味で使います。



機械学習技術の日常生活への実装、聞こえはいいのですがそれには予想外の弊害がいくつか存在します。1つ目は社会システムの問題。簡単に言えば機械学習技術に関する法律や有事の際の対処法などです。2つ目は使用者側の問題。後で例示しますが、技術の発展に人々の認知が追いついていないことを指します。そして3つ目が使用者と開発者も含めた人の問題。機械学習は絶対的な答えを見つけるものではなく、数ある選択肢の中から人にとって『より良い』ものを取ります。では『より良い』とは一体どういう意味でしょうか?


当記事はこの問題に直接的な答えを提示するものではなく『機械学習技術を社会、あるいは、日常生活に活用する』には何が問題になっているか?、という疑問を投げかけるものです。基本的に筆者の興味・関心に基づく分野に寄っているので悪しからず。


それでは機械学習に関する疑問を小見出し毎に分けているので、一緒に考えてみましょう。


日々の話のネタになれば幸いです。


自動運転は実現可能か?

機械学習""          

自動運転(車)が実現すればSFの世界のようでしょう。ここでの自動運転とは運転者がハンドルを持たなくても目的地までたどり着くことのできるような、完全自動運転を指します。今でも多くの車に走行中、障害物を検知して減速・停止するアシスト機能が付いていますが、当記事ではこれらは扱いません。

        
         

現在、フォルクスワーゲン社やフォード社が業務提携を結ぶなど世界の企業がこぞって自動運転車の開発に投資しています。しかし、自動運転車の開発、及び、社会実装には多くの問題が付随します。

        
        

1つ目は技術の問題。2016年に起きたテスラ社製の自動運転車での死亡事故は運転手の警告無視が原因と言われています。しかし2019年、ウーバー社の自動運転車が引き起こした死亡事故は交通ルールを無視した歩行者を車が認識できなかったため発生しました。このような問題は技術の発展とともに解決するでしょう。しかし、技術が発展した後に完全自動運転車が開発されても2つ目の問題が発生します。         
        

それは法律です。もし仮に自動運転車が事故を起こした場合は賠責補償はどうなるのでしょう。例えば現行の日本の法律では、事故を起こした際、運転者が賠償責任を負うと定められています。言い換えれば、人が車を運転する場合、運転者は『運転している人』なのでそこに賠償責任が生じます。では、完全自動運転車の場合、運転者は誰になるでしょう?運転席に座っていた人、もしくは、該当車の自動運転システムを開発した企業でしょうか?現段階ではこの責任の所在が非常に曖昧です。

        
        

また、少し話は違いますが、自動運転に際し大きな議論になっているハッキング問題が発生した場合はどう対処されうるのでしょうか?自動運転を可能にするネットワークを誰かがハッキングできれば、テロの武器に最適な技術になってしまいます。

        
        

不明瞭な部分が今後どのように明文化されるのか、みなさん気になるところではないでしょうか。いざとなった時の処置方法が曖昧なままであなたは喜んで自動運転車を使用しますか?

        

人間は機械学習技術を使いこなせるか?

機械学習""         
        

機械学習の社会実装において憂慮すべきは技術や法律だけの問題ではありません。機械学習の『使用者』にも問題は存在します。


アメリカ・ミシガン州フリント市の水道管施工の例を見てみましょう。同市では水道管に使用された素材が原因で深刻な水質汚染が発生していました。状況を深刻に捉えた科学者たちがGoogle社から支援を受け、どこの水道管を調査すべきか予測モデルの作成を行いました。しかしながら、市と施工会社はそのモデルを使用しませんでした。原因は施工会社のモデルの解釈に関する知識不足や、市長が住民からの支持を保つために行った政治的行動、予測モデルにより調査対象から外れうる住民の理解などが挙げられます。


ここで「無知は悪だ」、「政治は汚い」、「データ解釈ができないのは教育格差だ」なんてことを言いたいのではありません。あくまで主張したいのは、『いくら機械学習(もしくは、AI)技術が発達しようともそれを使うのは人間である』ということです。


使用者側が機械学習技術の使い方を理解していない、また、拒絶したりすれば、その技術は無駄になってしまいます(無論、無駄な技術や研究などない。のですが)。この例からわかるように機械学習の社会実装は、機械学習やデータ分析の知識を持ち合わせている人だけで成り立つものではありません。開発者側だけでなく、使用者側も機械学習に何ができて何ができないのかある程度理解しておくべきでしょう。


得体のしれない不気味で無機質な機械学習、ではなく社会問題や日々の生活で活用できる機械学習として周知するためにはどうすればいいでしょうか?


機械学習の判断を人は受け入れられるか?

機械学習""
         

冒頭で述べたように機械学習技術はめざましい発展を遂げています。その精度はますます上がり、応用される分野も拡大していき私たちの生活の中に深く根付いてきています。


しかし、どんなに機械学習技術が発達しても予測精度や正解率は100%にはなりません。もちろん生身の人間がおこなうより精度や計算速度が高くなるのは疑いようがないのですが。では、その100%ではない答えに多くの人は自身の選択を委ねることができるでしょうか?もしかすると、機械学習で出した選択肢は感情を排除しているためより客観的な判断が可能になるかもしれません。


そもそもデータには常にバイアスがかかっているので客観性については議論の余地があります。長くなってしまうので、後日別記事で同問題について書きます。


しかし、その正確性が100%でない以上、間違った判断をする可能性は0にはならないでしょう。


果たしてそれを多くの人たちは受け入れられるでしょうか?


自動運転の例で言えば、事故を完全に防げない完全自動運転バスに毎日乗るであろう老人は快く受け入れるでしょうか?フリントの例で言えば、ある地域の何十件かの家でたとえ80%の確率で問題ない水道管が使われていたと予測され、施工をしないと判断されたとします。果たして、そこに住む幼い子どもを持つ両親はその判断に納得するでしょうか?


人間が意思決定を行う際には感情や経験等、主観的な要素が入ります。そのため客観性でいえば機械学習を使った方がより合理的な判断をできるかもしれません。しかし、もし万が一、機械学習がその予想を外した場合はどうでしょう。


例えば、自身が乗っている完全自動運転車が事故に遭い後遺症が残ってしまいました。あなたはもう歩くことができません。あなたは「人間より精度の高い機械学習が判断したんだから仕方ない。」と自身の気持ちに折り合いをつけるでしょうか?水道管が施工されないと判断された地域に住んでいて、あなたの家族が何か重大な病気にかかってしまいました。「機械学習は完璧じゃないから仕方ない。」と疑いもなく言えるでしょうか?


『より良い』とは?

機械学習
   

最後に機械学習と人間の価値観・倫理観について議論を投げかけたいと思います。

  

繰り返しになりますが機械学習は数ある選択肢の中から『より良い』判断を下します。しかし、その『より良い』という判断をどうやって下すのでしょうか?これは予測精度に対する問いではなくて、何を持ってして、誰にとっての『より良い』なのか?という問いです。

     

Irving and Askell (2019)の"AI Safety Needs Social Scientist"によると、 そもそも 'better or worse' の受け取り方は人の価値観や倫理観によって異なるとあります。したがって、当著者達は機械学習の研究とともに、人そのものを対象とする研究も必要と述べています。

     

価値観や倫理観は個人の置かれてきた環境や信仰する宗教等、多くの要素によって左右されます。そのためすべての人に共通する『普遍的価値観』なるものは存在しません。例えば、有名な。これに対する答えは人それぞれなはずです。何が『より良くて』『正しい』のかという答えが明確でない以上、人の価値観や倫理観を機械に学習させることは果たして可能なのでしょうか?


Irving and Askell(2019)は機械学習側だけでなく人間側にも問題があり、人間自身も自分の持つ価値観や倫理観を説明できないと述べています。つまり、機械学習で使うデータに人間自身も説明できない概念が含まれてしまいます。


『より良い』という曖昧な概念、しかも、人もそれを説明できない。となると、人の価値観や倫理観に左右される事柄を機械学習を使って解決することはできるのでしょうか?


おわりに

 

機械学習技術は日々発展しています。上記で挙げた技術的問題は近い将来問題ではなくなるでしょう。しかし、それ以外の使う側の問題や、そもそも、人の価値観の違いなど機械学習で扱うべきかそもそも疑問を持つものもあります。


くどいようですが、機械学習は魔法ではありません。


使用者がその技術を使いこなせたとき初めてその価値を発揮するのではないでしょうか。機械学習は魔法でない故に全ての問題を『完璧』に解決できるわけではありません。あくまで、『より良い』選択を実行・提案するだけです。


そして、その『より良い』という判断基準も人の価値観・倫理観に基づくため決して『完璧』にはなりません。


世の中には機械学習やAIについて様々な記事や書籍が溢れています。明らかに嘘と判断できるものや不安を煽るものも数多く存在します(この記事ももしかすると嘘を述べているかもしれません)。それがすべての原因ではありませんが、人々を機械学習から遠ざけている一つの要素ではないでしょうか。機械学習を社会に役立てるようにする(社会実装する)には技術面の発達だけでは十分ではありません。それには使用者側も機械学習について知り、その技術を受け入れ、使いこなすための土台が必要となります。


当記事は数多く存在する機械学習に関する問題の解決方法を提案するものではありません。


『機械学習とは何なのか?』を知る際に一緒に機械学習の問題点や限界値なども知っておけば、よりその学びが楽しくなるのではと思い書いた次第です。


この機会に当記事内で投げかけた様々な問題点について、機械学習に精通する人や興味のある人はもちろん、機械学習に興味がない人、機械学習を忌み嫌っている人とも、話してみてはいかがでしょうか?


参考文献、サイト

         

ウーバーの自動運転車事故、交通違反の歩行者を認識せず AFPBB


国立研究開発法人科学技術振興機構


フォードとVW、業務提携を自動運転とEVに拡大 日経新聞


Irving, G. and Askell, A. (2019) "AI safety needs social scientists", Distill .


Madrigal, A. C. (2019) "How a feel-good AI story went wrong in Flint", The Atlantic , 03 Jan.


画像引用サイト(フリー素材)

         

PAKUTASO

         

photoAC

もくじ

機械学習の概要

  機械学習とは与えられたデータからデータに潜む規則性を自動的に発見し、データの分類や未知のデータの予測をコンピュータの計算手法を利用して行うことである。データから予測を行うとき、扱うデータによっては膨大な規則を用いたり、人力では見つけることの難しい規則が存在したりするので、人間だけでは予測が困難な場合があるが、それをコンピュータの計算に落とし込むことで予測が容易になる。機械学習を用いてデータの予測を可能にすることよって、以下の例のように私達の生活の中で大きな役割を果たしているのである。

  • 工場の製造ラインでの不良品検出
  • 株価の予測
  • ECサイトでのレコメンド機能

人工知能と機械学習の違い

 機械学習と並べて話題に出されるものとして、人工知能が挙げられる。人工知能とは人間が行っている言語理解や推論、問題解決などの知的な活動をコンピュータに行わせる技術である。人工知能と機械学習は、一見すると同じようなものに聞こえる。しかし、機械学習はある特定の分野においてデータに基づいて予測の結論を下すため、人工知能における人間の知的な活動のすべてを網羅しているわけではない。つまり、人工知能の一つのトピックとして機械学習が位置づけられる。 AIと機械学習の関係性

機械学習の種類

機械学習は主に以下の3種類に大別される。

  1. 教師あり学習
    教師あり学習とは予測するものの正解が分かっているデータに対して未知のデータの予測をする機械学習である。教師あり学習の中にはデータをカテゴリ別に分ける決定境界を引く分類と、カテゴリではなく、入力のデータからどのような値をとるか予測する回帰モデルを求める回帰の2種類の方法が存在する。工場の生産ラインで、部品の形状などから不良品かどうか判別するのは分類であり、今までの株価の変動から将来の株価を予測するのは回帰だと言える。 教師あり画像

  2. 教師なし学習
    教師あり学習に対して、教師なし学習正解の無いデータから情報を見つけることを目的とする機械学習である。教師なし学習はデータのみからグループ分け(クラスタリングなど)やデータの次元縮減(例えば、空間上の3次元のデータを平面上の2次元のデータとして写すなど)をすることで、データの隠れた構造を見つけ出す手法と言える。ECサイトでの顧客の購買行動から、一緒に買われているものを見つけ出して提案するレコメンドは教師なし学習である。

  3. 強化学習
    強化学習エージェントと呼ばれるシステムと環境とがやり取りをすることで行われる機械学習である。エージェントは何かしらの行動をすることによって環境から報酬を得ることができ、この報酬が最大になるように自身のシステムを改善していく 。ラベルや値などの決まった正解は無いが、エージェントの行動の出来を数値化して学習を進めていく。 強化学習

機械学習のプロセス

 ここで、機械学習がどのようなプロセスで予測まで行われるのか説明する。

  1. データの収集
    まず必要なのはデータの収集である。当然、データから何かを予測するためにはそのためのデータを集計しなければならない。
  2. データの前処理
    ほとんどの場合、実際に学習を始める前に、データに対して前処理を行っておく。機械学習を行う上では予測に必要な情報だけを抽出しておくことで、この後の学習の段階でコンピュータが行う計算を簡潔にすることができる。例えば用いるデータが画像ならば、画像のサイズの拡大や縮小、回転などすることで前処理を行う。 機械学習では予測したい情報に対して、それを特徴づける他の情報を特徴量と呼ぶ。そのため、前処理のことを特徴抽出と呼ぶこともある。
  3. 学習
    前処理によって抽出した特徴量を用いて学習を行う。予測したい情報に合わせて予測に用いる計算手法を選び、その後データを入力して結果を出力する規則算出する。この規則を作るために用いる計算手法やルールをモデルと呼び、ここで用いられるデータは訓練データと呼ばれる。この学習のモデルをどう構築するかによって予測の精度が大きく変わってくる。
  4. 精度の評価
    学習したモデルに対してどのぐらいの精度で予測が成功しているのか評価する必要がある。そのため先程学習で使った訓練データとは別に、テストデータを用いて精度を測定する。これによって、学習に用いてないデータに対しても良い精度が出ているか(汎化という)を確認する。精度が悪ければ、もう一度モデルの構築や場合によってはデータの収集に戻って学習を繰り返す。
  5. 未知のデータに対して予測
    良い精度のモデルが得られたのならば、それを用いて新たに得られる未知のデータに対して予測が行うことができる。

機械学習のこれからの発展

冒頭で示した例から分かる通り、機械学習は今もなお研究され続けられている分野であり、また今後も発展していく分野であることが分かる。最近ではPythonやRなどのデータサイエンスの分野で用いられることの多いプログラミング言語に便利なライブラリが用意されている。特にPythonは多次元配列の高速なベクトル演算を可能にするNumPyや、機械学習ライブラリとしてscikit-learn などを用いることで、オープンソースのライブラリを使って簡単に機械学習のプログラムを実装することができる。他にも表形式のデータ操作を可能にするpandasやデータの可視化を実現するmatplotlibも存在し、Pythonのライブラリの発展とともに、高度な機械学習プログラミングが可能となっていく。

まとめ

今回の記事では以下のことを述べた。

  • 機械学習の簡単な説明
  • 人工知能と機械学習の違い
  • 機械学習の3つの分類である教師あり学習、教師なし学習、強化学習について
  • 機械学習とPythonのライブラリの発展

機械学習は人間では困難な膨大なデータからの予測を可能にし、私達の生活の中で重要な役割を担っている。また研究がされていくことで、より機械学習が発展していきよりよいサービスが創造されていくに違いない。

「機械学習」


耳にすることが多くなった単語ですが、そもそも機械学習ってなんでしょうか。
AI(人工知能)との違いは?なにが出来てなにが出来ないのでしょうか?


本日は上記を解説し、実際に活用されている事例をご紹介します。


機械学習とは

機械学習はAIの1つの要素です。
AIの中に機械学習があり、機械学習にディープラーニング(深層学習)があります。


機械学習とは...

  • 大量のデータの特徴や法則を捉え、未知のデータを予測・分類する。
  • 分析の精度は100%ではないが向上させることができる。
  • 目的に応じて手法を使い分ける必要がある。


機械学習ができないこと

  • 企画立案などの新しいアイデアを生み出すこと
  • 喜怒哀楽を感じたり、自発的に考えること


機械学習が得意なこと

  • 同じ作業を繰り返しおこなうこと
  • 過去のデータを正しく学習すること
  • 大量のデータを分析すること
  • 人間がおこなうと時間がかかる膨大なデータを扱うこと


機械学習の分類と活用例

『機械学習が得意なこと』を分類し、ビジネスでの活用例を紹介します。


(1)「同じ作業を繰り返しおこなうこと」...作業を黙々とミスなくやってくれる「働き者」タイプ
 作業を確実にミスなく実施し、新たな労働力として人間を助けます。
人間がおこなっていた簡易な業務と代わることができるため、労働人口の減少や長時間労働の削減の問題の解決に役立ちます。
空いた時間を、利益を生むための営業活動や、さらに労働環境を良くするための検討時間に替えることができ、生産性の向上を後押しします。


▼活用例 機械学習事例

・無人レジ
レジで商品画像を読み取ると金額が算出されます。レジでの混雑緩和や人件費の削減に効果的です。
当社でも開発中で、下のアイコンから検討状況を確認できます。


(2)「過去のデータを正しく学習すること」...熟練者の技術を習得する「熟練社員」
 人員確保の困難や、少子高齢化における熟練者の大量退職によって、知の継承が懸念されている分野において、熟練者が保有している技術を再現できます。
技術、ノウハウの再現性を高めることで、退職への対応だけでなく、新人教育にも活用できます。


▼活用例
機械学習事例

・不良品検知/異常検知
 機械学習で画像や、振動、音などの信号などの違いを認識し、良品と不良品(または良品と差が大きい物)、正常と異常(または正常と差が大きいもの)を識別します。
・コールセンター問い合わせ業務
熟練者の回答や対応を、機械に学習させ、いつでも引き出せるようにすることで、顧客対応レベルを全体的に向上させます。

不良品検知


(3)「大量のデータを分析すること」...データを即時に読んで判断する「聖徳太子」
 人手を要し人間が苦手とする大量の情報、ビッグデータの分析をおこないます。


▼活用例 機械学習事例

・リーガル分析
 訴訟事案は毎年どんどん増え、大量のデータになります。六法全書や過去の訴訟事案のデータに検索タグ付けをおこない、自然言語処理を使い検索し、役立つ情報を瞬時に取り出し分析する、言わば「AI弁護士」、「AI裁判官」の役割をします。
   


(4)「人間がおこなうと時間がかかる膨大なデータを扱うこと」...人間にできなかったことをやってくれる「天才社員」
 予測や最適化など人間では実施に時間がかかり、且つ、担当が限られる業務をおこないます。人間では扱うことが難しい膨大なデータも機械学習で扱えます。


▼活用例 機械学習とは

・創薬
 新薬の開発には膨大な時間とお金がかかっています。それは病気に適合する物質(リード化合物)を発見するまでに、試行錯誤に途方も無い時間がかかっていることが原因の一つです機械学習を用いて過去の事例から適合度の高いリード化合物の構造式を探すことで、適合度の高いアタリを発見するまでの時間を削減します。このようにリード化合物を最適化するまでのサイクルを短くすることで、コスト削減をも実現します。


機械学習のこれから

 近年、少子高齢化による労働人口の減少や労働時間の削減などによって、十分な労働力の確保や業務効率化による生産性向上が課題になっている。


「機械学習」と「AI」。
どちらも単に「計算処理の早いコンピュータ」ではなく、「人間のようなコンピュータ」といった感覚のもので、人間の代わりに24時間働いてくれたり、作業をミスなく実施したり、人間には不可能なことを実現します。


 機械学習は既に研究段階から実用化の段階に進み、あらゆる産業に変化をもたらしています。これから更に機械学習は世の中を豊かにする技術として受け入れられ、運用されていくため、今後は機械学習をどのくらい活用できるかが、社会やビジネスの発展に直接影響することも考えられます。

  「機械学習は人間の仕事を奪う」


という意見もありますが、「機械学習ができないこと」で挙げたように、企画立案や戦略を立てることは人間の仕事です。人間による戦略や企画に機械学習を活用する、といった役割分担になっていくでしょう。
そのため「人間 VS 機械学習」ではなく、「人間 with 機械学習」で発展していくと予想されます。


本記事でご覧いただいたように、AI・機械学習は幅広い活用方法があり、お客様ごとの活用方法が必要です。
当社ではみなさまの課題やお困り事を一緒に解決していきます。
下記にご興味がありましたら、問い合わせ口からご連絡ください。

  • AI・機械学習の導入を考えている
  • 活用事例についてもっと詳しく知りたい
  • 他になにが出来るのか興味がある


当社、アクセルユニバースの紹介

私達はビジョンに『社会生活を豊かにさせるサービスを提供する。』ことを掲げ、このビジョンを通して世界を笑顔にしようと機械学習・深層学習を提案しています。
例えば、現在人がおこなっている作業をシステムが代わることで、人はより生産性の高い業務に携わることができます。


acceluniverse


参考文献

・梅田 弘之『エンジニアなら知っておきたいAIのキホン 機械学習・統計学・アルゴリズムをやさしく解説』インプレス、2019年
・南野 充則『未来IT図解 これからのディープラーニングビジネス』MdN、2019年


Twitter・Facebookで定期的に情報発信しています!

アクセルユニバース株式会社(以下 当社)では『機械学習・深層学習で世界を笑顔にする』を掲げ、人が対応している業務を画像認識、音声認識、文字認識等を活用して効率化する機械学習ソリューション開発をおこなっています。

今日は世界を笑顔にしたい私が
「ドラえもんのひみつ道具があれば、みんな笑顔になるのではないか!?」
と機械学習を活用してひみつ道具の実現を考えてみました。


目次

  • ひみつ道具の検討
  • 実現したいこと
  • 結果と今後


ひみつ道具の検討

ずばり、今回実現を検討したいひみつ道具は「ムードもりあげ楽団」です。 ひみつ道具の実現
出典:ドラえもんのひみつ道具を一つもらえるとしたら
人の気分を盛り上げる楽団ロボット。その時の気分によって楽曲を演奏してくれます。
人は嬉しい時には楽しい音楽、悲しい時には悲しい音楽が聴きたくなるものです。
今回は人の声から感情を判定し、適切な音楽が流れる仕組みを検討します!


実現したいこと

人間の発した音声からその時の感情を判定し、適切な音楽が流れる仕組みです。
ひみつ道具の実現
実現するために、システムが人の発語を聞き取り感情を分析し、予め決めておいた感情群に判定します。そして判定された感情によって異なる音楽が流れることが必要です。
今回は機械学習の範囲の、感情分析〜判定を考えていきましょう。感情の変化は音声の韻律特徴に表れるので、韻律特徴により4つの感情[喜び/悲しみ/怒り/フラット]に分類します。
いくつか文献を読んでこのように計画しました。文献は最後に紹介します。

ひみつ道具の実現

データの準備
複数の人から発声データを集め、音の高さ・強さを時系列データにし、適当な長さに分割する。
学習データ : 話者と面識のある人が音声データを聴き、感情を判定(ラベル付け)し、分割する。

モデル
SVM(Support Vector Machine)
未学習データに対する高い汎化性能があり、高い認識性能が認められている。
SVMについて当社ブログ/最初に学ぶ 2分類SVMモデルの基本

評価
交差検証法(クロスバリデーション)
膨大なデータを用意することが難しく、また人の声のため学習にムラがあるかも、と懸念し汎化を高めるために、全てを学習データとして扱う本法を挙げる。
少し計算に時間がかかるかも...。


結果と今後

今回は計画だけで実装はしていませんが、愛知工業大学での結果は精度60%程度で判定できています。
「短時間発話からの音声感情認識のための音声データ選択法に関する検討」
音声データを短く切ることで、特徴として捉える範囲が減り、似たグラフの動きを誤判定してしまうようで若干精度が低下しているようです。
別の研究だと、音声データだけではなく、表情も感情判定に使用し、こちらは精度68%〜70%と結果が出ています。
また、一度判定させたものに結果をフィードバックすることでさらなる精度向上も見込めると思います。


どうやら実現可能性は多いにありそうなので社内でウケが良ければ実装に向けて進めていきます!
ドラえもんひみつ道具シリーズはシリーズ化したいので面白いひみつ道具やお気に入りがあれば是非コメントください。


当社ではインターン生が取り組んでいることを技術ブログで紹介しています。
文系学部2年生の私が「SIGNATE」初参加で上位8%に入った話論文 Attention Is All You Need から Attentionモデルの解説等が公開されています。
定期的にメルマガでも情報配信予定なので、問い合わせページに「メルマガ登録希望」とご連絡ください。


参考

平井有三:"初めてのパターン認識"森北出版 2012
小野谷信一 長屋優子 : "表情と音声を用いたサポートベクタマシンによる感情認識"2014
短時間発話からの音声感情認識のための音声データ選択法に関する検討
SVMを用いた自発対話音声の感情認識における学習データの検討

はじめに

現代社会には、音楽というものが氾濫しています。
そして多くの人は音楽を聞くというと、生演奏されているものを聞くことよりもCDやサブスク型サービスなど、一度デジタルなデータになったものをアナログデータへ変換して視聴することの方がよっぽど多いでしょう。 このデータ化によって普段聞いているだけでは気づかないような、特徴、性質に目を向け、そういった見えなかったデータを使い既存のものをもっと充実させる、新しいものを作り出すことはできないでしょうか。 この記事ではそういった取り組みや手法の一端を紹介できればと思います。

目次

MIRとは

特徴量

機械学習x音楽の実用例

参考文献

MIRの現状

こういった音データ(特に音楽)から情報を抽出、分析する分野は、MIR(Music Information Retrieval)と呼ばれています。 ISMIRという世界規模のMIRに関する研究が発表される学会があり、2019年は20周年という大きな区切りの年でした。しかし、そこで発表された論文の一つの中で法的制限によって研究が進めづらく、また大企業とそれ以外とで資金面の違いから多様な研究が阻害されることによる再現性の危機等が指摘されています。 また、日本のGoogleで2019年11月現在MIRでと検索しても1ページ目に音楽分野のMIRの記事は出てこなく、あまり広く普及しているとはいえないのが現状でしょう。(MIRという略語が他にも多く当てられているということもありますが・・)

特徴量

このブログは技術ブログなので実際に使われている特徴量(データを扱う際にデータの特性を数値にしたもの)、またその抽出に関していくつか紹介していきます。 ここでは例としてヴィヴァルディの四季から春の第1楽章と冬の第2楽章のデータを扱っていきます。
Spring
scenary-spring.jpg

Winter
winter-image
spring.png winter.png

下グラフは、それぞれの信号をサンプリング間隔(sr=22050)でグラフ化したものです。 春は振れ幅が大きいところと小さいところがはっきりと分かれているのがわかります。 一方、冬は全体的に振れ幅が小さく、また曲自体も穏やかな印象を受けます。

1.平均平方2乗エネルギー(Root Means Square Energy)

EがErrorではなくEnergyなので読むときに注意が必要な値。単にRMSと書いている場合もあります。 表すものは単純にその音楽がどのくらいのエネルギー(音の大きさ)をもっているかをあらわし、下記スペクトル流動と相性が良いとされています。 オリジナルの波とそのまま比べると大きさだと見比べづらいので、0-6秒までをプロットします。 spring-rmse おおよそオリジナルの波と同じ形を描いています。 エネルギーが大きいところは、激しいと読み替えることができるように思えます。しかし、その考え方でこの特徴量を利用すると大きな落とし穴があります。 春のヴァイオリンソロ部分(1:57〜)は、オリジナルの波を見てみると、振れ幅が小さくなっています。 しかし、だからといって穏やかなわけではありません。しかし、rmseを使うと、ソロパートなど、合奏に比べ音量が負けやすいところは数値が小さくでてしまいます。 結局、この特徴量はどれだけ音が大きいかということしかわかりません。

2.ゼロ交差率(Zero Crossing Rate)

音の波が正から負に変化する頻度を表した数値で、ノイズ量(不安定さ)を表す一つの手法とされています。 オリジナルのグラフは、波が潰れてしまっているので拡大して見てみます。 spring-extended Springの1秒からsr=300まで(約0.01秒)ののグラフです。 波が単純でないので分かりづらいですが、この区間の場合だとZCR=8となります。 しかし、高音は元々波の間隔が狭いため、高音が多い曲では適切に動作しません。

3.短時間フーリエ変換(Short Time Fourier Transform: STFT)

曲によって演奏時間は違い、それらの異なる長さのデータを扱うために、一定の時間(短時間)に対して離散フーリエ変換(一般的に高速フーリエ変換)を行い、それを繰り返すことによって、どのように曲が展開されているかを知る手法です。 フーリエ変換の概要については、省略しますが、簡単に言うと、オリジナルのグラフのように振れ幅(正確には無次元量)と時間軸で表されているものを、一定の時間内に、どのくらいの強さの振動がどのくらいあるかに変換する手法です。 STFTによって求められる周波数スペクトル(どの周波数の音がどれくらいあるか)を用いて下で紹介するようなMSCCなどへと発展できます。
spring-stft winter-stft

4.定Q変換(Constant-Q Transform)

STFTでは扱う時間を増やすと多くの周波数を含むことができる可能性があるため一般に周波数分解能は高くなりますが、時間間隔が長いためにその中で起こっている変化をとらえにくくなるというジレンマを抱えています。 定Q変換では、この問題に対応するために分析する周波数間隔を人間の耳が感じているとされているように対数的に設定します。 つまり、人間の耳と同じように特定の周波数(低域)に対しては敏感に分析し、そうでないところ(高域)は荒く分析対応するのが、定Q変換の考え方です。 これによって効率よく必要なデータ分析が行なえます。
spring-conq winter-conq
上記フーリエ変換後のスペクトログラムに比べ人間の耳に聞こえやすい音域が強調され広がっているのがわかります。 C4はト音記号の一番低いド(普通のド)で、 約261.626Hzとされていて、オクターブ上がるごとに約倍音(平均律のため誤差が生じる)になります。

5.ログメルスペクトログラム(Log-melspectrogram)

単にメルスペクトログラムと言われていることもあります。 上記1や2(1が主流)で得られた振幅スペクトルをメル尺度(実際の音と人間の音高知覚の差異を吸収したもの)で扱うためにメルフィルターバンクを適応たものです。
spring-log-mel winter-log-mel
前提となる考え方が定Qと同じく人間の耳に適応させた特徴量を作り出すことを目的としているためスペクトログラムは似ていますが、低域に対してブーストされていないため、定Qを下にずらした形となっているのがわかります。

6.メル頻度ケプストラム係数(Mel Frequency Cepstrum Coefficients: MFCC)

ケプストラム(Cepstrum)はスペクトル(Spectrum)の最初の4文字をひっくり返した造語とのことで、スペクトル信号をフーリエ変換した結果であるそうです。 上記3の値を離散コサイン変換し、その値の低次元成分部分で構成されています。 また、この値はもともと喋り声などのデータに使われていた特徴量で、離散コサイン変換の段階で空間的特性を削除するため、ディープラーニングの際に適さないのではないかという主張もあります。
spring-mfcc winter-mfcc
たしかに、定Qやログメルと比べると変化のある面積が少なくなっています。

機械学習×音楽の実用例

ずらずらといくつか紹介しましたが、一体これらの値を用いてどういったことができるのでしょうか。 例えば、今音楽を聞く手段として、ひとつの主流な形になっているものとしてサブスクライブ型サービスがあります。 定額で契約期間中数千万曲の中から好きなだけ好きなものを聞けるという画期的なサービスです。 しかし、やはりこれだけの曲数があると何を聞くか迷い結局同じ曲を聞くにとどまることが多いでしょう。 そこで各社は、様々な方法でレコメンド機能を実装しています。多くは、その曲を聞いた他の多くのユーザーがよく聞いている曲が選ばれています(協調フィルタリング)。しかし、これでは話題の曲など普段そういった曲を聞かないような人も聞いている曲では正しいおすすめはできないでしょう。 音楽サブスクライブ配信大手のSpotifyではこれに加え、音声データを用いた学習を活用しています。純粋にその曲に似ている、同じ雰囲気の曲を探しだし、Discover Weeklyで他社に先んじた高精度のレコメンド機能を提供しています。 また、今年の3月にgoogleが適当に音を数個与えるとそれに対して和音を足して"バッハっぽい音楽"を作り出すというシステムを発表しました。 このように機械学習は、既存のものを踏襲しつつ新たなものを発見したり生み出すことができ、今まで気が付かなかった可能性にも気づかせてくれるのです。


定期的にメルマガでも情報配信をしています。
ご希望の方は問い合わせページに「メルマガ登録希望」とご連絡ください。

参考文献、使用音源

  • (Anniversary paper) Data Usage in MIR: History & Future Recommendations
  • Notes on Music Information Retrieval
  • [Python]ただひたすらにフーリエ変換[備忘録]
  • MFCC(メル周波数ケプストラム係数)入門
  • LibROSA Document
  • [Python] Constant-Q 変換(対数周波数スペクトログラム)
  • Deep Learning for Audio Signal Processing
  • JSYMBOLIC 2.2: EXTRACTING FEATURES FROM SYMBOLIC MUSIC FOR USE IN MUSICOLOGICAL AND MIR RESEARCH
  • COMPOSER RECOGNITION VASED ON 2D-FILTERED PIANO-ROLLS
  • Spotify's Recommendation Engine
  • Googleが機械学習で誰でもバッハっぽく作曲できるGoogle Doodleを公開中

  • The Four Seasons(Vivaldi) by John Harrison with the Wichita State University Chamber https://freemusicarchive.org/music/JohnHarrisonwiththeWichitaStateUniversityChamberPlayers/TheFourSeasons_Vivaldi 協奏曲第1番ホ長調 RV 269「春」(La Primavera)第1楽章 協奏曲第4番ヘ短調 RV 297「冬」(L'Inverno)  第2楽章

    この記事では、3ヶ月前までデータサイエンスと無縁だった私が、
    マイナビの家賃予測コンペで上位8%(スコア14953)に達した解法について紹介したいと思います。

    始めまして、 アクセルユニバース株式会社、インターンの土井です。

    SIGNATE SIGNATE

    ここで紹介するSIGNATEの解法は、私が始めて間もないこともあり、シンプルな解法ばかりです。
    幅広いレベルの方の参考になれると思います。


    コンペの概要

    SIGNATE https://signate.jp/competitions/182


    東京23区における賃貸物件の家賃予測が目的です。
    少ないカラムに多くの情報が詰められており、このままでは有効にモデルを適用することができません。
    丁寧に各カラムの前処理を行い、いかに有効な特徴量を作り出すかがこのコンペの肝です。


    目的

    私がこのコンペに参加した理由は以下の通りです。

    • SIGNATE(Kaggle)の流れを理解したい
    • 短期間で実績を残したい
    • 上位者発表会でスカウトされたい


    以下がその結果です。

    • pythonの基礎文法が書けるようになった
    • SIGNATE(Kaggle)の全体の流れを把握した
    • データサイエンス、プログラミングが楽しくなった


    残念ながら発表会に参加できる順位に達しませんでしたが、短期間で成長できる素晴らしい経験でした。
    ここからは、上位8%に達するための具体的な解法を時系列に沿って10月1日から解説していきます。


    SIGNATE SIGNATE


    前処理

    実はこの期間、スコアが全く上がりませんでした。

    SIGNATE SIGNATE

    下位20%くらいだったような。 スコアが上がらない原因がわからず、3週間ひたすら前処理を行います。

    この期間の終盤の頃は、前処理をもう一度やり直してみたり、綺麗に書き直してみたりと、 スコアに関係のないことばかりをしていました。(おかげでコーディング力は爆上がり)

    使っていたモデルはRandom Forestで、モデルに関する知識が無かったためパラメータは全てデフォルトです。


    モデル作成

    スコアが上がらず悩んでいたときに、運命の出会いがありました。

    Lightgbm

    テーブルデータコンペではLightgbmが強いという情報があったので、
    モデルをLightgbmに変え、パラメータもkaggleのnotebookを参考に調整しました。

    そしてモデルを回してみると、

    SIGNATE SIGNATE


    ・・・・・・・???? 前処理をひたすらしていた3週間を嘲笑うかのようにスコアが上がりました。

    この時点ではほとんど特徴量エンジニアリングはしていません。
    Lightgbmの破壊力、恐るべしです。


    特徴量エンジニアリング part1

    ようやく前処理が終わったので、本格的な特徴量エンジニアリングのステップに入ります。
    主に以下のような特徴量エンジニアリングを行いました。

    • 数値変数×カテゴリ変数
    • 数値変数×数値変数
    • TargetEncoding


    数値変数×カテゴリ変数

    数値変数同士を組み合わせた特徴量生成は思いつきやすいのですが、カテゴリ変数と組み合わせた特徴量も実は強力です。
    例として、各カテゴリごとに対する数値変数の平均や標準偏差を計算し、特徴量にします。

    SIGNATE SIGNATE

    0行目の「Breadthtomeanmoyoristation」が「0.590665」というのは、
    西巣鴨駅の近くにあるこの賃貸は、西巣鴨駅の賃貸の平均の面積の0.59倍であることを示しています。
    このように、周辺の賃貸と比較した面積の大小を表しています。

    他にも色々な組み合わせが考えられます。

    • 部屋の面積×住所
    • 部屋の面積×部屋の間取り
    • 部屋の階数×最寄り駅


    数値変数×数値変数

    これは、2つの数値変数を乗除することで新たな変数を生み出します。
    その例として、以下のカラムをつくりました。

    • 部屋の広さと部屋の間取りで一部屋あたりの面積を求める
    • 賃貸の面積 * 階数を計算する


    TargetEncoding

    TargetEncodingは、目的変数を利用して特徴量エンジニアリングを行います。

    SIGNATE SIGNATE

    例えば、各駅に対する賃料の平均を計算した値を特徴量にします。
    ただし、この方法は正しい処理(Leave One Outなど、ここでは割愛)を行わないと精度が落ちてしまう可能性があります。

    以上の特徴量エンジニアリングを行うと、以下のスコアが出ました。
    モデルはLightgbmのままです。

    SIGNATE SIGNATE


    特徴量エンジニアリング part2

    SIGNATEのフォーラムを見ると、「地価データを利用した」という情報を公開されていたので、早速取り入れてみました。

    SIGNATE SIGNATE

    地価データも価格への影響が強く、スコアに貢献してくれました。

    SIGNATE SIGNATE

    これが私の最終提出スコアです。


    解法まとめ

    モデル

    Lightgbm


    特徴量エンジニアリング

    • 数値変数×カテゴリ変数
    • 数値変数×数値変数
    • targetencoding


    最後に

    家賃予測コンペでは、他のコンペでもよく使用される基本的な手法を行うことで、上位8%まで上がりました。
    私のようなKaggle初心者は、Kaggleで紹介されている高度な解法を理解し活用することが難しいので、
    データの特徴を深く理解し、基本的な解法を最大限に活用することが効果的です。

    これからも、データサイエンティストとしてKaggleコンペにたくさん参加し、Kaggleの解法についてアウトプットしていきたいと思います。


    Twitter・Facebookで定期的に情報発信しています!

    目次

    1. このブログの対象者
    2. 地震コンペの概要
    3. 私が地震コンペを始めた理由
    4. Kaggle初心者が地震コンペをやるまで
    5. 地震コンペの情報収集
    6. 参考にするNotebookの解読
    7. 特徴量の作成
    8. モデルの作成
    9. 結果
    10. 考察
    11. 今後


    1. このブログの対象者

    • Kaggle初心者
    • Kaggle入門者用のTitanicや住宅価格コンペの次に挑戦したいが進め方に悩んでいる人
    • 地震コンペ(LANL Earthquake Prediction)のような時系列の信号データの分析に興味を持っている人


    2. 地震コンペの概要

     このコンペは、地震の研究でよく使用される実験装置から得られる「音響データ(acousticdata)」のみを使って、実験室で発生する「地震までの時間(timeto_failure)」を予測するコンペである。訓練データは一つのセグメント(一つの実験データの一部分)で、図1のように「音響データ」と「地震までの時間」から成る。

    訓練データ

     テストデータは2,624個のセグメント(それぞれseg_idが与えられている)で、各セグメント毎に1つのcsvファイルから成るため、2,624 個のcsvファイルから成り、図2のように「音響データ」のみで構成されている。また2,624 個のcsvファイルは1つのフォルダに入っている。

    テストデータ

     この2,624個の各セグメント(各segid)に対して、図3から4のように「地震までの時間」を予測し提出することが目的である。ここで注意すべきなのはsumplesubmission.csvのsegidの順番と2,624個のテストデータが入っているフォルダのsegidの順番が異なっていることである。しかし順番は異なっているが、共に2,624個のseg_idが正しくあるので心配する必要はない。

    samplesubmission

    提出ファイル


    3. 私が地震コンペを始めた理由

    • わたしは以前から「海洋波の波高予測」といった時系列の信号データの分析を行っている。その分析方法はその信号データのみを特徴量として分析する方法である。この方法をここでは「直接法」と呼ぶことにする。私は時系列の信号データの分析方法としてこの「直接法」以外を知らないため、今回地震コンペにチャレンジすることで、新しい手法を知ることができ、今後の分析に活かせるのではないかと思ったからである。

    • また地震コンペで扱う「音響データ」は時系列の信号データであるが、世の中の多くのデータは時系列であり、時系列データの分析をできるようになると、ありとあらゆる現象の分析が行えるようになる。なのでその練習の一環として、地震コンペを行うことにした。


    4. Kaggle初心者が地震コンペをやるまで

    ▼必要なスキル

    • Pythonの基本構文が書ける能力
    • 機械学習の学習モデルの種類を知っており、実装できる能力


    ▼地震コンペをやる前にやった方が良いKaggle

     Kaggleの基礎や提出方法などを分かっておくために、深堀りはせずとも以下をやっておいた方が良い。

    • Titanic

     私はネットで「Kaggle Titanic 入門」などと検索し、コードを理解して参考にした。

     スコアが0.8を超えると、Kaggleの力がある程度付いたとよく評価されている。

    • 住宅価格コンペ

     私はネットで「Kaggle 住宅価格 前処理」などと検索し、コードを理解して参考にした。


    5. 地震コンペの情報収集

    • まずは何かを参考に

     本来ならば、自力で提出できるのがベストであるが、私は地震コンペをやると言っても何から始めていいのか、特徴量をどうするか悩んだので、まずは既存のものを参考にすることにした。

    • ネット検索は使えない

     地震コンペはTitanicや住宅価格とは異なりマイナーなコンペなので、ネット検索では地震コンペについてしっかりと解説していたり、コードが書いてあるサイトがない。地震コンペに限ったことではないが、Titanicや住宅価格以外のコンペはネット検索をしても良い解説サイトは多分ないだろう。

    • Notebooksを参考に

     そこで参考にすべきなのがKaggleのNotebooksだが、当然英語で、読み進めていくには時間がかかる。また問題は英語で書かれていることだけではない。Notebooksは人によっては全く文字を書いて解説せず、ただコードを貼っている人もいる。人が書いたコードは、自分の書き方とは当然異なるので、本当に読めない。

    • 良いNotebookを見つけるには

     では、読みやすいNotebooksはどうやって探せばよいのか。まずはNotebooksの右上にあるSort byの所を、Most Votesにすると良い。良いNotebooksと投票されたものが上から順に並んで表示される。しかし、必ずしも一番上に表示されたNotebookが良いとも限らない。なので上から順にNotebookを見ていく。上から順に見て行き、英語ではあるができるだけ解説文が多いNotebookを探すとよい。コードだけのNotebookは上級者にしか読めないだろう。また、パッと見でコードの構文の形がなんとなく分かるものを選ぶとよい。この段階ですぐにコードの内容がすぐに理解できる必要はない。ただ構文の形がなんとなく分かるだけで、自分の書くコードと似ている可能性が高いのでよい。


    6. 参考にするNotebookの解読

    • 参考にするNotebookの決定

     こちらのNotebookを最初に選んだ。後半部分は解説文はないし、コードもよく分からない。だが、前半部分は解説文があり、コードもなんとなく構文の形が分かるので、これを選んだ。

    • 全部コピペして提出

     そしてまず上記URLのコードをコピペして提出してみた。これは念の為、エラーが出ずに正常に実装でき、採点されるかを確認するために行った。 コピペしてもエラーが出て実装できないNotebookもあるのでこの作業はしたほうが良い。今回は正常に実装でき採点されたので特に問題はなかった。

    • 解説文の解読

     ここからが私の勉強である。Notebookの解説文をgoogle翻訳を使いながら読んだ。

    • コードの解読

     その後Notebookのコードを上から解読していった。この作業が最も気合がいる作業であるが、読みにくくないNotebookを選んだため、なんとか読むことができた。ただ全ては理解できていない。特に後半の学習モデルの作成部分はよく分からない。そこでこれは私の工夫だが、特徴量を作り上げ、訓練データとテストデータの作成する部分だけNotebookを参考にすれば、後はなんらかの学習モデルを使用して学習すればよいのであって、学習モデルまで参考にする必要はないので、後半部分を解読することはしていない。つまり私は前半の特徴量を作り上げ、訓練データとテストデータの作成する部分だけNotebookを解読した。


    7. 特徴量の作成

     まず、モジュールや関数を読み込み、次にtrain.csv(図5ではearthquake_train.csvと改名している)を読み込む。

    スクリーンショット 2019-11-05 14.10.09.png

     次に訓練データの特徴量を図6のように作成する。「音響データ」の特徴を保持して加工する必要があるため、当然、平均や標準偏差といった統計量を用いるのだが、時系列データであるので、「音響データ」150,000個毎の各セグメントの統計量を特徴量としていく。例えば、「音響データ」の0から149,999個目の統計量を一行目、150,000から299,999個目の統計量を二行目としていく。そしてその統計量を24種類扱う。このように信号データの特徴を保持して新しい特徴量を作る方法をここでは「間接法」と呼ぶことにする。

    trainデータ trainデータ特徴量作成コード

     訓練データの特徴量の作成と同様に、テストデータも図7のように特徴量を作成する。但し、samplesubmission.csvとtest.csvはearthquakesamplesubmission.csv、earthquaketest.csvに改名している。

    testデータ特徴量作成コード


    8. モデルの作成

     まず図8のように、訓練データとテストデータの正規化を行う。ここで理由は分からないが、In [6]において、 scaler.fit(X_test) というコードを加えてしまうと精度が落ちることが分かったので、図8では加えていない。

    データ正規化コード

     その後、学習モデルはNotebookを参考にせず、図9のようにLightGBMを採用した。但し、LightGBMのパラメータだけはNotebookでLigghtGBMを行っているであろう箇所の値と同じにした。

    モデル作成コード モデル作成コード


    9. 結果

     上記のコードを実装することで、図10のようにスコアが1.65885となった。

    結果画像


    10. 考察

     今回は上記のURLのNotebookを参考に地震コンペを行ってきたが、このNotebookには同じ人が作成した第二弾 があり、ここでは今回作成した特徴量に加え、更に多くの特徴量を追加して、精度を上げている。つまり、特徴量を増やし、「音響データ」の特徴をより正確に統計量として抽出することによって精度が上がるのではないかと私は考えている。


    11. 今後

     この地震コンペは、使用できるデータとして、一つの時系列の信号データしか与えられていない。このような場合、その信号データを唯一の特徴量と見なす「直接法」(LSTMなどの時系列データに特化したモデルを使用するなど)は当然あるが、実際にやってみるとデータ数が非常に多いため処理しきれなかった。つまり「音響データ」をそのまま使うというのはなかなか厳しい事が分かる。そこで、今回参考にしたNotebookのように、その信号の特徴を抽出して統計量にし、それを特徴量にするという「間接法」が有効であった。

     今後も私は時系列データの分析を主に行って行くが、このような状況に出会った場合、「直接法」だけでなく、「間接法」というアプローチもあるということを念頭に入れて分析にあたりたいと思う。また逆に、今のところLSTMによる「直接法」で地震コンペの処理はデータ量が多すぎるためできていないが、なんとかできる方法がないのか今後も探ってみたいと思う。


    当社では定期的にメルマガでも情報配信をしています。
    ご希望の方は問い合わせページに「メルマガ登録希望」とご連絡ください。


    Twitter・Facebookで定期的に情報発信しています!

    アクセルユニバース株式会社(以下当社)では、人が対応している業務を画像認識、音声認識、文字認識等を活用して効率化する機械学習ソリューション開発をおこなっています。

    インターン生はその一環としてkaggleコンペに挑戦しており、本日はkaggle Expertになった山口くんに取り組みをインタビューしました。 kaggleコンペに挑戦している方、これから機械学習の勉強を始める方は是非参考にしてください!


    目次

    • 山口くんの紹介
    • kaggleコンペ挑戦
      • kaggleメダル獲得のテクニック
      • 実案件との違い
    • おわりに


    山口くんの紹介

    kaggle Expert メダル


    10ヶ月前から機械学習の勉強を開始した文系大学生。

    過去kaggle参加コンペ数:3 メダル獲得数:2 (銀1:IEEE-CIS Fraud Detection、銅1:Severstal: Steel Defect Detection)

    signateもちょこちょこ参加。


    kaggleコンペ挑戦

    ―――今日は宜しくお願いします。

    お願いします。

    ―――まず初めに、kaggleに参加し始めたきっかけを教えて下さい。

    kaggleはデータサイエンスや機械学習をおこなうにあたり、気軽に挑戦でき実力を表現しやすかったんです。なのでまずはやってみようかな、と。 僕のkaggle開始時はなかなかkagglerと出会えませんでしたが、最近コミュニティにも参加するようになり、情報交換をしやすくなりました。そのコミュニティでは、分析系をメインに議論しています。最近はビッククエリが話題になりました。 kaggleコンペについての話題も上がることもあり、ちょうど先日、僕の成果報告を話してきました。

    ―――成果報告!すごい。kaggleはどこでも話題なんですね。改めて今までのkaggeコンペの成績を教えて下さい。

    IEEE-CIS Fraud Detectionで銀メダルをSeverstal: Steel Defect Detectionで銅メダルを獲得しました。

    IEEE-CIS Fraud Detectionはnotebookやディスカッションを読み、そこに新しい特徴量を追加して...と試行錯誤を繰り返しました。だいたい200時間くらい費やしたと思います。 次に参加したSeverstal: Steel Defect Detectionは自力で行った部分が増えたことに加えて、採用するディスカッションやnotebook選びが的確になりました。そのため短い時間で提出までおこなえました。

    ―――ディスカッションやnotebookから取り入れるものを選ぶのは勉強が必要ですね。 どういった勉強や練習をしたんですか。

    僕、機械学習を初めたのが今年(2019年)の1月からなんですよ。そこから4月までの4ヶ月はひたすら理論を勉強しました。機械学習の範囲は参考書等網羅し、統計検定2級も取得しました。 反省点は、理論だけやっていた期間が長すぎたことです。理論は広く浅く勉強して、早めに実装に入りメダルを狙いにいった方が良いと思います。

    分からないことがあったら、その都度理論に立ち返り勉強する方が効率良かったです。 教材はPyQ、AI Academy、Udemy、Courseraがおすすめです。

    kaggle Expert メダル ―――なるほど、ここからはkaggleでメダルを獲得するためのテクニックをいくつか質問させてください。参加コンペを選ぶ基準はありますか?

    参加人数が多く、取り掛かりやすいテーブルコンペを選んでいます。皆にとってやりやすいコンペは僕にとってもやりやすいはずなので。 Severstal: Steel Defect Detectionは画像認識系のコンペですが、時期的にちょうど参加しやすいコンペが無かったので挑戦してみました。

    ―――「挑戦してみました。」でメダルが獲れるって凄いですね...。最終提出までのスケジュールを教えて下さい。

    僕の場合は

    • 最後の1週間はブレンドとかスタッキングを行う
    • それまではEDAを丁寧に行う、テストデータを分布を見る
    • 並行してnotebookやディスカッションを追い続ける

    よく言われている手法ですが、これに尽きると思います。 焦って早くにブレンドやスタッキングをおこなっても、また最後には再度おこなう必要があり、効率が悪いので耐えます。

    ―――今回銀メダルを獲得したコンペ、IEEE-CIS Fraud Detectionを振り返ってください。

    このコンペは、世界有数の決済サービス会社であるVesta Corporationのデータを用いて開催された、カードの不正利用検出をおこなうコンペです。

    kaggleで差がつくポイントは主にこの3つだと思っていて、

    • 特徴量作り
    • モデル作り
    • バリデーション

    今回、僕はモデル作りが上手くいったと思います。 過学習を抑えるためにビギングしたモデルを入れ、バリデーションも工夫しました。 notebookやディスカッションを読んでいくと、多くの人がLightGBMを使っていたので、あまり使われていないモデルとブースティングしたことで、スコアの差をつけることができました。

    また、リーダーボードで最終提出の2、3日前にでスコアが高いモデルが投入されましたが、 それはいわゆる悪魔の実で、パブリックスコアは上がるがプライベートスコアは下がるものでした。 僕も一瞬飛びつきたくなりましたが、他の予測と相関をみて、安易に使うのは危険だと採用を回避しました。経験で危険を察知することも大事ですが、ディスカッションを読むとちゃんと書いてあるので、見逃さずに丁寧に読んでいくことも大事です。

    ―――全てのnotebook、ディスカッションを読んでいるんですか?

    金〜銅がついているnotebookは読んでいます。なにもついていないものは読んでいないです。

    notebookとディスカッションを読んで試すことで到達できるのは銀までかと思っています。金を獲るにはオリジナルでないと厳しいです。 IEEE-CIS Fraud Detectionで金を獲っているカーネルはユーザーまでも特定していました。1回不正を行ったユーザーは2回目も不正である、とかまで必要なようです。

    ―――山口くんが辛かったことやつまづいたことってありますか?

    ありますよ。笑 スコアが上がらないときはモチベーション下がり気味で、お腹痛いことも多々あります。 特に、Severstal: Steel Defect Detectionは上位6%から落ちて、なんとか上位10%に踏みとどまったので精神的に辛かったですね。 ただ、チームで参加したことが精神安定剤になりました。最後は個人プレイですが、仲間がいるっていいですね。

    ―――それはうちのインターン有利かも!今度、インターン生でsigenate賃料予測解説ディスカッションを行うんです。良さそうですか?

    え、良さそう。答え合わせはためになるし、新たな気付きがたくさん得られそうですね。 kaggleやsignateのイベントに参加して解説を聞くのも良いですよ。僕はkaggle Daysに参加予定です。

    ―――当社で実案件にも入ってくれている山口くん。そこで感じたkaggleと実案件との違いを教えて下さい。

    実案件では、お客様とのやり取りの中で目標(ゴール)が決まるので、目標がわかりにくい場面がありました。 あとはデータ収集と整形です。データ収集も僕たちで行い、画像認識の案件なので実際に写真を撮影しました。

    そして最大の違いは、モデルを1から構築することです。当たり前ですが...。 コンペは最初に他人の考えやモデルを参考にできますが、実案件は1から試行錯誤する根気のいる作業です。 でも、インターンでこういう経験ができることはとても良かったです。 今はWEBアプリ開発案件に携わっていて、その次はインフラにも挑戦したいです。広く経験を積めることは良いですね。

    ―――今日は貴重なお話をありがとうざいました!

    ありがとうございました〜。

    おわりに

    今回話してくれた内容はどのコンペでも転用できる内容でした。 今後も社内外で情報共有をし、さらなる成果を出せるようにしていきたいです。(週1ペースで勉強会をしています。)

    その他当社インターンでは論文のまとめ記事を書いたり、実際に実装したりしています。 随時紹介していくので是非ご覧ください!

    定期的にメルマガでも情報配信予定なので、問い合わせページに「メルマガ登録希望」とご連絡ください。


    Twitter・Facebookで定期的に情報発信しています!

    U-netとは

    U-netはFCN(fully convolution network)の1つであり、画像のセグメンテーション(物体がどこにあるか)を推定するためのネットワークです。

    生物医科学(biomedical)の画像のセグメンテーションを行うために2015年に発表されました。

    (論文URL : https://arxiv.org/abs/1505.04597)

    この記事では、まずU-netの中で行われている処理についてを1〜4章でまとめ、それらの組み合わせであるU-netをまとめたいと思います。

    目次

    1.Semantic segmentation

    2.fully convolution network(FCN)

    3.deconvolution

    4.skip-connection

    5.U-netの仕組み

    1.Semantic segmentation

    画像のピクセルそれぞれをクラス分類するタスクです。

    (MNISTなど)画像のクラス分類と異なるのは、画像全体をクラス分類しない点です。

    ピクセルごとのクラス分類ができると、以下のような出力を得られます。

    Alt text

    by https://devblogs.nvidia.com/image-segmentation-using-digits-5/

    2.fully convolution network(FCN)

    一般的なCNNでは畳み込み層と全結合層がありますが、FCNはこの全結合層を畳み込み層に置き換えたものです。

    全結合層を畳み込み層に置き換えることで、「物体がなにであるか」という出力から「物体がどこにあるか」という出力になります。

    Alt text

    by https://arxiv.org/abs/1411.4038

    画像上部分が画像全体のクラス分類で、画像下部分はヒートマップで猫がどのあたりにいるかネットワークが把握していることがわかります。

    3.deconvolusion

    1つ上の画像のヒートマップは入力画像に畳み込み処理を何度も行い、とても小さくなっています。

    これに1番上のような出力が得られるような処理を行なっていきます。

    このような処理を「up sampling」といい「deconvolution」が有名です。

    日本語だと「逆畳み込み」といい、畳み込み処理の逆処理だと思ってください。

    CNNで畳み込み層のフィルターの要素を学習していくように、逆畳み込み層のフィルターも同じように学習できます。

    4.skip-connection

    畳み込み処理を加えていくと、ネットワークが「物体が何であるか」についての特徴を抽出していきますが、poolingの影響で「物体がどこにあるか」についての特徴は失われていきます。

    畳み込み処理を行なった後で、逆畳み込みを行なっても物体の位置情報は満足に復元できない場合があります。

    それを解決するのがskip-connectionです。

    これは畳み込みを行なった後、特徴マップを保持しておいて、後で逆畳み込みをする画像に足し合わせる処理です。

    上で提示した車の画像に用いると以下のようになります。

    Alt text

    by : https://devblogs.nvidia.com/image-segmentation-using-digits-5/

    推定する領域(色のついた部分)がシャープになっていることがわかります。

    5.U-netの仕組み

    U-netには上でまとめた

    ・fully convolution network(FCN)

    ・deconvolution

    ・skip-connection

    が使われています。

    構造は以下のようになっています。

    Alt text

    by : https://arxiv.org/abs/1505.04597

    左右対象でアルファベットの「U」に似ていることから、「U-net」と呼ばれているそうです。

    大雑把に左側の処理では画像の畳み込みを行い、右側では逆畳み込みをskip-connection(中央矢印)からの情報を参考に行なっているイメージです。

    まとめ

    U-netの内部で行われる処理について、ざっくりと説明しました。

    まとめると・・・

    ・画像全体のクラス分類(MNISTなど)からFCNとdeconvolutionを使い、物体の位置情報を出力できるようになった

    ・skip-connectionを用いて畳み込みによって失われる位置情報を保持しておくと、より精密な領域を出力できる

    ・U-netは上記2つを上手く組み合わせている

    こちらの記事ではPythonで実装を行い、学習している様子を紹介しています。


    定期的にメルマガでも情報配信をしています。
    ご希望の方は問い合わせページに「メルマガ登録希望」とご連絡ください。


    Twitter・Facebookで定期的に情報発信しています!

    現在、多くの業界でAI・機械学習の重要性が増加しています。

    背景のひとつに労働人口の減少による人手不足があります。帝国データバンクの調査によると、「正社員不足」状態の企業は全体の50.3%を占めています。
    人手不足も解消のためには、業務自体を削減すること、または業務を人から代替する必要があります。

    ここでは人間の目の代わりとなり、判断をおこなう機械学習である画像認識技術を紹介します。

    スタンフォード大の研究者らがAI関連の研究開発や経済、教育、各国の動向など多様なデータをまとめた「AI Index」の2019年版では、ここ1年半でクラウドインフラで大規模な画像分類システムを学習させるのに必要な時間が、2017年10月の約3時間から2019年7月の約88秒に短縮され、同様に学習させるコストも下がったと報告されています。 時間・マシンスペックの制限が徐々になくなることで機械学習の画像認識分野のビジネス活用はますます注目されていきます。


    目次


    機械学習での画像認識とは

    画像からパターンを認識し、何が写っているのか判断することが画像認識です。光景の知覚・認識をコンピュータがおこなうことで、人間がおこなうはずであった画像の判別や物体の検出などを自動化することができます。

    例えば、動物が写っている写真をその動物ごとに分類することもできますし、製造業でのシーンでは正解とは違うもの(不良品)を見つけることもできます。本記事の最後でも紹介しますが、画像認識は様々な分野でも応用できることと、ディープラーニングの登場で精度が向上したこと、高性能なモデルの開発で学習(構築)時間を削減したことから急速にビジネス活用が進みました。

    元々はロボットにおいて外界にある物体検出の手段として考えられた画像認識技術でしたが、1970年代における人間の知識をプログラムとして直接書く方式から、画像の形、色、動きなどの幾何学的な特徴を認識する方法にシフトして大きな進歩を遂げています。

    技術の発展により、画像認識はAI(人工知能)が活用される一分野として現在も急速に発展しています。それでは画像から物体を検出しそれが何であるか判定する仕組みをご紹介します。


    画像認識の仕組み

    一般的な画像認識のプロセスをご紹介します。

    Image recognition


    画像認識のモデルの構築

    画像認識をおこなう際、「画像のどこに何が写っているのか」を認識するためのモデルが必要です。機械学習を用いて学習データからこのような検出・判別するモデルを構築します。モデルをあらかじめ構築しておいて、認識する画像に対して判別結果を出力する仕組みを作ります。


    特徴抽出

    モデルで実際に画像を判別する際には、画像の中から 特徴抽出する必要があります。画像の局所的な特徴の抽出や画像に含まれるノイズの除去などを、画像処理の手法や統計的な手法によっておこないます。判別に必要のない情報を除いた上で、判別結果を計算することができます。


    プーリング

    抽出した特徴はいくつかの一定の大きさの領域にまとめた後、プーリング と呼ばれる処理でまとめられた領域を1つの値で代表します。画像の空間的な情報を削除し、判別に必要な情報のみを残します。


    分類

    特徴抽出・プーリングの実施後には、事前に用意していたモデルによって画像を判別します。

    また、ディープラーニングに代表される学習手法は特徴抽出・プーリングの処理をひとまとめにして、それらの手順をさらに繰り返すことで認識精度を高めています。


    画像認識技術の4つの活用事例

    文字認識

    画像認識の代表的な活用事例です。文字の書かれた画像から文字の領域を抽出し、どの文字か推測します。この技術で文章読み取りが自動になり、転記作業の負担を軽減します。

    Image recognition

    手書き書類・メモを文字起こししていませんか?社内は紙の書類で溢れていませんか?

    業務を効率化し生産性を向上するためには、紙の情報ををデータ化することが不可欠です。顧客データから自社製品が強い顧客像を割り出したり、売上データから来期の売上予測をしたりと、利益につながるデータの二次活用は勿論、紙の保管場所を削減します。

    画像に写る物体を理解し、それが何かというラベル(正解)を割り当てる過程を 物体認識 と呼びます。


    医療画像認識による診断支援

    医療分野においても画像認識は活用されています。医師が医療画像を見ることで病変を判断する過程を、コンピュータである程度自動化します。最近では医師でさえ見抜けない腫瘍の変異をコンピュータが画像の中の領域を抽出し、判別する事例もあります。これにより、病変時は発見までの時間短縮、診断ミスを低減します。

    医療画像での変異発見は 物体検出 と呼ばれ、画像の中の変異の領域を抽出することを セマンティックセグメンテーションと呼びます。


    インターネット上の画像検索

    インターネット上で画像認識を身近に感じるのは、この 画像検索 だと思います。入力された文字列あるいは画像と類似する画像を検索する技術であり、データベースに保存された画像から似たような画像を検索します。

    Image recognition

    画像検索は具体的な判別を行う インスタンス認識 によってラベル付けをします。あらかじめラベル付けしておくことで瞬時に内容や見た目の近い画像を見つける類似画像検索が可能です。


    自動車の自動運転

    今後、さらに発展が予測される画像認識の活用分野のひとつとして、自動車の自動運転が挙げられます。自動車に搭載されたカメラによって外部の状況を判断し、自動車に運転をさせる技術です。カメラから受け取った画像を認識させることで、人間が難しい操作をすることなく搭載されたコンピュータが運転することが可能になります。

    自動運転では静止した画像だけでなく、その時系列情報も必要です。この時系列情報を利用した画像認識を 動画像認識と呼びます。


    まとめ

    今回はこれらのことをご紹介しました。

    • 画像認識とは何か
    • 画像認識技術の活用事例
    • 画像認識の仕組み


    画像認識は2020年東京オリンピックで採用されたりと、今後浸透していく機械学習の技術です。応用方法の豊富さと進歩の速さがあいまって、「 AI搭載家電」など、急激に導入検討が進んでいます。


    当社はAI・機械学習を活用したソリューションをご提案しています。

    • 自社にあるデータを2次活用したい
    • 画像データを活用したAIを作成したい
    • 既にAIシステムを利用しているが思うような効果が得られていない
    • 機械学習ではなにが出来るのか興味がある


    このようなご相談は画面右上の[お問い合わせ]までご相談ください。


    アクセルユニバースの紹介

    私達はビジョンに『社会生活を豊かにさせるサービスを提供する。』ことを掲げ、このビジョンを通して世界を笑顔にしようと機械学習・深層学習を提案しています。

    • ミッション(存在意義)
      私達は、情報通信技術を使って万物(全ての社会、生物)の暮らしをよりよくすることに貢献し、 それを加速させることを使命とします。

    • ビジョン(目標とする姿)
      社会生活を豊かにさせるサービスを提供する。

    • バリュー(行動規範)

      1. 変化を求め、変化を好み、変化する
      2. 自分の高みを目指してどんどん挑戦する
      3. お客様と一蓮托生でプロジェクトを進める


    acceluniverse


    参考文献

    原田達也(2018) 『画像認識』 講談社

    平井有三(2018) 『はじめてのパターン認識』 森北出版


    Twitter・Facebookで定期的に情報発信しています!

    このアーカイブについて

    このページには、2019年11月に書かれた記事が新しい順に公開されています。

    前のアーカイブは2019年10月です。

    次のアーカイブは2019年12月です。

    最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。