平成27年度 卒業研究 - 202.231.11.56202.231.11.56/~atsumu/docs/study.pdf · 平成27年度...

38
平成27年度 卒業研究 GPU によって加速化された Deep Learning による 光学文字認識システムの開発 旭川工業高等専門学校 システム制御情報工学科 小野 敦夢 指導教員:森川 一

Upload: others

Post on 17-Oct-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 平成27年度 卒業研究 - 202.231.11.56202.231.11.56/~ATSUMU/docs/study.pdf · 平成27年度 卒業研究 GPUによって加速化された Deep Learningによる 光学文字認識システムの開発

平成27年度

卒業研究

GPU によって加速化された

DeepLearning による

光学文字認識システムの開発

旭川工業高等専門学校

システム制御情報工学科

小野敦夢

指導教員:森川一

Page 2: 平成27年度 卒業研究 - 202.231.11.56202.231.11.56/~ATSUMU/docs/study.pdf · 平成27年度 卒業研究 GPUによって加速化された Deep Learningによる 光学文字認識システムの開発

目次

第 1 章 序論 ........................................................................................................................... 1

第 2 章 ニューラルネットワーク(Neural Network) ............................................................. 3 2.1 歴史背景 ............................................................................................................... 3 2.2 人工ニューロン(Artificial Neuron) ...................................................................... 3 2.3 単純パーセプトロン(Simple Perceptron) ............................................................ 5

2.3.1 単純パーセプトロンの表現能力の限界 ......................................................... 7 2.3.2 線形分離可能性 ............................................................................................. 7

2.4 多層パーセプトロン(Multi-Layer Perceptron) ................................................... 7 2.5 多出力パーセプトロン(Multi-Output Perceptron) ............................................. 8

第 3 章 深層学習(Deep Learning) ......................................................................................... 9 3.1 機械学習(Machine Learning) .............................................................................. 9 3.2 最急降下法(Steepest Descent Method) ............................................................... 9

3.2.1 シグモイドニューロン ................................................................................... 9 3.2.2 単純パーセプトロンの訓練 ......................................................................... 10 3.2.3 多層パーセプトロンの出力誤差 ................................................................. 12

3.3 誤差逆伝播法(Back Propagation) ...................................................................... 12 3.3.1 隠れ層の出力誤差 δの導出 .......................................................................... 12 3.3.2 誤差逆伝播法の疑似コード ......................................................................... 13

3.4 単純パーセプトロンによる OR 回路学習 ........................................................... 14 3.5 多層パーセプトロンによる XOR 回路学習 ........................................................ 14

第 4 章 光学文字認識(OCR)システムの開発 ....................................................................... 16 4.1 開発方針及び環境 ............................................................................................... 16 4.2 演算性能の改良 .................................................................................................. 17

4.2.1 コスト関数見直しによる収束性能の改良 ................................................... 17 4.2.2 GPGPU による並列化 ................................................................................. 20 4.2.3 並列化可能の証明 ........................................................................................ 20 4.2.4 C++ AMP ................................................................................................... 21

4.3 並列化された Deep Learning フローチャート .................................................. 21 4.3.1 ネットワークの計算フローチャート(並列化) .............................................. 21 4.3.2 誤差逆伝播法フローチャート(並列化) .................................................... 22

4.4 OCR システムクラス図 ...................................................................................... 23

第 5 章 実験結果及び考察 .................................................................................................... 24 5.1 単純パーセプトロン上に構築された OR 回路 .................................................... 24

Page 3: 平成27年度 卒業研究 - 202.231.11.56202.231.11.56/~ATSUMU/docs/study.pdf · 平成27年度 卒業研究 GPUによって加速化された Deep Learningによる 光学文字認識システムの開発

5.1.1 重み・バイアスのパラメータ ...................................................................... 24 5.1.2 3次元グラフ ............................................................................................... 24

5.2 多層パーセプトロン上に構築された XOR 回路 ................................................. 25 5.2.1 重み・バイアスのパラメータ ...................................................................... 25 5.2.2 3次元グラフ ............................................................................................... 25

5.3 OCR システムの構築 .......................................................................................... 26 5.3.1 学習率パラメータの収束性能への影響 ....................................................... 26 5.3.2 コスト関数変更における収束性能への影響 ................................................ 26 5.3.3 GPGPU における演算速度への影響 ........................................................... 27 5.3.4 構築された OCR システムの手書き文字認識精度計測 ............................... 28

5.4 考察 .................................................................................................................... 30

第 6 章 結論 ......................................................................................................................... 32 参考文献

研究業績

謝辞

付録

Page 4: 平成27年度 卒業研究 - 202.231.11.56202.231.11.56/~ATSUMU/docs/study.pdf · 平成27年度 卒業研究 GPUによって加速化された Deep Learningによる 光学文字認識システムの開発

-1- 1

第 1 章 序論

書類の電子化は近年の重要な課題である.ここでの電子化はスキャニングを用いた「画

像化」ではなく,アナログな書類から文字データを含む文書ファイル,すなわちパソコン

が認識可能な「エンコード文字列」への変換を意味する.ビッグデータという言葉が普及

しているように,今日では検索エンジンのようなツールを用いて膨大な情報の海から目的

の情報を探すのは,非常に一般的である.しかし,電子化されていない書類では,コンピ

ュータは当然その内容を認識しておらず(コンピュータが認識しているのは色情報のみで

ある)その手法は使えない.そのようなデータは,例えどこかのストレージに保存されて

いるとしても,インターネットリソースとしては活用しにくい.また,文書編集ソフトウ

ェア等の恩恵も得られず,デジタル化のメリットを十分活用できない.したがって,イン

ターネットやコンピュータという革新的な技術をより便利にするためにも,文書ならエン

コード文字列として電子化する精度の高い光学文字認識システムの開発は,情報化社会の

最中にある人類にとって非常に重要である.

その恩恵を意識する機会は少ないが,人間の脳には数億年の進化によって視覚世界の理

解に長けたスーパーコンピュータが内蔵されている.文字の識別がどれだけ高度な技術で

あるかを理解している人は少ないであろう.しかし,ひとたび光学文字認識と呼ばれるシ

ステムをプログラムで表現しようとしたとき,その困難さが明らかとなる.文字を認識す

るためのロジックを記述しようとすると,膨大な量の例外や落とし穴の網羅が非常に困難

な事実に気づくはずである.明示的プログラミング手法と呼ばれるこの方法は,規格化さ

れた文字に関しては高速な実行速度と安定した精度を誇るが,フォント変更やノイズ等に

は弱く,手書き文字となると認識は非常に困難になる.オンライン認識という,入力にお

けるストロークベクトルを利用し精度を上げる試み[1]もあるようではあるが,書類の電子

化の分野においては入力時のベクトル情報を得られない.光学文字認識における現行の主

流である明示的プログラミング手法の抱えるこの問題をアルゴリズムの観点から解決する

のは難しい.したがって,本研究では違う角度から文字認識システムの構築を試みる.そ

のアプローチは,生物の脳の模倣である.

本研究では,「コンピュータ自身が文字認識のロジックを学習する」という性質を Deep

Learning と呼ばれる技術を用いて実装する.また,本来ならばスーパーコンピュータや

並列コンピューティング等で演算される膨大な量の計算を,家庭用 PC でも可能にするた

めの,収束・演算性能向上に関する手法についても述べる.

本論文の構成は以下の通りである.

第1章では,本研究の背景と先行研究について述べる.

第2章では,本システムの基礎理論となるニューラルネットワークについて述べる.

第3章では,本システムのニューラルネットワークのパラメータ決定手法である深層

学習(DeepLearning)について述べる.

Page 5: 平成27年度 卒業研究 - 202.231.11.56202.231.11.56/~ATSUMU/docs/study.pdf · 平成27年度 卒業研究 GPUによって加速化された Deep Learningによる 光学文字認識システムの開発

-2- 2

第4章では,本研究で開発するシステムの概要と実装方法について述べる.

第5章では,ニューラルネットワーク上に構成されたシステムの特性に関する実験結

果とその考察を示す.

第6章では,本研究の結論を述べる.

Page 6: 平成27年度 卒業研究 - 202.231.11.56202.231.11.56/~ATSUMU/docs/study.pdf · 平成27年度 卒業研究 GPUによって加速化された Deep Learningによる 光学文字認識システムの開発

- 3 -

第 2 章 ニューラルネットワーク(Neural Network)

本研究ではニューラルネットワークと呼ばれる数学モデルを用いたシステムの構築を目

指している.本章では,その基礎理論について述べる.

2.1 歴史背景

人工ニューラルネットワーク(以降単に「ニューラルネットワーク」という)は,生物

の脳に着想を得た数学モデルである.ヒトは丸という形からボールを連想するように,生

物は「想起」と呼ばれる複雑な処理能力を持つ.これは通常の電子計算機上では実現が難

しい能力である.電子計算機では,このような動作はテーブル・ルックアップ式(キーと

データのパターン対のテーブルの参照)での実装が一般的だが,あまり実際的ではない.

想起は雑音,情報の欠落が生じても正しく処理されるべきであるし,そもそも生物の脳は

電子計算機のようにメモリと CPU が分離しているわけでもない.

ニューラルネットワークは,このような連想記憶をソフトウェア,あるいはハードウェ

ア上で実装するにあたって有効だと考えられており,画像・音声認識,自然言語処理等の

分野において大きな成果を挙げている.

2.2 人工ニューロン(Artificial Neuron)

ヒトの脳は,1011個にも及ぶ生体ニューロン(Neuron)と呼ばれる細胞が伝送路を介して

相互結合されており,樹状突起(Dendrite)と呼ばれる入力アンテナで電気化学的な信号を

受信し,シナプス(Synapse)で結合されている他のニューロンへと信号を伝送している

(図2-1).

図 2-1 生体ニューロン

Page 7: 平成27年度 卒業研究 - 202.231.11.56202.231.11.56/~ATSUMU/docs/study.pdf · 平成27年度 卒業研究 GPUによって加速化された Deep Learningによる 光学文字認識システムの開発

- 4 -

生体ニューロンの働きは,以下のようなプロセスをたどる.

1. 樹状突起が受け取る入力信号が,細胞を興奮,あるいは逆に興奮をおさえるよう

に入力される.

2. 全ての入力信号が累積される.

3. 累積された入力信号による刺激が閾値を超えた時「発火」する.

4. 発火したニューロンがシナプスを通じて他のニューロンの樹状突起に信号を出力

する.

ニューラルネットワークは,このモデルを取り入れた人工ニューロンによって構成され

た数学モデルである.人工ニューロンには他のニューロンの出力からなる入力ベクトル X

が与えられる.各入力には,生体ニューロンのシナプス強度に相当する重みベクトル W

が乗じられる.その重み付き入力の総和とバイアスの和がニューロンの興奮度であり,閾

値を超えたとき発火し値を出力する(図2-2).この興奮度を z として,z はベクトルの内

積で式(2.1)に示すように簡潔に表現できる.

𝑧 = 𝑿・𝑾+ 𝑏 (2.1)

図2-2人工ニューロンの発火

また,ニューロンの重みつき入力は活性化関数 F によって処理され,ニューロンの活

性が決定される.先ほどの人工ニューロンの定義から,活性化関数は単純な閾値関数とな

る.よって,ニューロンの活性 a は式(2.2)のように表せる.

𝑎 = 𝑖𝑓𝑧 < 𝑡ℎ𝑟𝑒𝑠ℎ𝑜𝑙𝑑0𝑜𝑡ℎ𝑒𝑟𝑤𝑖𝑠𝑒1

(2.2)

もちろんこれは生体ニューロンのほんの一部のはたらきに過ぎず,生物学的な特徴の多

くを無視していて実際の脳のシステムとは希薄な関係しか持たない.それにも拘らず,ニ

Page 8: 平成27年度 卒業研究 - 202.231.11.56202.231.11.56/~ATSUMU/docs/study.pdf · 平成27年度 卒業研究 GPUによって加速化された Deep Learningによる 光学文字認識システムの開発

- 5 -

ューラルネットワークは生体システムによく似た特性を示す.その理由は明らかになって

いないが,この人工ニューロンの単純なモデルが生体システムの本質的な性質をとらえて

いると考えられている.

2.3 単純パーセプトロン(Simple Perceptron)

ニューラルネットワークの例として最も単純なモデルを挙げる.

信号の入力のみを司る特殊なユニットの層と,1つの出力ユニットで構成された信号が

一方通行のフィードフォワード型ネットワークが実現されるネットワークの一つとして,

単純パーセプトロンがある.(図2-3)

図 2-3 単純パーセプトロン

入力層のユニットの数を n, 入力を x,各ユニットから出力ユニットへの重みを w,

出力ユニットのバイアスを bo としたとき,出力ユニットの興奮度 zo は式(2.3)のように

なる.

𝑧A = 𝐹 (𝑥E𝑤E) + 𝑏A

G

E

(2.3)

ユニットの活性は, 次式で表される.

𝑎A =𝑖𝑓𝑧A < 𝑡ℎ𝑟𝑒𝑠ℎ𝑜𝑙𝑑0𝑜𝑡ℎ𝑒𝑟𝑤𝑖𝑠𝑒1

(2.4)

このネットワークがどのような意味を持つかについて考察してみる.問題を単純化

するために,入力ユニットが2つの単純パーセプトロンを考える(図 2-4).

Page 9: 平成27年度 卒業研究 - 202.231.11.56202.231.11.56/~ATSUMU/docs/study.pdf · 平成27年度 卒業研究 GPUによって加速化された Deep Learningによる 光学文字認識システムの開発

- 6 -

図 2-4 入力層が2つのユニットの単純パーセプトロン

このネットワークは2変数関数を表しており,入力 x1,x2を0,1を元とする二元体 F2

へと移す写像である.すなわち,閾値 threshold において0,1の値に写される入力平面上

で,重み w とバイアス boは入力平面を線形に分割する直線のパラメータとなる(バイアス

は切片項のパラメータとなる)(図2-5).

図 2-5 2 入力単純パーセプトロンの出力

図2-5において描かれた直線 L が入力平面上の閾値であり,入力が連続値であると仮定

すると,平面上の任意点 P は𝐿 ≤ 𝑃のとき1,𝐿 > 𝑃のとき0に写される.ここで,図2-5に

示したように入力を1,0のみのベクトルに限定したとき,4つの点を(1,1),(0,1),(1,0)と

(0,0)に分離するような直線のパラメータ w,bo を考える.このようなネットワークは,論

理関数 OR を表現する.同様に,直線のパラメータを調整すると NAND も表現できる.つま

り,NAND ゲートを構成できる以上,単層パーセプトロンは万能な論理関数になる.

もっとも,これは大して驚きのある結果ではない.車輪の再発明以上でも以下でもなく,

Page 10: 平成27年度 卒業研究 - 202.231.11.56202.231.11.56/~ATSUMU/docs/study.pdf · 平成27年度 卒業研究 GPUによって加速化された Deep Learningによる 光学文字認識システムの開発

- 7 -

今更 NAND ゲートの亜種を構築したところでそれ自体に意味はない.このニューラルネッ

トワークの注目すべき点は,NAND ゲートの新しい表現方法ではなく,任意のパラメータ

を与えると様々な関数を作れるその表現能力.そして,後述の「機械学習」と呼ばれる技

術を用いて,そのパラメータを自動で設定できるという点である.

2.3.1 単純パーセプトロンの表現能力の限界

2入力単純パーセプトロンは,入力平面上を分割する直線を描くと述べた.次に,論理

関数 XOR を考える.論理関数 XOR を表現するためには4つの点を(0,0),(1,0)と

(1,0),(0,1)に分離するような直線を描かなくてはならないが,そのような直線は存在し

ない.単純パーセプトロンは,幾何学的に分離できないような写像関係を構築できない.

2.3.2 線形分離可能性

入力空間の点の集合が幾何学的に分離できるかどうかを線形分離可能性といい,単純パ

ーセプトロンの性能を制限している.3入力の場合でも,3次元入力空間の点を分離する

ような平面を描ければならない.4次元以上の場合には,視覚化できないが,n 次元超平

面と呼ばれる平面で分離する必要がある.単純パーセプトロンが与えられた問題を解ける

か否かは,前述の XOR のように線形分離可能であるかどうかを知る必要がある.しかし,

その方法は簡単ではなく,単純パーセプトロンが解ける問題は単純なケースに限られてい

る.

2.4 多層パーセプトロン(Multi-Layer Perceptron)

線形分離可能性によって制限された単層パーセプトロンの性能は,中間層を加えるネッ

トワークの多層化によって改善される.このようなネットワークを多層パーセプトロンと

呼ぶ(図2-6).

図 2-6 多層パーセプトロン

入力層と出力層の間の層を隠れ層と呼び,その階層数に制限はない.多層パーセプトロ

Page 11: 平成27年度 卒業研究 - 202.231.11.56202.231.11.56/~ATSUMU/docs/study.pdf · 平成27年度 卒業研究 GPUによって加速化された Deep Learningによる 光学文字認識システムの開発

- 8 -

ンは,任意の凸型領域で入力空間上の点を分離できる.前述の XOR 論理関数も,隠れ層を

一層加えると V 字型領域を形成し XOR ネットワークを構築できる.このとき,任意の層 L

における重みベクトルは,接続されるユニットごとに重みが定義されるので,次式に示す

二次元ベクトルで表せる.

𝑊(O) =𝑤PP(O) ⋯ 𝑤PR

(O)

⋮ ⋱ ⋮𝑤EP(O) ⋯ 𝑤ER

(O) (2.5)

𝑤ER(O)

は,L 層の j 番目のユニットから,L+1層の k 番目のユニットへの重みを示す.ネ

ットワークの出力の計算方法は式(2.1)〜(2.4)を層について一般化するだけでよい.ただ

し,多層パーセプトロンはその性能が認められていながら,そのパラメータの有力な決定

方法が存在しなかったために,一時は下火になりかけた.だが,「誤差逆伝播法」と呼ば

れる方法が考え出されてから,このネットワークは再度注目を浴び,現在も多くの研究者

の興味の対象となっている.

2.5 多出力パーセプトロン(Multi-Output Perceptron)

出力ユニットを n 個に拡張したパーセプトロンを多出力パーセプトロンと呼ぶ.出力は

ベクトルとなり,ベクトルとベクトルの写像を構築する(図2-7).

図2-7ベクトルの写像

Page 12: 平成27年度 卒業研究 - 202.231.11.56202.231.11.56/~ATSUMU/docs/study.pdf · 平成27年度 卒業研究 GPUによって加速化された Deep Learningによる 光学文字認識システムの開発

- 9 -

第 3 章 深層学習(Deep Learning)

多層パーセプトロンのような深層ニューラルネットワークの機械学習を DeepLearning

という.第2章ではパーセプトロンの性能について述べたが,実際のパラメータの決定方

法には触れなかった.本章では,実際に入力ベクトルと出力ベクトルの対からパラメータ

を決定する方法について言及する.

3.1 機械学習(Machine Learning)

ニューラルネットネットワークは,機械学習によって訓練されパラメータが決定される.

機械学習には教師あり学習と教師なし学習の2種類がある.教師あり学習は,与えられた

データに対し目標となる出力が存在し,その目標に近づくようにパラメータを調整するよ

うな学習である.例えば,線形回帰(LinerRegression)は,(x,y)の組のデータが与えら

れ,直線がその全ての点を通るようにパラメータが調整される.このとき,直線の近似度

はどれだけ点のデータセットが直線から離れているかで決まるため,教師あり学習と言え

る.一方,与えられたデータ集合を任意の個数のクラスタに分類する K-means クラスタリ

ングのような,データクラスタリング問題には目標となる出力は存在しない.このような

曖昧な設定の問題を教師なし学習と呼ぶ.

ニューラルネットワークは,入力ベクトルと目標ベクトルのセットが与えられ,全ての

訓練サンプルの出力が目標ベクトルを満たすようなパラメータを設定する必要がある.つ

まり,ニューラルネットワークの訓練は,教師あり学習として全ての出力ベクトルと目標

ベクトルの差の総和を0へと近似させる,関数最適化問題である.

3.2 最急降下法(Steepest Descent Method) 最小化問題において最も一般的な手法のひとつ.[x1,x2,…,xn]を入力とする n 変数関

数 f(x)の最小値を計算する.ある関数上の点における勾配ベクトルを用いて,f(x)を更

新する式(3.1).また,ステップ i におけるパラメータ xi は式(3.1)の勾配ベクトルを用

いて式(3.2)のように更新される.

∇𝑓 =𝑑𝑓(𝒙)𝑑𝒙

=

𝜕𝑓(𝒙)𝜕𝑥P…𝜕𝑓(𝒙)𝜕𝑥G

(3.1)

𝒙]^P = 𝒙] − 𝜂∇𝑓 (3.2)

𝜂は学習率と呼ばれる定数項である.一般に,小さければ学習速度は遅くなり,大

きすぎると振動し収束しなくなる.0.001 < 𝜂 < 3.0 程度で使われるケースが多い.

3.2.1 シグモイドニューロン

3.2節で最急降下法について言及したが,人工ニューロンを用いた単純パーセプトロン

には致命的な欠陥があり,このままでは最急降下法を適用できない.その理由は,活性化

Page 13: 平成27年度 卒業研究 - 202.231.11.56202.231.11.56/~ATSUMU/docs/study.pdf · 平成27年度 卒業研究 GPUによって加速化された Deep Learningによる 光学文字認識システムの開発

- 10 -

関数 F として用いた閾値関数が微分可能ではないからである.そのために,活性化関数 F

を微分可能な連続関数へと変える.ふつう,閾値関数に近い形のシグモイド曲線を描く活

性化関数を選ぶ.このような活性関数を採用したニューロンをシグモイドニューロンと呼

ぶ.シグモイドニューロンによく使われている関数は以下の2つである.

式(3.3)は標準シグモイド関数と呼ばれており,図3-1のような曲線を描く.

式(3.4)は双曲線正接関数と呼ばれており,図3-2のような曲線を描く.

𝜎 𝑥 =1

1 + exp(−𝑥) (3.3)

𝜎 𝑥 =exp 𝑥 − exp(−𝑥)exp 𝑥 + exp(−𝑥)

= tanh(𝑥) (3.4)

図3-1標準シグモイド関数 図3-2双曲線正接関数

シグモイドニューロンの活性は, 重み付き入力 zoを使って以下のように表せる.

𝑎 = 𝜎 𝑧A = 𝜎(𝑿・𝑾+ 𝑏) (3.5)

3.2.2 単純パーセプトロンの訓練

N 個の訓練サンプル(x,y)が与えられたとき,ネットワークの出力がどれだけ目標ベ

クトルに近いかを示す評価値として,二次評価関数を定義する.

𝐽 𝒘, 𝒃 =12𝑁

𝒚𝒐𝒖𝒕(𝒌) − 𝒚(E)

qr

E

(3.6)

式(3.6)は平均二乗誤差(mean squared error)と呼ばれる関数である.これは,k 番目の

訓練サンプルの出力ベクトル𝒚𝒐𝒖𝒕(𝒌)

,目標ベクトル𝒚(E)の差の二乗和の平均を示す.こ

の平均二乗誤差関数における最小化問題の最適解(𝐽(𝑤, 𝑏) ≈ 0)が,ニューラルネット

ワークの最適なパラメータとなる.

最急降下法に適用するために,式(3.6)を重みベクトル,バイアスベクトルについて

偏微分し,勾配ベクトルを導出する.また,以降任意の訓練サンプル k についての証

Page 14: 平成27年度 卒業研究 - 202.231.11.56202.231.11.56/~ATSUMU/docs/study.pdf · 平成27年度 卒業研究 GPUによって加速化された Deep Learningによる 光学文字認識システムの開発

- 11 -

明とし,添字 k は省略する.出力ベクトルと出力層の活性ベクトルが等しいので

𝒚Auv = 𝒂 = 𝝈(𝒛) より,ユニットのインデックスを j として

𝜕𝐽𝜕𝑏R

=𝜕𝐽𝜕𝑎R

𝜕𝑎R𝜕𝑏R

(3.7)

二次評価関数 J を活性ベクトル a で偏微分すると,

𝜕𝐽𝜕𝑎R

= 𝒚𝒐𝒖𝒕,𝒋 − 𝒚𝒋 (3.8)

となり,式(3,5),(3.7),(3.8)より二次評価関数のある一点における,最急降下法のバ

イアスの勾配はベクトルの要素の掛け合わせのアダマール積⨀を用いて式(3.9)のように

表現できる.

𝜕𝑱𝜕𝒃

= (𝒚Auv − 𝒚)⨀𝜎�(𝒛) (3.9)

また,このときの(𝒚𝒐𝒖𝒕 − 𝒚)⨀𝜎�(𝒛)を出力誤差ベクトル δ と置く.以上より,バイアス

の値の更新式は以下のようになる.

𝒃�v��^P = 𝒃�v�� − 𝜂𝜹 (3.10)

次に,重みベクトルの更新式について導出する.j 番目出力ユニットに対する入力層 i

番目の重みを wji として,wji について二次評価関数を偏微分すると, 式(3.11)のようにな

る.また,活性の重みの偏微分は式(3.5)より式(3.12)となる

𝜕𝐽𝜕𝑤R]

= 𝜕𝐽𝜕𝑎R

𝜕𝑎R𝜕𝑤R]

(3.11)

𝜕𝒂𝒋𝜕𝑤R]

= 𝜎� 𝒛 𝑥] (3.12)

ここで,xi は入力ベクトル X の i 番目の要素である.ベクトル表記にすると式(3.13)の

ようになり,入力層の重みベクトルの更新式は式(3.8),(3.11),(3.13)より式(3.14),(3.15)が導

かれる.

𝜕𝒂𝜕𝑾

= 𝜎� 𝒛 ⨀𝑿 (3.13)

Page 15: 平成27年度 卒業研究 - 202.231.11.56202.231.11.56/~ATSUMU/docs/study.pdf · 平成27年度 卒業研究 GPUによって加速化された Deep Learningによる 光学文字認識システムの開発

- 12 -

𝜕𝐽𝜕𝑾

= 𝒚Auv − 𝒚 𝜎� 𝒛 ⨀𝑿 = 𝜹⨀𝑿 (3.14)

𝑾�v��^P = 𝑾𝒔𝒕𝒆𝒑 − 𝜂𝜹⨀𝑿 (3.15)

以上より,あるステップにおけるネットワークパラメータの更新式(3.10),(3.15)が導か

れた.

3.2.3 多層パーセプトロンの出力誤差

単純単出力パーセプトロンの最急降下法の適用方法について導出した.多層パーセプト

ロンに関しても,層に関して一般化すれば最急降下法が適用できるように思えるが,出力

誤差 δ の項で問題が生じてしまう.

ある層 L における活性ベクトル a(L)について考える.そのときの二次評価関数 J の a(L)の

偏微分は式(3.16)のように表せる.

𝜕𝑱𝜕𝒂(O)

= 𝒚Auv(O) − 𝒚(𝑳) (3.16)

このときの L 層の出力ベクトル y に対し,その目標となるベクトル𝒚(𝑳)が,L 層が隠れ

層の場合に存在しない(訓練サンプルによって与えられる目標ベクトルはあくまで出力層

の目標ベクトルである).

一般に,上層が隠れ層の層において出力誤差ベクトル δ は定義されず,前述の方法で

は訓練できない.この問題は多層パーセプトロンの「あらゆる関数を表現可能」という性

能に寄せられた期待を裏切る結果となり,後に多層パーセプトロン訓練アルゴリズムが登

場するまでニューラルネットワークが活用される機会は少なかった.

3.3 誤差逆伝播法(Back Propagation)

隠れ層において出力誤差を計算できない問題を解決するアルゴリズムとして非常に有名

である.このアルゴリズムは,ネットワークの出力の計算が前方方向に計算していくのに

対し,出力誤差を逆方向に伝播していき,各層の重み,バイアスの更新に適用していくア

ルゴリズムである.

3.3.1 隠れ層の出力誤差δの導出

隠れ層の j 番目の出力誤差ベクトル δ(L)を,上層の出力誤差ベクトル δ(L+1)で表現する.

L 層の二次評価関数を活性で偏微分すると,

𝜕𝑱𝜕𝒂(O)

=𝜕𝑱

𝜕𝒛(O^P)𝜕𝒛(𝑳^𝟏)

𝜕𝒂(O) (3.17)

Page 16: 平成27年度 卒業研究 - 202.231.11.56202.231.11.56/~ATSUMU/docs/study.pdf · 平成27年度 卒業研究 GPUによって加速化された Deep Learningによる 光学文字認識システムの開発

- 13 -

このとき,右辺第一項は微分の連鎖律を用いて式(3.18)として表現される.式(3.8),

(3.5)を代入すると,コスト関数の L+1層における重み付き入力ベクトルの偏微分は式

(3.19)に示す通りになる.この時,L+1層の重み付き入力ベクトルは式(3.20)である.

𝜕𝑱𝜕𝒛(O^P)

=𝜕𝑱

𝜕𝒂(O^P)𝜕𝒂(O^P)

𝜕𝒛(O^P) (3.18)

𝜕𝑱

𝜕𝒛(O^P)= 𝒚Auv

(O^P) − 𝒚 O^P ⨀𝜎� 𝒛(O^P) = 𝜹(O^P) (3.19)

𝒛(O^P) = 𝑾(O)𝑿(O) + 𝒃 O � (3.20)

式(3.18)を L 層の活性ベクトル𝒂(𝑳)で偏微分すると

𝜕𝒛(O^P)

𝜕𝒂(O)= 𝑾(O) (3.21)

𝜕𝑱𝜕𝒂(O)

= 𝜹(O^P)�𝑾(O) (3.22)

ここで,式(3.19)を変形すると式(3.23)のようになり,式(3.5),(3.22),(3.23)を代入すると

L 層の出力誤差は L+1層の出力誤差を用いて式(3.24)のように表せられる.

𝜹(O) =𝜕𝑱𝜕𝒛(O)

=𝜕𝑱𝜕𝒂(O)

𝜕𝒂(O)

𝜕𝒛(O) (3.23)

𝜹(O) = 𝜹(O^P)�𝑾(O)⨀𝜎� 𝒛(O) (3.24)

従って,任意の層についての δ を,上層の出力誤差を用いて表せられた.

最上位層である出力層の出力誤差 δ の計算方法は3.2.2節で導出した通りであるので,

出力層から出力誤差 δ を後方に伝播させて,各層の出力誤差を計算が可能である.

3.3.2 誤差逆伝播法の疑似コード

誤差逆伝播法の疑似コードを以下に示す.

リスト3-1誤差逆伝播法疑似コード

INPUTdata

FOReachlayerofperceptron

z=0

FOReachunitoflayer

z+=activationofunit

IFlayerisnotoutputlayer

FOReachunitofnextlayer

Page 17: 平成27年度 卒業研究 - 202.231.11.56202.231.11.56/~ATSUMU/docs/study.pdf · 平成27年度 卒業研究 GPUによって加速化された Deep Learningによる 光学文字認識システムの開発

- 14 -

unitinputsum

FORi=0tonumberofoutputlayerunitsdo

delta[i]=activationderivativeofunit*(activationofunit–targetvec-tor)

FOReachlayerofperceptronbackward

FORi=0tonumberoflayerunits-1do

unit=ithunitoflayer

biasofunit=biasofunit–trainingrate*delta[i]IFlayerisnotinputlayer

FORj=0tonumberofpreviouslayerunits-1do

unit=jthunitoflayer

FORk=0tonumberoflayerunits-1do

sigma=sigma+delta[k]*weightjkofunit

delta[j]=activationderivativeofunit*sigma

weightjiofunit=weightjiofunit–trainingrate*delta[j]*activa-tionofunit

END

3.4 単純パーセプトロンによる OR 回路学習

OR 回路は二次元入力平面上で線形分離可能であるので,単純パーセプトロンで関数を

構築可能である.OR 論理演算のブール表を表3-1に示す.

表 3-1 OR ブール表 入力2

入力1

0 1

0 0 1 1 1 1

この AND 回路を学習するには,表 3-2 に示す4つの訓練サンプルにおいてコスト

関数𝐶 ≈ 0を満たすような重み・バイアスを決定すればよい.

表 3-2 OR 訓練サンプル 入力1 入力2 目標1

訓練サンプル1 -1 1 -1 訓練サンプル2 1 -1 1 訓練サンプル3 -1 1 1 訓練サンプル4 1 1 1

ブール値偽に当たる数字が0ではなく-1なのは,採用している活性化関数の tanh の S

型曲線の値域が-1<x<1だからである.活性化関数に標準シグモイド関数を用いる場合は0

でよい.

3.5 多層パーセプトロンによる XOR 回路学習

XOR 回路は二次元入力平面上で線形分離不可能であるので,多層パーセプトロンでネッ

トワークを構築する.XOR 論理演算のブール表を表3-3に示す.

Page 18: 平成27年度 卒業研究 - 202.231.11.56202.231.11.56/~ATSUMU/docs/study.pdf · 平成27年度 卒業研究 GPUによって加速化された Deep Learningによる 光学文字認識システムの開発

- 15 -

表 3-3 XOR ブール表 入力2

入力1

0 1

0 0 1 1 1 0

この XOR 回路を学習するには,表3-4に示す4つの訓練サンプルにおいてコスト𝐶 ≈ 0を

満たすような重み・バイアスを決定すればよい.

表 3-4 XOR 訓練サンプル 入力1 入力2 目標1

訓練サンプル1 -1 -1 -1 訓練サンプル2 1 -1 1 訓練サンプル3 -1 1 -1 訓練サンプル4 1 1 1

Page 19: 平成27年度 卒業研究 - 202.231.11.56202.231.11.56/~ATSUMU/docs/study.pdf · 平成27年度 卒業研究 GPUによって加速化された Deep Learningによる 光学文字認識システムの開発

- 16 -

第 4 章 光学文字認識(OCR)システムの開発

光学文字認識(OCR)システムは,スキャニング等で得られる文書の画像をコンピュータ

が編集できる形式(文字コードの列)に変換するシステムである.本章では,Deep

Learning を用いて OCR システムを作成する.

4.1 開発方針及び環境

OCR システムをニューラルネットワークで実現するために,OCR システムを教師あり機

械学習の問題として考える.今回は領域検出を研究対象としていないため,文字ごとのグ

レースケールの N×N サイズの画像と正解を示すラベルの組の訓練サンプルを入力とす

る.入力として与えられる画像は N×N の要素をもつ1次元ベクトルに変換し,多層パ

ーセプトロンの入力とする.出力層はラベルの種類の総数と等しい数のユニットを採用す

る多出力パーセプトロンとし,各ユニットに1つずつ文字を割り当てる(表4-1).

表 4-1 出力ベクトル表 数字 割り当てるベクトル

0 0000000001 1 0000000010 2 0000000100 ... ... 9 1000000000

多層パーセプトロンは図4-1に示すように784-784-10のユニットを持つ.用意した訓練

データは,28×28pixel の,手書き数字画像4万2千個であり,Kaggle 社によって公開され

ている MNISThandwrittendigitdatabase[8]より引用した(図4-2).

図 4-1 OCR システムを構成するパーセプトロン

Page 20: 平成27年度 卒業研究 - 202.231.11.56202.231.11.56/~ATSUMU/docs/study.pdf · 平成27年度 卒業研究 GPUによって加速化された Deep Learningによる 光学文字認識システムの開発

- 17 -

図 4-2 訓練用手書き文字

本研究で使用した開発環境を表 4-2 に示す.

表 4-2開発環境

OS Windows8.1, MacOSX El Capitan 言語 C++14 CPU Intel i7 3770K

グラフィクボード Geforce GTX670

4.2 演算性能の改良

現行のアルゴリズム及び環境では,OCR システムを構築しても実行可能解を得るのは困

難である.もともと DeepLearning のような人工知能の分野では,多くのパソコンを並列

化して演算するのが主流であり,家庭用 PC で演算できるような規模ではない.これらの

問題を解決するために,収束性能,及び並列化の二つの観点で演算性能向上を目指す.

4.2.1 コスト関数見直しによる収束性能の改良

誤差逆伝播法では,特定の環境下で学習速度が大きく低下し,バイアスや重みがほとん

ど更新されなくなるステップが出現する.もっとも簡単な例として,入力ユニット,出力

ユニットが共に1つの単純パーセプトロンに,入力1に対し−1を出力させるように学習

させる.適当な初期値を与えたユニットの重みとバイアスがどのように更新されるのかを

記録すると,図4-3に示す学習曲線になった.

図 4-3 一般的な学習曲線

0

0.5

1

1.5

2

0 20 40 60 80 100 120

J

step

初期値: b=0.9 w=0.6

Page 21: 平成27年度 卒業研究 - 202.231.11.56202.231.11.56/~ATSUMU/docs/study.pdf · 平成27年度 卒業研究 GPUによって加速化された Deep Learningによる 光学文字認識システムの開発

- 18 -

コスト関数の値が大きい(目標ベクトルから出力がかけ離れている)状態から,一気に

急降下し,20step 辺りから収束を始める.ほぼ理想的と言える学習曲線を描いている.

次に重みとバイアスの初期値を意図的に大きくする(この場合,全ての重み及びバイアス

を2.0とした).この初期値をもつネットワークは同じような訓練サンプルに対し図4-4に

示す学習曲線を描く.

図 4-4 非常に応答が遅い学習曲線

バイアス,重みの初期値を大きくするだけで,収束開始に30倍のステップを要している.

600step 辺りまではゆるやかな直線を描いており,学習が正常に処理されているとは言

い難い.このような学習曲線を描いた理由は,評価関数として採用した平均二乗誤差関数

にある.最急降下法適用において平均二乗誤差関数を重み,バイアスについて偏微分した

式を再掲する.

𝜕𝐽𝜕𝑏

= (𝑦Auv − 𝑦)𝜎�(𝑧A) (再掲3.9)

𝜕𝐽𝜕𝑾

= 𝑦Auv − 𝑦 𝜎� 𝑧A 𝑿 = 𝛿𝑿 (再掲3.14)

どちらの式にも関わっている活性化関数の微分𝜎�,この項が学習に支障をきたしている.

活性化関数が双曲線正接関数の場合,活性化関数の微分は式(4.1)のようになる.

𝜎� 𝑧A = 1 − 𝜎(𝑧A)q (4.1)

𝜎(𝑧A)q ≈ 1のとき����≈ 0, ��

�𝑾≈ 0という性質を示している.つまり,ユニットの活性が

0

0.5

1

1.5

2

2.5

0 100 200 300 400 500 600 700 800

J

step

初期値: b=2.0, w=2.0

Page 22: 平成27年度 卒業研究 - 202.231.11.56202.231.11.56/~ATSUMU/docs/study.pdf · 平成27年度 卒業研究 GPUによって加速化された Deep Learningによる 光学文字認識システムの開発

- 19 -

1,もしくは−1に近い時は S 字曲線の勾配が限りなく0に近づき,バイアス,重みが更

新されなくなる.活性化関数が標準シグモイド関数の場合,同様に活性化関数の微分は

式(4.2)のように表現できる.

𝜎� 𝑧A = 𝜎(𝑧A)(1 − 𝜎(𝑧A)) (4.2)

同様に,𝜎(𝑧A) ≈ 1,0のとき����≈ 0, ��

�𝑾≈ 0となる.

ここで,評価関数として平均二乗誤差関数の代わりに新たな評価関数を利用する.

𝐽 = −1𝑛

[yln(𝑦Auv) + 1 − 𝑦 ln 1 − 𝑦Auv ]E

(4.3)

これはクロスエントロピー関数と呼ばれる関数である.この関数は,コスト関数として

の必要な特性である,出力と目標ベクトルの差(𝑦 − 𝑦Auv)と関数の値に比例の関係がある.

このコスト関数を利用して最急降下法を適用するために,勾配ベクトルΔ𝑓を求める.任

意の訓練サンプル k について次式が成立する.

𝜕𝐽𝜕𝑏

=𝜕𝐽𝜕𝑎

𝜕𝑎𝜕𝑏

= −(𝑦

𝜎 𝑧−

1 − 𝑦1 − 𝜎(𝑧)

)・𝜎� 𝑧 (4.4)

𝜕𝐽𝜕𝑏

=𝜎 𝑧 − 𝑦

𝜎 𝑧 (1 − 𝜎 𝑧 )・𝜎� 𝑧 (4.5)

ここで,活性化関数を標準シグモイド関数としたとき,𝜎� 𝑧 = 𝜎 𝑧 (1 − 𝜎 𝑧 )より,式

(4.5)は式(4.6)のように非常にシンプルな式となる.同様にして,重みについても導出す

ると,式(4.7)が得られる.

𝜕𝐽𝜕𝑏

= 𝜎 𝑧 − 𝑦 (4.6)

𝜕𝐽𝜕𝑤R

= 𝜎 𝑧 − 𝑦 ∗ 𝑥R (4.7)

活性化関数の微分項がキャンセルされ,勾配ベクトルは目標値と出力の差に比例し,大

きく間違えたときに高い修正値を得る.これは実際の学習と似ている性質である.パーセ

プトロンの学習においてクロスエントロピー関数を導入し,導出した式(4.6),式(4.7)を

利用して,再度初期値 w=2.0,b=2.0のネットワークを訓練させた結果が図4-5である.

Page 23: 平成27年度 卒業研究 - 202.231.11.56202.231.11.56/~ATSUMU/docs/study.pdf · 平成27年度 卒業研究 GPUによって加速化された Deep Learningによる 光学文字認識システムの開発

- 20 -

図 4-5 改善された学習曲線

大きく間違っているときは勾配が大きい0に収束していく理想的な学習曲線が得られた.

4.2.2 GPGPU による並列化

OCR システム構築において計算時間が非常に大きくなるのは,膨大に存在する訓練サン

プル,パラメータ等による.逐次処理をするのは効率が悪いため,並列処理を導入して高

速化を図りたいが,CPU はシーケンシャルな処理に特化しており並列処理の恩恵はあまり

受けられない.最新の CPU でもコア数は4個程度,スレッド数も同程度である.しかし,

GPU と呼ばれるグラフィックボードのチップは並列処理に非常に特化した設計となってお

り,単純な計算ならば数千個のスレッドを用いて並列で高速に処理が可能である.本来な

らばグラフィックス処理のためのパーツである GPU を数値計算に利用し,高速な処理を実

現する.GPU を数値計算に応用する技術を GPGPU と呼ぶ.

GPGPU における代表的なライブラリは,OpenCL,CUDA,C++AMP であり,今回は C++AMP

を採用した.

4.2.3 並列化可能の証明

並列演算のためには,計算が順序非依存でなければならない.

ここで,誤差逆伝播法における最急降下法の,重みとバイアスの勾配を式(4.8),(4.9)

に示す.

𝜟𝒃G

(O) = ((𝑾O^P)�𝜹(O^P))⨀𝜎� 𝒛(O) (4.8)

𝜟𝑾G(O) = 𝑿(O)((𝑾(O^P))�𝜹(O^P))⨀𝜎� 𝒛(O) (4.9)

同様にして,パーセプトロンの出力の計算式を次式に示す.

𝜎((((𝑋(�)(𝑊(�))� + 𝑏(�))(𝑊(P))� + 𝑏(P)). . . )(𝑊(r))� + 𝑏(r)) (4.10)

00.5

11.5

22.5

33.5

4

0 20 40 60 80 100 120

J

step

Cross-Entropy-Function

Page 24: 平成27年度 卒業研究 - 202.231.11.56202.231.11.56/~ATSUMU/docs/study.pdf · 平成27年度 卒業研究 GPUによって加速化された Deep Learningによる 光学文字認識システムの開発

- 21 -

これらの式が示すのは,パラメータの更新式は行列の演算のみで構成されており,要素

の一つ一つの計算が順序に依存せず,ディープラーニングにおいて GPGPUが有効である

という数学的性質である.

4.2.4 C++ AMP

C++AMP は,Microsoft が開発した GPGPU 向けライブラリである.OpenCL や CUDA のラ

ッパーライブラリのような存在であり,アクセラレータが他 API に比べて抽象化されてい

る.C++11に対応しており,使い慣れたラムダ式もって GPU にカーネル(GPU で動かすプ

ログラム)を転送できる.ポインタは無効なため生配列は扱えないが,多次元配列用の

GPU 向けのコンテナが用意されており、非常に簡単な記述でカーネルを実行可能である.

4.3 並列化された Deep Learning フローチャート

DeepLearning の処理において,GPU 演算のために同期処理等を追加した.

4.3.1 ネットワークの計算フローチャート(並列化)

GPGPU を用いて並列化した多層パーセプトロンの計算フローチャートを図4-6に示す.

図4-6ネットワークの計算フローチャート

Page 25: 平成27年度 卒業研究 - 202.231.11.56202.231.11.56/~ATSUMU/docs/study.pdf · 平成27年度 卒業研究 GPUによって加速化された Deep Learningによる 光学文字認識システムの開発

- 22 -

4.3.2 誤差逆伝播法フローチャート(並列化)

GPGPU を用いて並列化した誤差逆伝播法アルゴリズムのフローチャートを図 4-7

に示す.

図4-7誤差逆伝播法フローチャート

Page 26: 平成27年度 卒業研究 - 202.231.11.56202.231.11.56/~ATSUMU/docs/study.pdf · 平成27年度 卒業研究 GPUによって加速化された Deep Learningによる 光学文字認識システムの開発

- 23 -

4.4 OCR システムクラス図

今回構築したシステムのクラス関係図を図4-8に示す.

図4-8OCR システムクラス図

NNSolver クラスが,システムのソルバーとなるクラスであり,このソルバはネットワ

ークの構造に対しユニフォームに働くようになっている.多層パーセプトロンを表現する

FeedForward クラスに静的ににネットワークを構築する FeedForward,動的に構築する

FeedForward_Dy クラスの二種類を用意し,どちらを使用しても NNSolver が働くようにし

た.これを実現しているのは,NNSolver のテンプレート特性と全てのネットワークの共

通インターフェースであるイテレータなどのメソッドである.

同様に,NNSolver の学習メソッドにおいても,学習アルゴリズムを任意に設定し一意

に働く.学習アルゴリズムの一つ BackPropagation クラスは,ネットワークの特性に応じ

て,静的である場合には再帰式を,動的である場合には反復式に構造を変化させる.また,

層数が二層以下である単純ネットワークには,誤差逆伝播法が適用できないため,

ErrorCorrection クラスという単純な最急降下法を採用しているクラスへと変化する.こ

のような静的型特性による振る舞いの変化は,タグ・ディスパッチという技術を用いて実

装した.

Page 27: 平成27年度 卒業研究 - 202.231.11.56202.231.11.56/~ATSUMU/docs/study.pdf · 平成27年度 卒業研究 GPUによって加速化された Deep Learningによる 光学文字認識システムの開発

- 24 -

第 5 章 実験結果及び考察

単純パーセプトロン,多層パーセプトロンについて実施した実験の結果を示す.

5.1 単純パーセプトロン上に構築された OR 回路

重み修正の計算は100ステップで打ち切りとした.また,学習率は η=0.15を採用した.

5.1.1 重み・バイアスのパラメータ

計算結果から,図5-1に示すネットワークが構築された.

図5-1OR を構築した単純パーセプトロン

5.1.2 3次元グラフ

入力2,出力1のため三次元グラフでネットワークを視覚化が可能である.x1,x2の刻

み幅を0.02として,-1<x<1の定義域の三次元グラフをプロットした.

図5-2 OR を構築した単純パーセプトロンの三次元グラフ

x,y 共に-1の時に z は-1に近づき,それ以外は1に近づいている.

Page 28: 平成27年度 卒業研究 - 202.231.11.56202.231.11.56/~ATSUMU/docs/study.pdf · 平成27年度 卒業研究 GPUによって加速化された Deep Learningによる 光学文字認識システムの開発

- 25 -

5.2 多層パーセプトロン上に構築された XOR 回路

学習率やステップ数は5.1節と同様である.

5.2.1 重み・バイアスのパラメータ

計算結果から,図5-3のようなネットワークが構築された.

図5-3 XOR を構築した多層パーセプトロン

5.2.2 3次元グラフ

5.1.2節同様に,3次元グラフ化した結果を図5-4に示す.

図5-4 XOR を構築した多層パーセプトロンの三次元グラフ

x,y 共に-1,1の時に z は-1に近づき,それ以外は1に近づいている.

Page 29: 平成27年度 卒業研究 - 202.231.11.56202.231.11.56/~ATSUMU/docs/study.pdf · 平成27年度 卒業研究 GPUによって加速化された Deep Learningによる 光学文字認識システムの開発

- 26 -

5.3 OCR システムの構築

訓練の収束・演算性能と構築された OCR システムの精度について示す.

5.3.1 学習率パラメータの収束性能への影響

DeepLearning における学習率の設定において,適切なパラメータは実験的に得られる

ケースが多い.そのため.幾つかの学習率について収束性能の計測を行い,適切な学習率

を探索した.図5-5は,4種類の学習率において誤差逆伝播法の100回の演算におけるコス

ト関数の値をグラフ化したものである.

図5-5学習率と収束性能

学習率は0.005と0.001を境に,大きく結果が変わった.学習率は十分小さくしなければ

振動して解を得られず,また,小さすぎると収束の遅延が発生する等の特徴をグラフから

読み取れる.

5.3.2 コスト関数変更における収束性能への影響

二乗誤差関数とクロスエントロピー関数の二つのコスト関数について,収束性能の差を計

測した.図5-6にその結果を示す.

0

0.5

1

1.5

2

2.5

3

3.5

4

0 20 40 60 80 100 120

J

step

η=0.0003

η=0.001

η=0.005

η=0.01

Page 30: 平成27年度 卒業研究 - 202.231.11.56202.231.11.56/~ATSUMU/docs/study.pdf · 平成27年度 卒業研究 GPUによって加速化された Deep Learningによる 光学文字認識システムの開発

- 27 -

図5-6コスト関数と収束性能

クロスエントロピー関数の採用によって,収束性能が向上している.

5.3.3 GPGPU における演算速度への影響

同じ条件において,CPU で実行した場合と GPU で実行した場合の演算性能を計測しグラ

フ化した.また,CPU で実行した場合実行可能解を得るのが困難なため,実際に OCR シス

テム構築で使用するデータ数を1/100に縮小し,時間を計測した.

図5-7CPU,GPU の演算性能

GPU で実行した場合,CPU の10倍程度の演算性能が得られた.

0

0.5

1

1.5

2

2.5

3

3.5

4

0 10 20 30

J

step

クロスエントロピー関

二乗誤差関数

05

101520253035404550

0 2 4 6 8 10 12

時間

[s]

step

CPU GPU

Page 31: 平成27年度 卒業研究 - 202.231.11.56202.231.11.56/~ATSUMU/docs/study.pdf · 平成27年度 卒業研究 GPUによって加速化された Deep Learningによる 光学文字認識システムの開発

- 28 -

5.3.4 構築された OCR システムの手書き文字認識精度計測

多層パーセプトロン上に構築された OCR システムが,実際に手書き文字をどれほどの精

度で認識可能なのかを計測した.図5-9は,本実験で精度計測のために使用したすべての

手書き文字である.まず,多層パーセプトロンにおいて文字がどのように解析されるのか

を確認するために,隠れ層のニューロンを画像として出力した(図5-8).この操作によっ

て確認できるのは,学習によって獲得した,本システム独自の「特徴抽出アルゴリズム」

と言えるアルゴリズムの計算結果である.

図5-8手書き文字一覧 図5-9手書き文字特徴量

さらに,出力された特徴量は,それぞれ数字が割り当てられたユニットへの重みを持つ.

つまり,0番目へのユニットへの重みを特徴量に乗ずると,その特徴量は「数字の0らし

さ」を意味するようになる.図5-10はある手書き文字とその特徴量,図5-11は数字らしさ

を示す特徴量である.

Page 32: 平成27年度 卒業研究 - 202.231.11.56202.231.11.56/~ATSUMU/docs/study.pdf · 平成27年度 卒業研究 GPUによって加速化された Deep Learningによる 光学文字認識システムの開発

- 29 -

図5-10数字の6の特徴量

0 1 2 3 4 5 6 7 8 9

図5-11各数字らしさの特徴量

本システムが抽出した特徴量に関して,人間がその性質を読み取るのは困難である.こ

の結果は,明示的プログラミングによる文字認識の手法とは全く異なる基準の,文字認識

のアルゴリズムの獲得を示す.次に,この OCR システムの認識精度の計測結果を示す.図

5-12は数字別の正答率を棒グラフに,図5-13は誤答・正答の分布をバブルチャート化した

グラフである.

図5-12数字別正答率

80

85

90

95

100

0 1 2 3 4 5 6 7 8 9

正答

率(%

)

認識文字

Page 33: 平成27年度 卒業研究 - 202.231.11.56202.231.11.56/~ATSUMU/docs/study.pdf · 平成27年度 卒業研究 GPUによって加速化された Deep Learningによる 光学文字認識システムの開発

- 30 -

図5-13正答率バブルチャート

「3」,「7」,「8」に関しては正答率100%を記録したが,一方「1」は誤答率が10%と,

大きく精度を落としている.「1」の誤答の原因の多くは「7」への誤った認識であるの

が,図5-8から読み取れる.

5.4 考察

単純パーセプトロン(2-1ユニット)で論理関数 OR を,多層パーセプトロン(2-4-1ユ

ニット)で論理関数 XOR を構成した.同様に,NAND,AND 等の論理関数の構築も,線形分

離可能であるので,単純パーセプトロンで構築可能と推測できる.また,OCR システムの

学習率については,η=0.0003でも実行可能解は得られるが,最終的な収束値は同一であ

るので,η=0.001が最適であると判断した.ただしこの値は,本研究で利用した784-784-

10型多層パーセプトロンに最適化された値である可能性が高いので,隠れ層の層数,ユニ

ット数,あるいは識別する文字の種類を変える際には同様の実験を実施し,パラメータを

決定する必要がある.特に,識別する文字の種類を増やすと,パーセプトロンの出力層の

ユニット数はもちろん,訓練サンプル数も増大するため,学習率の設定は適切に決定すべ

きである.また,それに従い CPU のみでの処理は現実的ではなくなる.次に,認識精度に

関しては,「1」の精度が特筆して低かった.原因として,「1」と「7」の幾何学的特徴

が似ているためであると推測できる.「1」において数字上部の跳ね上がり部分が省略さ

れる場合は正常に認識できるが,省略されない場合には「7」と誤認しまうケースが多い.

-2

-1

0

1

2

3

4

5

6

7

8

9

10

-2 -1 0 1 2 3 4 5 6 7 8 9 10

解答

出力

正答率

Page 34: 平成27年度 卒業研究 - 202.231.11.56202.231.11.56/~ATSUMU/docs/study.pdf · 平成27年度 卒業研究 GPUによって加速化された Deep Learningによる 光学文字認識システムの開発

- 31 -

一方で,「7」が「1」と誤認されなかったのは,「7」の跳ね上がり部分が省略される

ケースは皆無であるからだと考えられる.学習の結果であるブラックボックス化された文

字識別アルゴリズムは,画像化した特徴量から推測するのが困難であったため,統計・数

値解析的なアプローチでなければ,認識結果と関連づけるのは難しいと結論付けた.文字

識別アルゴリズムが一切推測できない原因は,二次元の文字画像の一次元ベクトル化であ

ると考えられる.生物の脳は,大きな受容野と小さな受容野を用いて空間的に画像解析し,

本実験のパーセプトロンよりも遥かに多い層数を持って情報を処理している.つまり本

OCR システムは,生物の脳とは異なる文字認識のプロセスを辿っており,今回の目標であ

り手法であった生物の脳の模倣は十分実現できてはいないと考えられる.これは,今後の

課題としたい.

Page 35: 平成27年度 卒業研究 - 202.231.11.56202.231.11.56/~ATSUMU/docs/study.pdf · 平成27年度 卒業研究 GPUによって加速化された Deep Learningによる 光学文字認識システムの開発

- 32 -

第 6 章 結論

本研究はインターネットの普及やコンピュータテクノロジの発達による,書類の電子化

の需要の拡大という背景により実施した.その目的は,明示的プログラミング手法よりも

柔軟で,精度の高い光学文字認識システムの開発である.提案した手法は,Deep

Learning の応用である.生物の脳より着想を得た多層パーセプトロン上に,4万個以上の

数字データを学習させ,OCR システムに相当するベクトル写像器を構築した.このシステ

ムを改良,応用して,文字領域の検出,文字と図の区別等の機能が付加できれば,アナロ

グな書類を電子化するソフトウェアとしての実用が期待できる.このソフトウェアは,既

存のOCR システムとは異なり,自己進化及び利用者個人への最適化能力を持つ.その能

力により,使い込むほどより高い精度の獲得が期待できる.もっとも,OCR システムは

DeepLearning の利用例の一つであり,本研究で開発したソフトウェアは適切な訓練デー

タを与えれば,利用者の任意の目的を叶える可能性を秘めている.DeepLearning におい

て演算精度を大きく向上させる技術を取り入れたため,OCR システムだけではなくデータ

クラスタリング,顔認識,音声解析等の分野への応用を,個人レベルで気軽に実践が可能

となった.また,GPGPU による加速化は DeepLearning だけではなくあらゆる数値計算分

野で応用可能であるので,膨大な計算量を要する研究,特にマルチメディアを扱う分野に

対しては,GPGPU 技術を先駆けて導入した本研究が有意義な結果を残したと言える.現在,

GPU のアーキテクチャは進化を続けており,プログラマブル・シェーダーはグラフィク

ス・パイプラインにおいて大きな比重を占めている.つまり,この先 GPU の演算で人間が

介入できる余地は増えていく.それに伴い,より抽象的で扱いやすい GPGPU 向けライブラ

リの登場も期待できる.

本研究では,全ての数字で正答率90%以上をマークしたが,対象とした文字が10種類

しかない事実を考慮すると,決して高い値とは言えない.この結果に関しては,二次元画

像を一次元ベクトルに変換し多層パーセプトロンに入力する過程で,幾何学的特徴量が失

われている可能性が高いと推測している.そのため,幾何学的特徴量を保持したまま処理

するアルゴリズムの導入が今後の課題といえる.そのアルゴリズムの例として,畳み込み

ニューラルネットワークが挙げられる.これは,重みパラメータをフィルタとして考えた,

疎結合型フィードフォワード型ネットワークである.重みフィルタを畳み込んで演算する

と,二次元の幾何学的特徴を抽出できると考えられている.この手法の導入によって,ネ

ットワークの出力について移動不変性・回転不変性の獲得が期待出来る.書類の電子化の

ためには解決すべき課題が多くあるが,文字認識に DeepLearning を応用する基礎研究と

して有意な結果が得られたといえる.

Page 36: 平成27年度 卒業研究 - 202.231.11.56202.231.11.56/~ATSUMU/docs/study.pdf · 平成27年度 卒業研究 GPUによって加速化された Deep Learningによる 光学文字認識システムの開発

参考文献

[1]渡邉寛基,鈴木道孝,伊藤彰義:「ストロークの方向分布を考慮した文字認識」,電子

通信情報学会技術研究報告,180-226(2012)

[2]朱碧蘭,中川正樹:オンライン手書き文字認識の最新動向,電子情報通信学会誌

Vol.95No.4(2012)

[3] PHILIP D.WASSERMAN 著,石井直宏,塚田稔 訳: ニューラル・コンピューティング-

理論と実際-,森北出版 (東京,1993)

[4] PHILIP D.WASSERMAN 著,嘉数侑昇, 古川正志, 森川一 訳: ニューラル・コンピュー

ティング-上級編-,森北出版 (東京,1993)

[5] 松岡清利 : ニューロンコンピューティング-基礎と応用-,朝倉書店 (東京,1992)

[6] Michael Nielsen, ニ ュ ー ラ ル ネ ッ ト ワ ー ク と 深 層 学 習 , http://nnadl-

ja.github.io/nnadl_site_ja/, (2015年12月24日)

[7] Ren Wu, Bin Zhang, Meichun Hsu: 「GPU-Accelerated Large Scale Analytics」 , HP

Labs,(2009)

[8] Kaggle, Classify handwritten digits using the famous MNIST data,

https://www.kaggle.com/c/digit-recognizer,(2016年1月15日)

Page 37: 平成27年度 卒業研究 - 202.231.11.56202.231.11.56/~ATSUMU/docs/study.pdf · 平成27年度 卒業研究 GPUによって加速化された Deep Learningによる 光学文字認識システムの開発

研究業績

学会発表

小野敦夢,森川一:「GPU によって加速化された DeepLearning による光学文字認識シ

ステムの開発」,電子情報通信学会北海道支部学生会インターネットシンポジウム(イン

ターネット上,2016年2月17日〜23日予定)

Page 38: 平成27年度 卒業研究 - 202.231.11.56202.231.11.56/~ATSUMU/docs/study.pdf · 平成27年度 卒業研究 GPUによって加速化された Deep Learningによる 光学文字認識システムの開発

謝辞

まず,本研究のテーマを認可して下さった指導教員である森川一先生に多大な感謝を.

当初はそもそもニューラルネットワークを扱うことすら決めておらず,何を研究テーマと

するのかさえ不明瞭な状態でした.それでも研究内容を自由にさせて下さった森川先生の

おかげで好きな分野でのびのびと研究ができましたことを,この場を借りて感謝申し上げ

ます.遺伝的アルゴリズムやライブラリ製作等,寄り道を多くしてきましたが,どうにか

形になって良かったと思います.

同研究室の山本竜生くん,大村航太くんにも大変お世話になりました.研究中どうして

も発想が行き詰ったり,イライラしたりして一人では負の連鎖を起こしてしまいそうなと

き,大変励みになりました.二人とは,卒業後もよき友人でありたいと思います.その他,

青井亮くん,斎藤和希くん,鴻野友樹くんをはじめとする5年システム制御情報工学科の

皆様にも,感謝申し上げます.皆様との5年間の積み重ねの結果,こうして論文を寄稿で

きましたことを大変喜ばしく思います.

また,5年制御以外の方々にも多くお世話になりました.5年間ずっとよき友人であっ

てくれた吉田唯真くん,加藤佑都くん,竹内修くん,五十嵐大河くんには感謝が絶えませ

ん.これからもよろしくお願いします.卒業生である梶浦大起氏には,数学のことで相談

に乗っていただいたり,ストレスがたまった時にサンドバックになって貰ったり等,とて

もご迷惑をおかけしました.齋藤稜子氏には,某ゲームでよく強力なボスにデバフをかけ

ていただきました.新田陸くんには,プログラムに関してよくアドバイスをいただきまし

た.

その他,私の研究のモチベーションの支えとなった多くの同人音声作品を生み出してく

ださった紅月ことね様,藍月なくる様,和鳴るせ様,浅見ゆい様,分倍河原シホ様,舞原

ゆめ様,かの仔様,高橋春香様,長坂光様,藤堂れんげ様,月宮怜様,下明穂茶様,小日

向さくら様,和泉りゆ様,伊ケ崎綾香様,平野みゆき様,その他多くの同人声優の皆様に

もこの場を借りて感謝申し上げます.これからも多くの作品を生み出してくださることを

期待しております.

最後になりますが,担任の中村基訓先生や他システム制御工学科の教員,家族,友人,

後輩,先輩の方々が一人でも欠けていたら,結果は変わったものになっていたと思います.

心から感謝申し上げます.