Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Mathematicaで
機械学習してみた
全脳アーキテクチャ若手の会
第12回勉強会 カジュアルトーク
社会人支部 岩淵 勇樹
自己紹介
岩淵 勇樹(物智、butchi_y)
 2012年3月 博士(工学)
◦ 主に離散数学、音楽情報に従事
 2012年4月〜 面白法人カヤック
(Webエンジニア)
自己紹介
岩淵 勇樹(物智、butchi_y)
 フラクタル好き
 数学好き、だけど統計は苦手
 Mathematica愛好者
(「Mathematica Advent Calendar 2015」を作るなど貢献)
Mathematicaとは?
 数式処理システム
 研究者向けの一方、教育にも注力
 製品としては高価(万単位)だが
Raspberry Piには無償で同梱
Mathematicaでできること
 グラフィカルなデータ解析
(変数を微調整しながらプロット等)
 様々なフォーマットでのデータ入出力
 Webとの通信
 デバイス連携(Raspberry Pi等)
Mathematicaの機械学習用関
数
 Classify
 Predict
: 分類器をつくる関数
: 分類ではなく具体値を推測
出典: http://library.wolfram.com/infocenter/Conferences...
つくってみた
 PCに内蔵のフォント文字を学習させ、
未知のフォントの文字を認識する
プログラム
 Classifyで分類をしてみるテスト
 (動機: 大量の教師ありデータを準備するのが楽)
概略
1. ASCII文字一覧取得
2. Macの内蔵フォント一覧をWeb上の
資料からスクレイピング
3. 文字それぞれをキーにしたレンダリ
ング文字画像を連想配列化
4. その連想配列を元にClassify
5. 内蔵でないフォントでの認識...
ASCII文字一覧取得
 asciiLi = FromCharacterCode /@ Range[32, 126]
フォント一覧取得
 スクレイピングしたXMLデータは
Mathematica独自の関数形式に変換さ
れる
※フォント一覧データはあきら☆M氏のサイトから借用
フォント一覧取得
 スクレイピングによるフォント名抽出
(XMLパターンマッチと正規表現等)
 506フォントが抽出される
(有効なフォントはもっと少ない)
レンダリング文字画像取得
 Mac RetinaだからかRasterize関数実行に
やたら時間がかかる
分類器を作る
Association[ Table[alphabet ->
getGrapicLi[alphabet], {alphabet,
asciiLi}]]
recognize=Classify[assoc]
← 学習に必要な記述はこれ...
認識してみる
先ほど作ったrecognize関数(分類器)
ちゃんと認識されている
テキストを画像化するために作った関数
フォント名
未知のフォントに適用してみる
未知のフォントに適用してみる
認識表
 デフォルトのメソッド
(NearestNeighbors)ではまずまず
Methodで比較
 ニューラルネットワークが一番よさげ
(処理内容は解らないけれど)
ニューラルネットワーク最近傍 SVM
手書き風フォントでテスト
 怨霊フォントだとさすがにつらい
いったんまとめ
 Mathematicaで機械学習は可能
 統計などの知識がなくても関数一発で
分類器を作れる
 分類方法も自動で選ばれるほか、明示
的な指定も可能
その他できること
Mathematicaを使って
重要な疑問
 で、Mathematicaでディープラーニン
グできるの?
→そんな便利な関数ないです
実はWolfram社自体、そんなディープ
ラーニング押ししてない
でも、関数は充実しているので、
うまく実装さえすれば…
統計
 FindDistribution
 FindFormula
ビッグデータ
 SocialMediaData (Facebook, Twitterなど)
コンピュータビジョン
 ImageCorrespondingPoints
 EdgeDetect
組み込み済分類器
 TextRecognize
 ImageIdentify
 FindFaces
Image Identification Project
 https://www.imageidentify.com/
Webへの展開
 APIFunction
◦ Wolfram言語プログラムのAPI化
 CloudDeploy
◦ APIのデプロイ
◦ wolframcloud.com配下の
ランダムURLで即公開
 CreateDatabin
◦ デ...
Wolfram|Alpha
 https://www.wolframalpha.com/
まとめ
 Mathematicaでの機械学習は超簡単
 ディープラーニングは頑張り必要
 知識データベースとしての土壌は充分
Upcoming SlideShare
Loading in …5
×

Mathematicaで 機械学習してみた

8,971 views

Published on

全脳アーキテクチャ若手の会
2016-02-07 第12回 カジュアルトークでの発表スライドです。
Mathematicaでフォント文字認識をつくってみたという話と、
Mathematicaの可能性について触れています。

Published in: Engineering
  • Be the first to comment

Mathematicaで 機械学習してみた

  1. 1. Mathematicaで 機械学習してみた 全脳アーキテクチャ若手の会 第12回勉強会 カジュアルトーク 社会人支部 岩淵 勇樹
  2. 2. 自己紹介 岩淵 勇樹(物智、butchi_y)  2012年3月 博士(工学) ◦ 主に離散数学、音楽情報に従事  2012年4月〜 面白法人カヤック (Webエンジニア)
  3. 3. 自己紹介 岩淵 勇樹(物智、butchi_y)  フラクタル好き  数学好き、だけど統計は苦手  Mathematica愛好者 (「Mathematica Advent Calendar 2015」を作るなど貢献)
  4. 4. Mathematicaとは?  数式処理システム  研究者向けの一方、教育にも注力  製品としては高価(万単位)だが Raspberry Piには無償で同梱
  5. 5. Mathematicaでできること  グラフィカルなデータ解析 (変数を微調整しながらプロット等)  様々なフォーマットでのデータ入出力  Webとの通信  デバイス連携(Raspberry Pi等)
  6. 6. Mathematicaの機械学習用関 数  Classify  Predict : 分類器をつくる関数 : 分類ではなく具体値を推測 出典: http://library.wolfram.com/infocenter/Conferences/9280/
  7. 7. つくってみた  PCに内蔵のフォント文字を学習させ、 未知のフォントの文字を認識する プログラム  Classifyで分類をしてみるテスト  (動機: 大量の教師ありデータを準備するのが楽)
  8. 8. 概略 1. ASCII文字一覧取得 2. Macの内蔵フォント一覧をWeb上の 資料からスクレイピング 3. 文字それぞれをキーにしたレンダリ ング文字画像を連想配列化 4. その連想配列を元にClassify 5. 内蔵でないフォントでの認識率の表 をプロット
  9. 9. ASCII文字一覧取得  asciiLi = FromCharacterCode /@ Range[32, 126]
  10. 10. フォント一覧取得  スクレイピングしたXMLデータは Mathematica独自の関数形式に変換さ れる ※フォント一覧データはあきら☆M氏のサイトから借用
  11. 11. フォント一覧取得  スクレイピングによるフォント名抽出 (XMLパターンマッチと正規表現等)  506フォントが抽出される (有効なフォントはもっと少ない)
  12. 12. レンダリング文字画像取得  Mac RetinaだからかRasterize関数実行に やたら時間がかかる
  13. 13. 分類器を作る Association[ Table[alphabet -> getGrapicLi[alphabet], {alphabet, asciiLi}]] recognize=Classify[assoc] ← 学習に必要な記述はこれだけ 分類メソッドはオプションで選べる (例: Classify[assoc, Method -> “NeuralNetwork”] ) "LogisticRegression” 特徴の線形結合からの確率を使って分類する "Markov" 特徴文字列のMarkovモデルを使って分類する "NaiveBayes" 特徴の確率的独立を仮定して分類する "NearestNeighbors" 最近傍の例を使って分類する "NeuralNetwork" 人口の神経回路網を使って分類する "RandomForest” BreimanおよびCutlerの決定木の集合を使って分類する "SupportVectorMachine" サポートベクトルマシンを使って分類する
  14. 14. 認識してみる 先ほど作ったrecognize関数(分類器) ちゃんと認識されている テキストを画像化するために作った関数 フォント名
  15. 15. 未知のフォントに適用してみる
  16. 16. 未知のフォントに適用してみる
  17. 17. 認識表  デフォルトのメソッド (NearestNeighbors)ではまずまず
  18. 18. Methodで比較  ニューラルネットワークが一番よさげ (処理内容は解らないけれど) ニューラルネットワーク最近傍 SVM
  19. 19. 手書き風フォントでテスト  怨霊フォントだとさすがにつらい
  20. 20. いったんまとめ  Mathematicaで機械学習は可能  統計などの知識がなくても関数一発で 分類器を作れる  分類方法も自動で選ばれるほか、明示 的な指定も可能
  21. 21. その他できること Mathematicaを使って
  22. 22. 重要な疑問  で、Mathematicaでディープラーニン グできるの? →そんな便利な関数ないです 実はWolfram社自体、そんなディープ ラーニング押ししてない でも、関数は充実しているので、 うまく実装さえすれば…
  23. 23. 統計  FindDistribution  FindFormula
  24. 24. ビッグデータ  SocialMediaData (Facebook, Twitterなど)
  25. 25. コンピュータビジョン  ImageCorrespondingPoints  EdgeDetect
  26. 26. 組み込み済分類器  TextRecognize  ImageIdentify  FindFaces
  27. 27. Image Identification Project  https://www.imageidentify.com/
  28. 28. Webへの展開  APIFunction ◦ Wolfram言語プログラムのAPI化  CloudDeploy ◦ APIのデプロイ ◦ wolframcloud.com配下の ランダムURLで即公開  CreateDatabin ◦ データベース
  29. 29. Wolfram|Alpha  https://www.wolframalpha.com/
  30. 30. まとめ  Mathematicaでの機械学習は超簡単  ディープラーニングは頑張り必要  知識データベースとしての土壌は充分

×