「はじめてのパターン認識」 サンプルページ ·...

31

Upload: others

Post on 31-Aug-2019

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 「はじめてのパターン認識」 サンプルページ · 本書の構成は以下のとおりである.第1章では,パターン認識 の ... 主成分分析と,部分空間法について解説する.第10章
Page 2: 「はじめてのパターン認識」 サンプルページ · 本書の構成は以下のとおりである.第1章では,パターン認識 の ... 主成分分析と,部分空間法について解説する.第10章

「はじめてのパターン認識」

サンプルページ

この本の定価・判型などは,以下の URL からご覧いただけます.

http://www.morikita.co.jp/books/mid/084971

※このサンプルページの内容は,初版 1 刷発行当時のものです.

Page 3: 「はじめてのパターン認識」 サンプルページ · 本書の構成は以下のとおりである.第1章では,パターン認識 の ... 主成分分析と,部分空間法について解説する.第10章
Page 4: 「はじめてのパターン認識」 サンプルページ · 本書の構成は以下のとおりである.第1章では,パターン認識 の ... 主成分分析と,部分空間法について解説する.第10章

i

まえがき

優れたパターン認識能力をおもちの皆さんは,下に書かれた文字列を “THE CAT”

とすぐに読めるはずである.「優れた」といったことには訳がある.書かれている文字

列をよく見ると,“THE”の “H”と “CAT”の “A”の「形」はまったく同じである.

それにもかかわらず,われわれはちゃんと読めるのである.なぜかというと,記憶し

ている単語の知識を使っているからである.

本書で紹介するパターン認識は,残念ながら,記憶している単語や文法など高度な

知識を使わないタイプのものである.入力データとそのクラスが対になったたくさん

の学習データが与えられ,入力データの正しいクラスを出力するための識別規則を学

習する様々な手法を紹介する.人のようには優れていないパターン認識ではあるが,

自動販売機や券売機の硬貨やお札の識別,デジカメの顔認識自動焦点合わせなどで使

われていて,結構世の中の役に立っている手法である.

本書の構成は以下のとおりである.第 1章では,パターン認識の処理の流れと,識別

規則の入力となる特徴ベクトルの性質について紹介する.第 2章では,本書の主題で

ある識別規則と学習アルゴリズムの概要を紹介し,手元にある学習データを用いた汎

化誤差の推定法について説明する.第 3章では,誤りが最小となるベイズの識別規則

を紹介する.第 4章では,平均ベクトルと共分散行列を用いた特徴ベクトルの線形変

換や,確率モデルの代表である正規分布から導かれる識別関数などについて紹介する.

第 5章では,学習データそのものを鋳型として識別に用いる投票型 k最近傍法(kNN

法)について解説する.第 6章では,線形識別関数の構成法について解説する.第 7

章では,学習機械の原点であるパーセプトロン型学習規則と,一世を風靡した誤差逆

伝搬法について解説する.第 8章では,現在もっとも広く利用されているサポートベ

クトルマシンについて解説する.第 9章では,情報縮約のための代表的な手法である

主成分分析と,部分空間法について解説する.第 10章では,教師データを用いないで

クラスを構成するためのクラスタリングについて解説する.第 11章では,決定木につ

いて解説した後,決定木などの識別器を複数組み合わせて性能強化を行うための手法

Page 5: 「はじめてのパターン認識」 サンプルページ · 本書の構成は以下のとおりである.第1章では,パターン認識 の ... 主成分分析と,部分空間法について解説する.第10章

ii まえがき

について紹介する.外国の著名なテキストの多くは,著者に統計の専門家が多いせい

か,同じ学習アルゴリズムで回帰と識別をセットにして説明しているものが多い.現

在大きく発展している部分空間法については,回帰への応用がないため取り扱ってい

るテキストが少ないのが残念である.本書では,紙数の関係から回帰についてはほと

んど扱っていないことをあらかじめお断りしておく.

本書は,著者が 10年近く筑波大学で行ってきた学部生向けの「パターン認識」の授

業のために準備したスライド資料をもとに見直しを加え,本の形にまとめたものであ

る.これまで授業にお付き合いいただいた多くの学生諸君に感謝する.大学学部生や

大学院生,これからパターン認識の研究を始めようとしている研究者の方々が,はじ

めてパターン認識に触れるときに役に立つ入門書を目指して書いたつもりである.本

文の理解を助けるために,章末問題を付けたので,ぜひトライしていただきたい.

最近,統計解析環境 Rを用いてパターン認識の具体的な実装法を解説した本がたく

さん出版されている(たとえば,文献 [36]).Rは無償ソフトであり,パターン認識

に関する多くの優れたパッケージが世界中の研究者から供給され,世界中の研究者に

利用され続けているソフトウエアである.解説書もたくさん出ており(たとえば,文

献 [44]),読者の方々も Rを利用されることを勧める.本書でも,随所で Rによる実

行例を用いて解説しており,関連した Rの関数をできるだけ脚注で示すようにした.

また,筆者の授業でも,Rを用いた実習レポート課題を出していた.

ただし,Rは統一された基準の下でパッケージが開発されているわけではなく,個々

のパッケージの開発者の個性が色濃く反映されている.関数内部で何をやっているか

わからないことがままあるので,関数の解説書や関数の中で使用されているライブラ

リーの解説書をよく読んで利用する必要がある.

最後に,本書を書く機会を与えていただいた森北出版に感謝する.記述内容に誤り

があればすべて著者の責任であるので,森北出版を通じてご連絡いただきたい.

最後に,日頃お世話になっている和子さんに感謝する.

2012年 5月

著 者 

Page 6: 「はじめてのパターン認識」 サンプルページ · 本書の構成は以下のとおりである.第1章では,パターン認識 の ... 主成分分析と,部分空間法について解説する.第10章

iii

目 次

第 1章 はじめに 1

1.1 パターン認識とは ····································································· 1

1.2 特徴の型 ················································································· 2

1.3 特徴ベクトル空間と次元の呪い ··················································· 4

章末問題 ························································································ 7

第 2章 識別規則と学習法の概要 8

2.1 識別規則と学習法の分類 ···························································· 8

2.2 汎化能力 ················································································· 12

章末問題 ························································································ 20

第 3章 ベイズの識別規則 21

3.1 ベイズの識別規則 ····································································· 21

3.2 受信者動作特性曲線 ·································································· 30

章末問題 ························································································ 35

第 4章 確率モデルと識別関数 36

4.1 観測データの線形変換 ······························································· 36

4.2 確率モデル ·············································································· 45

4.3 確率モデルパラメータの最尤推定 ··············································· 52

章末問題 ························································································ 53

第 5章 k最近傍法(kNN法) 54

5.1 最近傍法とボロノイ境界 ···························································· 54

5.2 kNN法 ·················································································· 58

5.3 kNN法とベイズ誤り率 ····························································· 60

5.4 kNN法の計算量とその低減法 ···················································· 65

章末問題 ························································································ 69

Page 7: 「はじめてのパターン認識」 サンプルページ · 本書の構成は以下のとおりである.第1章では,パターン認識 の ... 主成分分析と,部分空間法について解説する.第10章

iv 目 次

第 6章 線形識別関数 71

6.1 線形識別関数の定義 ·································································· 71

6.2 最小 2乗誤差基準によるパラメータの推定 ··································· 75

6.3 線形判別分析 ··········································································· 79

6.4 ロジスティック回帰 ·································································· 88

章末問題 ························································································ 95

第 7章 パーセプトロン型学習規則 96

7.1 パーセプトロン ········································································ 96

7.2 誤差逆伝搬法 ··········································································· 102

7.3 誤差逆伝搬法の学習特性 ···························································· 108

章末問題 ························································································ 113

第 8章 サポートベクトルマシン 114

8.1 サポートベクトルマシンの導出 ··················································· 114

8.2 線形分離可能でない場合への拡張 ··············································· 119

8.3 非線形特徴写像 ········································································ 121

8.4 ν-サポートベクトルマシン ························································· 127

8.5 1クラスサポートベクトルマシン ················································ 131

章末問題 ························································································ 134

第 9章 部分空間法 135

9.1 部分空間 ················································································· 135

9.2 主成分分析 ·············································································· 137

9.3 特異値分解 ·············································································· 141

9.4 部分空間法 ·············································································· 143

9.5 カーネル主成分分析 ·································································· 148

9.6 カーネル部分空間法 ·································································· 150

章末問題 ························································································ 151

第 10章 クラスタリング 152

10.1 類似度と非類似度 ··································································· 152

10.2 非階層型クラスタリング(K-平均法) ········································· 155

Page 8: 「はじめてのパターン認識」 サンプルページ · 本書の構成は以下のとおりである.第1章では,パターン認識 の ... 主成分分析と,部分空間法について解説する.第10章

目 次 v

10.3 階層型クラスタリング(融合法) ··············································· 157

10.4 確率モデルによるクラスタリング ·············································· 165

章末問題 ························································································ 173

第 11章 識別器の組み合わせによる性能強化 175

11.1 ノーフリーランチ定理 ····························································· 175

11.2 決定木 ·················································································· 176

11.3 バギング ··············································································· 187

11.4 アダブースト ········································································· 188

11.5 ランダムフォレスト ································································ 193

章末問題 ························································································ 197

付 録 ベクトルと行列による微分 198

A.1 ベクトルによる微分 ································································· 198

A.2 行列によるスカラー関数の微分 ·················································· 199

章末問題の解答 ····················································································· 201

参考文献 ······························································································ 212

索 引 ································································································· 215

Page 9: 「はじめてのパターン認識」 サンプルページ · 本書の構成は以下のとおりである.第1章では,パターン認識 の ... 主成分分析と,部分空間法について解説する.第10章

vi

■本書で使う代表的な記号

x 入力ベクトル,観測ベクトル,特徴ベクトルなど,同じ意味で

区別せず使用している.ベクトルはいずれも縦ベクトル

y, t, w 出力ベクトル,教師ベクトル,係数ベクトル

xi, yi, ti ベクトルの i番目の要素

xij , xij i番目のデータベクトルの j 番目の要素

wji, wkj i番目の入力素子から j 番目の隠れ素子への結合係数,j 番目の

隠れ素子から k 番目の出力素子への結合係数

zik i番目のデータが k番目のクラスに属するとき 1,そうでないと

き 0をとる隠れ変数

xi, xi i番目の学習データ

x(k)i k 番目のクラスの i番目の学習データ

X データ行列,X = (x1, . . . , xN )T

Ci, Ω i番目のクラス,クラスの集合

P (Ci) i番目のクラスの事前確率.大文字 P で離散確率分布を表す.

p(x|Ci) i 番目のクラスのクラス条件付き確率,尤度.小文字 p で連続

確率分布を表す.

P (Ci|x) i番目のクラスの事後確率

d, di 特徴の次元,i番目のクラスの部分空間の次元

DL, D 学習データセット

DT テストデータセット

ε∗, ε(p, p) ベイズ誤り率

N , Nk 学習データ数,k 番目のクラスの学習データ数

N (x|μ, σ2), N (x|μ,Σ) 1次元正規分布関数,多次元正規分布関数

L(θ),L(θ) 確率モデルパラメータの尤度,対数尤度

μ, μ 平均値,平均ベクトル

σ2, Σ 分散,分散・共分散行列

E{}, Var{} 期待値,分散・共分散行列を得る操作

cov(), cor() 共分散,相関を得る操作

SB , SW , ST クラス間変動行列,クラス内変動行列,全変動行列

d(x, y), d̃(x, y) x と y の距離,超距離

E(w) w に関する評価関数

Lp(w), Ld(α) 不等式制約条件下の主問題,双対問題

T , t, T̃ 木,木のノード,終端ノードの集合

f(x; w), f(x;D) パラメータwをもつ関数,パラメータがデータセットDによって決まる関数

R,Rd 実数の集合,d次元実数空間

Page 10: 「はじめてのパターン認識」 サンプルページ · 本書の構成は以下のとおりである.第1章では,パターン認識 の ... 主成分分析と,部分空間法について解説する.第10章
Page 11: 「はじめてのパターン認識」 サンプルページ · 本書の構成は以下のとおりである.第1章では,パターン認識 の ... 主成分分析と,部分空間法について解説する.第10章

8

第2 章 識別規則と学習法の概要

券売機で 100円の硬貨を識別するためには,100円硬貨の特徴ベクトルと,100円

という識別クラスの対応関係を学習する必要がある.同じ 100円硬貨でも,真新しい

100円硬貨と使い古した 100円硬貨では,重さも透磁率もサイズも微妙に異なり,特

徴ベクトルに違いが生じる.そこで,いろいろな 100円硬貨をたくさん集めてきて,

微妙に異なるたくさんの特徴ベクトルを同じ 100円に対応づけることを学習する必要

がある.このようなデータを学習データという.

学習データを使って設計した券売機を世の中に出すと,学習データには含まれてい

なかったような 100円硬貨や,怪しげな 100円硬貨が使われる可能性がある.このよ

うな場合でも正しく識別することが要求される.このような識別機の能力を汎化能力

という.

本章では,識別規則と学習法の概要について解説した後,手元にある学習データを

用いて汎化能力を推定する方法について詳述する.

2.1 識別規則と学習法の分類

本節では,本書で解説する識別規則とその学習法を分類し,それらの概要について

紹介する.

2.1.1 識別規則の構成法

識別規則は,入力データ xからクラス Ci ∈ Ω = {C1, . . . , CK}への写像である.写像の実現方法は,識別規則によって,関数値の正負,ダミー変数表現,事後確率の

最大値,決定木の終端ノードなど様々である.

代表的な識別規則の構成法を,図 2.1に示す.

(a) 事後確率による方法:パターン空間に確率分布を仮定し,事後確率(3.1.1項

参照)が最大のクラスに分類する.ベイズの最大事後確率法が代表例である.

学習データから確率分布のパラメータを推定する必要があり,様々な手法が提

案されている.

(b) 距離による方法:入力ベクトル xと各クラスの代表ベクトルとの距離を計算

Page 12: 「はじめてのパターン認識」 サンプルページ · 本書の構成は以下のとおりである.第1章では,パターン認識 の ... 主成分分析と,部分空間法について解説する.第10章

2.1 識別規則と学習法の分類 9

図 2.1 代表的な識別規則の構成法

し,一番近い代表ベクトルのクラスに分類する.最近傍法が代表例である.

(c) 関数値による方法:関数 f(x)の正負,あるいは最大値でクラスを決める.パー

セプトロン型学習回路やサポートベクトルマシンがその代表例である.識別の

ために用いられる関数 f(x)を識別関数という.

(d) 決定木による方法:識別規則の真偽に応じて次の識別規則を順次適用し,決定

木(11.2節参照)の形でクラスを決める.学習データから決定木を自動的に

構成する手法が提案されている.

本書の目的は,これらの識別規則の基本的な考え方を理解していくことにある.

2.1.2 教師付き学習

識別規則は,入力データ(特徴ベクトル)からクラスへの写像を y = f(x)という

関数を用いて表現する.識別規則の学習は,この f()を学習データを用いて決めるこ

とである.写像の性質を決めるパラメータをwで表すことにする.たとえば,第 6章

で述べる 2クラス問題の線形識別関数の場合,識別規則は

y = f(x;w) = w1x1 + · · · + wdxd = wT x (2.1)

のように,パラメータwと入力ベクトル xの線形関数(内積)を用いて表現される.

Page 13: 「はじめてのパターン認識」 サンプルページ · 本書の構成は以下のとおりである.第1章では,パターン認識 の ... 主成分分析と,部分空間法について解説する.第10章

10 第 2 章 識別規則と学習法の概要

識別クラスは関数値 yの正負で決めることにする.学習の目的は,入力データが正し

いクラスに対応する関数値を出すように,パラメータwを調整することである.

例題 2.1 線形識別関数として,定数項 bがついた関数 f(x) = b + w1xがよく使われ

る.この関数は厳密な意味で線形かどうか答えよ.

解答 関数 f(x) が線形であるとは,重ね合わせの原理 f(ax) = af(x),f(x + y) =

f(x) + f(y)が成り立つ場合である.定数項がついた関数の場合は重ね合わせの原理が成

り立たないので,厳密な意味で線形ではない.このような関数をアフィン関数という.た

だし,f(x) = w0x0 + w1x1 のように,定数項も入力ベクトルの一つの要素 x0 から生成さ

れていると考えれば線形関数になるので,定数項が付いている場合も線形識別関数とよば

れている.定数項 bは x0 = 1とすれば,b = w0 として得られる(例題 6.2,6.3を参照).

学習するためには,入力データとそのクラスを指定したデータを対にした学習デー

タが必要となる.クラスを指定したデータを教師データといい,2クラスの場合は y

の正負に対応した値

t ∈ {−1,+1} (2.2)

で表す.クラス数が 3 以上ある場合は,ダミー変数表現を用いて,たとえば t =

(0, 1, 0, 0, 0, 0, 0, 0, 0, 0)T のような教師データにする.このような教師データの符号化

方式を,K 対 1符号化 (1-of-K coding)という.K はクラス数である.N 個の学習

データを区別するために下付きの添え字を用い,入力データと教師データの対を,

(xi, ti) (i = 1, . . . , N)

のように表す.学習に用いられるすべての対の集合を学習データセットといい,DLで

表す.

学習の目的は,学習データを正しく識別できるwを求めることである.w = F (DL)

のように,学習データセットの関数としてwを得る方法や,図 2.2に示すように学習

データセット中の学習データを一つずつ用いて,wを少しずつ修正していく方法など

がある.少しずつ修正する場合,正しく識別できるようになるためには,同じ学習デー

タを何度も使って学習する必要がある.たとえば,τ 回目の学習で i番目の学習データ

が使用される場合,その時点のパラメータw(τ)を用いて関数値 y(τ) = f(xi;w(τ))

を計算し,得られた y(τ)と教師データ ti の差が小さくなるようにw(τ)を修正する

ことで学習を進める.この差が小さくなったら学習を止め,学習に使用しなかったテ

ストデータセット(DT で表す)を用いて性能評価を行う.

Page 14: 「はじめてのパターン認識」 サンプルページ · 本書の構成は以下のとおりである.第1章では,パターン認識 の ... 主成分分析と,部分空間法について解説する.第10章

2.1 識別規則と学習法の分類 11

図 2.2 w を少しずつ修正していく方法

学習は学習データセットを用いて,識別関数の出力と教師データの誤差が小さく

なるようパラメータ wを調整することで行われる.調整の終わった識別関数は,

テストデータセットを用いて性能が評価される.

2.1.3 教師付き学習と線形回帰

ここまで紹介してきた学習法は,教師がいるので教師付き学習とよばれている.教

師は,入力が所属するクラスを {−1,+1}や {0, 1}などの 2値で指定する.

教師入力として 2値でなく,任意の関数値が与えられる場合は,識別関数は入力 x

に対して与えられた関数値を出力するように学習が行われる.そのためには,識別関

数 f(x)は与えられた関数値を近似できるだけの能力をもつ必要がある.この能力は

識別関数の複雑さに対応する.このような問題を関数近似(回帰)という.線形関数

で近似する場合は線形回帰とよばれ,経済などの分野で大活躍している.たとえば,

統計データからある月の平均降雨量と作物の収量の関係などを線形回帰で求めておけ

ば,その年の平均降雨量から収量を予測することができる.この場合,関数値として

与えられる作物の収量は被説明変数,関数の引数として与えられる平均降雨量は説明

変数とよばれる.回帰の問題はそれだけで重要な話題ではあるが,ほかに成書がたく

さんあるので,本書では識別問題を中心に扱うことにする†.

2.1.4 教師なし学習

教師がいない学習もある.この場合は,入力データ間の距離や類似度,統計的な性

質に基づいて,クラスを自動的に生成(クラスタリングという)することが主目的に

なる.これについては第 10章で解説する.教師のいない学習を教師なし学習あるい

は自己組織型学習という.最近では,一部のデータのみ教師をつけ,ほかは教師なしで

†統計的パターン認識の著名な教科書 [3] や [16] は,同じ学習アルゴリズムを回帰と識別の両方の側面から解説している.とくに,[3] はベイズ統計の立場で書かれた優れた教科書であり,邦訳も出ている.

Page 15: 「はじめてのパターン認識」 サンプルページ · 本書の構成は以下のとおりである.第1章では,パターン認識 の ... 主成分分析と,部分空間法について解説する.第10章

12 第 2 章 識別規則と学習法の概要

学習を行う形質導入学習 (transductive learning)という学習法も提案されている[19].

たとえば,Web上などに存在する大量のテキスト・画像・音楽データに,それらを分

類するための教師データを付与することはコストがかかる作業である.そこで,一部

のデータのみに教師を付与し,ほかのデータには共通した特徴などを手がかりに,教

師が付与されているデータから教師の形質を導入できれば,コストを下げることがで

きる.このような技術は,今後のパターン認識の発展にとってますます重要になるも

のと思われる.

2.2 汎化能力

学習とは,学習データに対する識別関数の出力値と教師データとの誤差が最小にな

るように,識別関数のパラメータを調整することである.しかし,学習で得られた識

別関数が学習データに含まれていない未知データに対してうまくはたらくという保証

はない.そこで,学習データから取り除いておいたテストデータを用いて性能評価を

行い,未知データに対する動作をテストデータに対する誤り確率という形で予測する

ことが行われている.未知のデータに対する識別能力を汎化能力といい,また,その

誤差を汎化誤差という.

2.2.1 学習データとテストデータの作り方

学習データセット DL とテストデータセット DT は,手元にあるデータを分割して

作ることになる.たとえば,図 2.3 のように,券売機を設計するために 10000 枚の

100円硬貨を集めてきて,学習データ用に 8000枚,テストデータ用に 2000枚使用す

るような状況を考えよう.DL は 8000枚の,DT は 2000枚の 100円硬貨の集合とな

図 2.3 データの分割

Page 16: 「はじめてのパターン認識」 サンプルページ · 本書の構成は以下のとおりである.第1章では,パターン認識 の ... 主成分分析と,部分空間法について解説する.第10章

2.2 汎化能力 13

る.100円硬貨を識別するために重さや透磁率など d個の特徴が用いられるものとす

れば,学習データセットは 8000個の,テストデータセットは 2000個の d次元特徴ベ

クトルで構成されることになる.それぞれの特徴ベクトルの d次元空間内での分布を

pL と pT で表すことにすれば,これらの分布から重さの平均値や分散などが計算でき

ることになる.DLの硬貨を使って設計し,DT の硬貨を使ってテストしたときの誤り

率を ε(pL, pT )で表すことにする.

ここでは,10000枚の 100円硬貨を集めてきたが,国内には約 100億枚の 100円硬

貨が流通している.これらすべての 100円硬貨の集合を母集団とよび,その d次元特

徴の分布を pで表し真の分布とよぶことにする.pL と pT は真の分布からランダムに

サンプルされたものであり,重さなど各特徴の平均値や分散が pと同じになるとは限

らない.このずれを偏り(バイアス)という.

真の誤り率 ε(p, p)は,真の分布 pに従う学習データを用いて設計し,真の分布 pに

従うテストデータを用いてテストしたときの誤り率を表す.

学習データを母集団からサンプルし(その特徴分布を pLで表す),テストにも同じデー

タを用いて測定した誤り率を再代入誤り率 (resubstitution error)といい,ε(pL, pL)

で表す.

例題 2.2 再代入誤り率が大きい場合,どのような対処法を考える必要があるか.

解答 学習データに対する誤りが多いので,識別機の能力が足りない.したがって,識

別機の能力を何らかの方法で上げる必要がある.たとえば,2.2.2項を参照.

手元にあるデータを学習用とテスト用に分割する代表的な方法には,次のようなも

のがある.

(1) ホールドアウト法(holdout法)図 2.4のように,手元のデータを二つに分割し,一方を学習に使い(pLで表す),も

う一方はテストのために取り置いておき(pT で表す),誤り率を推定するために使用

する.これをホールドアウト誤り率 (holdout error)といい,ε(pL, pT )で表す.

真の誤り率と再代入誤り率,ホールドアウト誤り率の間には,

EDL{ε(pL, pL)} ≤ ε(p, p) ≤ EDT

{ε(pL, pT )}

の関係が成り立つことが知られている[15].ここで,EDL{}は多くの学習データセット

DL を用いて設計し,同じデータで誤りを測定した再代入誤り率の期待値を表す.ま

Page 17: 「はじめてのパターン認識」 サンプルページ · 本書の構成は以下のとおりである.第1章では,パターン認識 の ... 主成分分析と,部分空間法について解説する.第10章

14 第 2 章 識別規則と学習法の概要

図 2.4 ホールドアウト法

た,EDT{}は一つの学習データセット pL を用いて設計した識別器を,多くのテスト

データセット DT でテストしたときの誤り率の期待値を表す.

ホールドアウト法は,有限のデータを学習用とテスト用に分割するのであるから,

学習用を多くすればテスト用が減り,学習精度はよくなるが性能評価の精度は悪くな

る.逆に,テスト用を多くすれば学習用が減少するので,学習そのものの精度が悪く

なることになる.したがって,手元のデータが大量にある場合を除いて,よい性能評

価を与えないという欠点がある.

(2) 交差確認法(cross validation法)ホールドアウト法の欠点を補うものとしてよく使用され,交差検証法,交差妥当化

法などともよばれている.図 2.5のように,手元の各クラスのデータをそれぞれm個

のグループに分割し,m − 1個のグループのデータを使って識別器を学習し,残りの

一つのグループのデータでテストを行う.これをm回繰り返し,それらの誤り率の平

均を性能予測値とする.i番目のグループを除いて学習し,i番目のグループでテスト

図 2.5 交差確認法

Page 18: 「はじめてのパターン認識」 サンプルページ · 本書の構成は以下のとおりである.第1章では,パターン認識 の ... 主成分分析と,部分空間法について解説する.第10章
Page 19: 「はじめてのパターン認識」 サンプルページ · 本書の構成は以下のとおりである.第1章では,パターン認識 の ... 主成分分析と,部分空間法について解説する.第10章

54

第5 章 k最近傍法(kNN法)

認識したい入力データとすべての学習データ(鋳型 (template) とよぶ)との距離

計算を行い,もっとも近い鋳型が所属するクラスに識別する方法を最近傍法(nearest

neighbor法,略してNN法)という.最近傍法は,鋳型が多ければきわめて精度のよ

い認識系を構成することができるが,計算時間はかかる.もっとも近い一つの鋳型の

クラスに識別する代わりに,もっとも近い k個の鋳型を選び,所属する鋳型の数がもっ

とも多いクラスに識別する方法を,k最近傍法(kNN法)という.kNN法は,投票型

kNN法という形で,パターン認識の分野で広く用いられている.

kNN法の理論的理解は進んでおり,たとえば,投票型 kNN法の誤り率とベイズ誤

り率は密接に関連していることなどが明らかにされている.kNN法は計算量が大きい

ことが最大の欠点であるが,その緩和策と近似最近傍探索について紹介する.

5.1 最近傍法とボロノイ境界

K 個のクラスを Ω = {C1, . . . , CK},i番目のクラスの学習データ数を N(i),その

集合を Si = {x(i)1 , . . . ,x

(i)N(i)}とする.最近傍法(NN法)では,入力データ xと各

学習データ x(i)j の類似度をユークリッド距離 d(x,x

(i)j ) =‖ x − x

(i)j ‖で計算するの

で,学習データのことを鋳型ともよぶ.識別規則は,

最近傍法の識別規則

識別クラス =

⎧⎪⎨⎪⎩arg min

id(x,x

(i)j ) min

i,jd(x,x

(i)j ) < tのとき

リジェクト mini,j

d(x,x(i)j ) ≥ tのとき

(5.1)

とする.tは,どの学習データとも距離が大きい場合にリジェクトするためのしきい

値である.

5.1.1 ボロノイ図

最近傍法の原理は,入力データにもっとも近い鋳型を見つけることである.これを

Page 20: 「はじめてのパターン認識」 サンプルページ · 本書の構成は以下のとおりである.第1章では,パターン認識 の ... 主成分分析と,部分空間法について解説する.第10章

5.1 最近傍法とボロノイ境界 55

図 5.1 鋳型の支配領域

データ A は鋳型 1 の支配領域に入っている.

鋳型の方から見ると,図 5.1のように各鋳型は隣接する鋳型と等距離にある境界で囲

まれた支配領域をもち,入力データが支配領域に入った鋳型がもっとも近い鋳型にな

る.この支配領域をボロノイ領域といい,その境界をボロノイ境界という.これらは

以下のように定義される.

鋳型の集合を S = {x1, . . . ,xN} (N ≥ 3)とする.ボロノイ境界は,xi,xj ∈ S か

ら等距離の点の集合

B(xi,xj) = {x|d(xi,x) = d(xj ,x)} (5.2)

である.これは,図 5.2に示すように,xiと xj を結んだ直線(法線ベクトルn方向)

の中心(平均ベクトル x̄)を通り,直交する超平面

(x̄ − x)T n = 0 (5.3)

となる.x̄ = (xi + xj)/2,n = xi − xj である.

この超平面は,d次元空間を xi を含む半空間

D(xi,xj) = {x|d(xi,x) < d(xj ,x)} (5.4)

と,xj を含む 半空間 D(xj ,xi)に二分割する.xi のボロノイ領域は,xiを含む半空

図 5.2 ボロノイ境界を形作る超平面

Page 21: 「はじめてのパターン認識」 サンプルページ · 本書の構成は以下のとおりである.第1章では,パターン認識 の ... 主成分分析と,部分空間法について解説する.第10章

56 第 5 章 k 最近傍法(kNN 法)

間の積集合

V R(xi, S) =⋂

xj∈S,j �=i

D(xi,xj) (5.5)

として定義される.定義から V R(xi, S) は開集合であるが,ボロノイ境界を含めた

閉包†1を V R(xi, S)で表す.鋳型集合 S のボロノイ図(ボロノイモザイクともよばれ

る)は,

V (S) =⋃

xi,xj∈S,i�=j

V R(xi, S) ∩ V R(xj , S) (5.6)

で定義される.2次元平面上の 10個の鋳型に関するボロノイ図の例を,図 5.3に示

す†2.

図 5.3 2 次元平面上のボロノイ図点線で示された境界線は,無限遠に続く境界を表している.

例題 5.1 x1 = (1, 0)T,x2 = (0, 1)T の場合のボロノイ境界を求めよ.

解答 x̄ =(

1

2,1

2

)T

, n = (1,−1)

となるので, (1

2− x,

1

2− y)

(1,−1)T =(

1

2− x)−(

1

2− y)

= 0

より,−x + y = 0となる.

5.1 最近傍法による手書き数字の認識

ETL1手書き数字データベース†3の画像を用いた最近傍法による認識実験を行った.図 5.4

に,手書き数字の一部とそれらの正規化画像を示す.原画像は 63× 64画素の 16レベルの階

調画像である.正規化画像は,文字の位置ずれを補正し,大きさをそろえ,16× 16画素に画

†1集合の閉包は集合とその境界の和集合である.†2 R の tripack パッケージにある voronoi.mosaic() 関数を用いた.†3 http://www.is.aist.go.jp/etlcdb/

Page 22: 「はじめてのパターン認識」 サンプルページ · 本書の構成は以下のとおりである.第1章では,パターン認識 の ... 主成分分析と,部分空間法について解説する.第10章

5.1 最近傍法とボロノイ境界 57

図 5.4 ETL1 の画像 図 5.5 最近傍法による認識結果

誤認識したテストデータ 62個すべてを

示している.

素数を削減したものである.画素数を削減すると,画像がギザギザになり位置ずれが目立つ

ので,ガウシアンフィルタをかけて画像を滑らかにし,位置ずれを目立たなくしている.

手書き数字データベースには,0から 9まで 10種類の数字データが 1445人分含まれてい

る.この中から各数字 1300個をランダムに選び,そのうちの各 650個を学習データ,残り

の 650個をテストデータとした.テストデータは必ず何かの数字に識別されるものとし,リ

ジェクトは考えていない.

テストデータに対して誤識別したすべての画像を図 5.5に示す.一番上の行には,本来数

字の 0と認識すべき画像のうち誤ったもの 2個が示されている.6500個のテストデータのう

ち,認識を誤ったデータは 62個で誤識別率は 0.95%であった.最近傍法は鋳型照合なので,

「4」の横線の位置のように,位置ずれがあると類似度が下がり誤りが多くなる.識別規則の

特性を理解して使用することが重要である.

5.1.2 鋳型の数と識別性能

最近傍法による認識率は,学習データ数(鋳型の数=M)が多ければ多いほどよくな

る.手書き数字認識でこのことを確かめてみよう.各クラス 1300個のデータからラ

ンダムにM 個選び,一つ抜き法で汎化誤差を推定した†.ランダムにM 個選んで汎化

誤差を推定することを 20回繰り返した.それらの平均を図 5.6に示す.学習データ

数が 100個の場合 2.5%あった誤り率が,すべての学習データを用いることで 0.7%ま

†本書では,kNN の計算には,R の class パッケージにある関数 knn() を用いた.たとえば,a を学習データ,b をテストデータ,c を学習データのクラスとし,knn(a,b,c,k=i) のように実行すると,iNN によるテストデータの識別クラスが関数値として得られる.ここでは,k = 1 として最近傍法を計算している.次節で説明するように,k が偶数でタイが生じた場合は,ランダムにどちらかのクラスが選択される.また,関数 knn.cv(a,c,k=i) は,学習データとそのクラスを与えることで,一つ抜き法による誤り率を計算する.

Page 23: 「はじめてのパターン認識」 サンプルページ · 本書の構成は以下のとおりである.第1章では,パターン認識 の ... 主成分分析と,部分空間法について解説する.第10章

58 第 5 章 k 最近傍法(kNN 法)

図 5.6 最近傍法の誤り率に対する学習データ数の影響

で単調に低下していることがわかる.

5.2 kNN法

最近傍の鋳型を k個とってきて,それらがもっとも多く所属するクラスに識別する

方法を k最近傍法(kNN法)という.クラスの選択は投票により決められるため,投

票型 kNN法ともよばれる.たとえば,図 5.7のような場合を考える.k = 3のとき,

もっとも近い 3個の鋳型のうち,クラス 1に所属する数(=クラス 1の得票数)は 2,

クラス 2に所属する数(=クラス 2の得票数)は 1なので,データはクラス 1に識別

される.k = 4のときは同数(タイ),k = 8では逆にクラス 2に分類される.

図 5.7 kNN 法

鋳型の集合を TN = {x1, . . . ,xN},それらが所属するクラスの集合を Ω =

{C1, . . . , CK},i 番目の鋳型が所属するクラスを ωi ∈ Ω とする.入力 x にもっと

も近い k 個の鋳型の集合を k(x) = {xi1 , . . . ,xik}とし,これらの鋳型のうちクラス

j に属する鋳型の数を kj とする.k = k1 + · · ·+ kK が成り立っている.kNN法の識

別規則は,

Page 24: 「はじめてのパターン認識」 サンプルページ · 本書の構成は以下のとおりである.第1章では,パターン認識 の ... 主成分分析と,部分空間法について解説する.第10章

5.2 kNN 法 59

kNN法の識別規則

識別クラス =

⎧⎨⎩j {kj} = max{k1, . . . , kK}のとき

リジェクト {ki, . . . , kj} = max{k1, . . . , kK}のとき(5.7)

となる.上記の規則では,得票数にタイがある場合はリジェクトとしているが,ラン

ダムにどれかのクラスを識別クラスにするような規則でもよい.

最近傍法の識別境界はボロノイ境界になることを,図 5.2に示した.最近傍法と kNN

法の比較を,2次元の正規乱数で生成した 3クラスのシミュレーションデータの具体

例で確認してみよう.図 5.8(a)に最近傍法(k = 1)によるボロノイ境界を,図 (b)

に k = 11にした場合の識別境界を示す†.最近傍法の場合は,他クラスの鋳型に囲ま

れた孤立点でも,孤立した識別境界が見られる.k = 11になると,広い範囲の鋳型か

らの情報が入ってくるので,孤立した識別境界はなくなり,誤りを許容した滑らかな

境界となっている.ただし,あまり kを大きくすると,入力データから離れた鋳型ま

で投票の中に入ってくるので,識別精度が下がることになる.

図 5.8 最近傍法によるボロノイ境界と 11NN による識別境界

5.2 最適な最近傍数 k を求める

識別に最適な最近傍数 kは,kの値を変えながら汎化誤差が最小となる値を求めればよい.

図 5.9に,kの違いによる誤り率の変化を示す.図 (a)が ETL1手書き数字データの場合,図

(b)が 4.2.2項で紹介したピマ・インディアンデータの場合である.一つ抜き法とホールドア

ウト法の 2種類で誤り率を求めている.kが奇数の場合のみを求めているので,タイは含まれ

ていない.手書き数字の場合,どちらの誤り率も,1NNでもっとも低い結果が得られている.

† k = 1 以外はボロノイ境界にならない.

Page 25: 「はじめてのパターン認識」 サンプルページ · 本書の構成は以下のとおりである.第1章では,パターン認識 の ... 主成分分析と,部分空間法について解説する.第10章

114

第8 章 サポートベクトルマシン

サポートベクトルマシンは,現在もっとも広く利用されているパターン認識学習ア

ルゴリズムの一つで,最大マージンを実現する 2クラス問題の線形識別関数構成法で

ある.マージン最大化は,学習データによって与えられた不等式制約条件下で最適化

問題を解くことにより得られる.線形分離不可能な場合も,スラック変数の導入によ

り,誤り最小の線形識別関数を得ることができる.

線形分離不可能な場合のさらによい対処法は,非線形特徴写像により高次元非線形

特徴空間に写像し,線形分離可能にすることである.問題は,高次元空間内での内積

計算にある.カーネルトリックを用いると,元の次元の空間内での内積計算によって,

高次元非線形空間内での内積計算が行えることを示す.

サポートベクトルマシンには様々な変種がある.その中から,ν-サポートベクトル

マシンと 1クラスサポートベクトルマシンを紹介する.

8.1 サポートベクトルマシンの導出

サポートベクトルマシン†(support vector machine,以下 SVMと略記)は,式 (7.2)

で定義したクラス間マージンから導かれる,最大マージンDmax を実現する 2クラス

線形識別関数の学習法である.ただし,第 7章とは異なり,SVMでは標準座標系を用

いて考える.多クラス問題は,(K − 1)個の一対他 SVMで実現することが多い.

8.1.1 最適識別超平面

標準座標系を考え,クラスラベル付き学習データの集合を DL = {(ti,xi)} (i =

1, . . . , N)とする.ti = {−1,+1}は教師データであり,学習データ xi ∈ Rd がどち

らのクラスに属するのかを指定する.

図 8.1のように,線形識別関数のマージンを κとすれば,すべての学習データで

|wT xi + b| ≥ κ (8.1)

† Vapnik らが提案した学習アルゴリズム[9].サポートベクターマシンともよばれている.vector の発音はベクターに近いが,一般的にはベクトルと和訳されるので,ここではサポートベクトルマシンとよぶことにする.

Page 26: 「はじめてのパターン認識」 サンプルページ · 本書の構成は以下のとおりである.第1章では,パターン認識 の ... 主成分分析と,部分空間法について解説する.第10章

8.1 サポートベクトルマシンの導出 115

が成り立つ.係数ベクトルとバイアス項をマージン κで正規化したものをあらためて

wと bとおけば,線形識別関数は,

ti = +1の場合 wT xi + b ≥ +1

ti = −1の場合 wT xi + b ≤ −1(8.2)

となる.この場合分けは,

ti(wT xi + b

)≥ 1 (8.3)

のようにまとめることができる.

クラス間マージンは,各クラスのデータをwの方向へ射影した長さの差の最小値

ρ(w, b) = minx∈Cy=+1

wT x

‖w‖ − maxx∈Cy=−1

wT x

‖w‖ =1 − b

‖w‖ − −1 − b

‖w‖ =2

‖w‖ (8.4)

で与えられる.最適な超平面の式をwT0 x + b0 = 0とすれば,この超平面は最大クラ

ス間マージン

ρ(w0, b0) = maxw

ρ(w, b) (8.5)

を与える.最大マージン Dmax は最大クラス間マージンの 1/2 で与えられる.した

がって,最適識別超平面は,ti(wT xi + b

)≥ 1 (i = 1, · · · , N)の制約の下で,wの

ノルムを最小にする解

w0 = min ‖w‖ (8.6)

として求めることができる.

式 (8.3)の制約の下で,ノルム最小の係数ベクトルを求める問題は,7.3.3項で説明

した結合係数に対する正則化項と同じはたらきをするので,SVMでは,最初から結合

係数があまり大きくならないような制約が入った定式化をしていることになる.

図 8.1 サポートベクトルマシンによるマージン最大化の原理

Page 27: 「はじめてのパターン認識」 サンプルページ · 本書の構成は以下のとおりである.第1章では,パターン認識 の ... 主成分分析と,部分空間法について解説する.第10章

116 第 8 章 サポートベクトルマシン

8.1.2 KKT条件

マージン最大の最適識別超平面は,

主問題[1]

評価関数(最小化): Lp(w) =12wT w

不等式制約条件: ti(wT xi + b

)≥ 1

で定義される不等式制約条件最適化問題の主問題†1を解くことで得られる.この問題

は,次のラグランジュ関数として定式化される.

L̃p(w, b,α) =12wT w −

N∑i=1

αi

(ti(wT xi + b

)− 1)

(8.7)

ここで,α = (α1, · · · , αN )T (αi ≥ 0)である.αi をラグランジュ未定乗数という.

この最適化問題の解w0 と b0 は,以下の KKT(Karush-Kuhn-Tucker)条件†2

(1)∂L̃p(w, b,α)

∂w

∣∣∣∣∣w=w0

= w0 −N∑

i=1

αitixi = 0

(2)∂L̃p(w, b,α)

∂b=

N∑i=1

αiti = 0

(3) ti(wT xi + b

)− 1 ≥ 0

(4) αi ≥ 0

(5) αi

(ti(wT xi + b

)− 1)

= 0

を満たす解として得られる.とくに,最後の条件 (5)は相補性条件とよばれ,不等式

制約条件に必ず付随してその不等式制約条件が有効か否かの判断を与える.これは,

次のような意味をもっている.

制約条件 (3) は,データ x の数だけ存在する.しかし,マージンは識別超平面に

もっとも近いデータによってのみ決まることから,有効な制約条件もそれらのデータ

によるものだけである.条件 (5)において,不等式制約条件が ti(wT xi + b

)− 1 > 0

を満たす場合,相補性条件から αi = 0でなければならなくなり,この制約は有効でな

くなる.また,ti(wT xi + b

)− 1 = 0の場合は αi > 0 となれるので,制約が有効に

なる.マージンを決めるデータは ti(wT xi + b

)− 1 = 0を満たすので,条件 (5)は

†1主問題に対して双対問題が導かれる.評価関数の係数 1/2 は,2 乗の項の微分で出てくる 2 を消去するためのものである.

†2 KKT 条件の導出については,たとえば文献 [34] や [48] などが参考になる.

Page 28: 「はじめてのパターン認識」 サンプルページ · 本書の構成は以下のとおりである.第1章では,パターン認識 の ... 主成分分析と,部分空間法について解説する.第10章

8.1 サポートベクトルマシンの導出 117

マージンを決めるデータによる制約のみを有効化しているわけである.

KKT条件 (1)より,最適解は

w0 =N∑

i=1

αitixi (8.8)

と表されるので,最適解は有効な不等式制約条件をもつ学習データの線形結合となる.

この最適解と,KKT条件 (2)を式 (8.7)に代入すれば,ラグランジュ未定乗数のみの

関数

Ld (α) =12wT

0 w0 −N∑

i=1

αitiwT0 xi − b

N∑i=1

αiti +N∑

i=1

αi

=N∑

i=1

αi −12wT

0 w0 =N∑

i=1

αi −12

N∑i=1

N∑j=1

αiαjtitjxTi xj (8.9)

が得られる.

KKT条件 (1)により,最適解がw0 =∑N

i=1 αitixi のように学習データの線形結

合で表現されることから,係数 αi を求める問題に置き換えることができる.最適な

αi は,式 (8.9)の Ld (α)を最大にする αにより得られる.これを主問題に対する双

対問題という.

N 個の 1 を並べたベクトルを 1 = (1, . . . , 1)T,学習データで作られた行列を

H = (Hij = titjxTi xj),教師データベクトルを t = (t1, . . . , tN )T とすれば,

双対問題[1]

評価関数(最大化): Ld(α) = αT 1 − 12αT Hα

制約条件: αT t = 0

と表現される.したがって,双対問題のラグランジュ関数 L̃d(α)は,ラグランジュ未

定乗数を β とすれば,

L̃d(α, β) = αT 1 − 12αT Hα − βαT t (8.10)

となる.

KKT条件 (5)より,αi

(ti(wT xi + b

)− 1)

= 0がすべての i = 1, . . . , N で成り

立てばよい.したがって,

Page 29: 「はじめてのパターン認識」 サンプルページ · 本書の構成は以下のとおりである.第1章では,パターン認識 の ... 主成分分析と,部分空間法について解説する.第10章

118 第 8 章 サポートベクトルマシン

図 8.2 最適識別超平面とサポートベクトル⎧⎨⎩ti(wT xi + b

)− 1 = 0では αi > 0

ti(wT xi + b

)− 1 �= 0では αi = 0

(8.11)

となる.αi > 0となる xi をサポートベクトルといい,最適識別超平面を構成する要

素となる.図 8.2に,最適識別超平面とサポートベクトルの関係を示す.

最適なバイアス b0 は,サポートベクトルの一つ xs を用いて,

ts(wT

0 xs + b0

)− 1 = 0

を解いて求めるか,それらの平均をとればよい.

ラグランジュ乗数の最適解を α̃ = (α̃1, . . . , α̃N )T とすれば,

wT0 w0 =

N∑i=1

α̃itixTi w0 =

N∑i=1

α̃i (1 − tib0) =N∑

i=1

α̃i − b0

N∑i=1

α̃iti =N∑

i=1

α̃i

となるので,最大マージンは,

Dmax =1

‖w0‖=

1√wT

0 w0

=1√N∑

i=1

α̃i

(8.12)

となる†.

例題 8.1 評価関数 f(x) = x2 を最小にする不等式制約条件最適化問題で,g1(x) =

x − 2 ≤ 0 と g2(x) = x − 3 ≤ 0 の二つの制約があったとき,有効な制約はどちらにな

るか.

解答 x = 2と x = 3が解の候補であるが,g1(2) = 0,g2(2) < 0なので,g1(x)が有

† SVM の最適化問題を実際に計算機で解く場合には,SMO (sequential minimal optimization) とよばれる高速なアルゴリズムが使用されている.

Page 30: 「はじめてのパターン認識」 サンプルページ · 本書の構成は以下のとおりである.第1章では,パターン認識 の ... 主成分分析と,部分空間法について解説する.第10章

8.2 線形分離可能でない場合への拡張 119

効な制約となり,g2(x)は有効でない制約となる.x = 3は g1(3) > 0となり,制約条件

を満たさない.

8.2 線形分離可能でない場合への拡張

線形分離可能でない場合,制約条件をすべて満たす解は求まらない.このような場

合は,図 8.3に示すように,次のような変数 ξi を導入し,

ti(wT xi + b

)− 1 + ξi ≥ 0 (8.13)⎧⎪⎪⎪⎨⎪⎪⎪⎩

ξi = 0 (マージン内で正しく識別できる場合)

0 < ξi ≤ 1 (マージン境界を越えるが正しく識別できる場合)

ξi > 1 (識別境界を越えて誤識別される場合)

とすると,制約条件を満たすことができる.変数 ξi をスラック変数†とよび,このよ

うな手法をソフトマージン識別器という.ξi は

ξi = max[0, 1 − ti(wT xi + b

)] = f+

(1 − ti

(wT xi + b

))(8.14)

のように表現することもできる.f+(x)は,

f+(x) =

⎧⎨⎩x (x > 0 の場合)

0 (それ以外の場合)(8.15)

図 8.3 線形分離可能でない場合へのスラック変数 ξi による拡張

学習データが識別境界は越えないがマージン境界を越えている場合 (0 < ξi ≤ 1)

と,識別境界を越えている場合 (ξi > 1).

†スラック変数は識別関数を求める学習時のみに使用するものであり,認識時には使わない.認識時には,求めた係数 w0 とバイアス b0 を用いて,識別関数f(x) = wT

0 x + b0の正負でクラスを決める.ξi > 1 となる学習データが再代入誤りとなる.

Page 31: 「はじめてのパターン認識」 サンプルページ · 本書の構成は以下のとおりである.第1章では,パターン認識 の ... 主成分分析と,部分空間法について解説する.第10章

著 者 略 歴平井 有三(ひらい・ゆうぞう)

1970 年 3 月 慶應義塾大学工学部電気工学科卒業1975 年 3 月 慶應義塾大学大学院工学研究科電気工学専攻博士課程修了1975 年 4 月 富士通株式会社1978 年 4 月 筑波大学助手(電子・情報工学系)1981 年 4 月 筑波大学講師(電子・情報工学系)1985 年 10 月 筑波大学助教授(電子・情報工学系)1992 年 7 月 筑波大学教授(電子・情報工学系)2012 年 4 月 筑波大学名誉教授

現在に至る工学博士

編集担当 富井 晃(森北出版)編集責任 石田昇司(森北出版)組 版 ウルス印 刷 エーヴィスシステムズ製 本 ブックアート

はじめてのパターン認識 C© 平井有三 2012

2012 年 7月 24日 第 1版第 1刷発行 【本書の無断転載を禁ず】

著 者 平井有三発 行 者 森北博巳発 行 所 森北出版株式会社

東京都千代田区富士見 1–4–11(〒102–0071)電話 03–3265–8341/ FAX 03–3264–8709

http://www.morikita.co.jp/

日本書籍出版協会・自然科学書協会・工学書協会 会員<(社)出版者著作権管理機構 委託出版物>

落丁・乱丁本はお取替えいたします.

Printed in Japan/ISBN978–4–627–84971–6