Tom_Brown 6117
集合
集合の基本
集合とは、何らかの要素を集めた塊のようなものです。例えば、食べ物という集合の中には米やパン、うどんなどの要素が入ります。
通常は集合を大文字で、その要素を小文字で表現することが多いです。
などと表現した場合、要素が集合
に属していることを表します。
のようなイメージを持てばいいでしょう。
具体的に集合の要素を書き下したい場合は、以下のような表記になります。
ところで、うどんは食べ物の中でも「麺類」という集合にも属していると考えられます。麺類には他にそばやラーメンがありますが、麺類という集合を考えた時には
のように表記して、集合が他の集合に含まれていることを表現することも出来ます。
例えば、
などとなっている場合には、食べ物の要素の中に麺類の要素も完全に含まれているようなケースが、これに該当します。
また、
などとなっている場合に、これらに共通する要素を表す場合は
両方の集合の要素を全て網羅する場合は
などの記号を使います。
集合の記号まとめ
は集合
の要素である。
集合
は集合
に含まれる(真部分集合である)。
集合
は集合
に含まれる(部分集合である)。
集合
と集合
の和集合(全ての要素を網羅した集合)。
集合
と集合
の積集合(共通する要素を選出した集合)。
集合
と集合
は等しい(要素が完全に同じ)。
集合
に含まれており、集合
に含まれていない要素の集合(差集合)。
他にもありますが、それほどたくさん覚えておく必要はないでしょう。
写像
写像の概念
写像は名前が仰々しいですが、集合から集合への変換のことを言います。写像が集合
から集合
へ変換する役割を担っている場合
などと表現します。
例えば、集合に対して、彼らの年齢を要素にした集合
への写像
を考えましょう。具体的に各要素に写像
を使ってみると
などと年齢が表示されるイメージです。(写像を要素に対して具体的に使う場合は、棒付き矢印が用いられます)
これをの形で表記するならば
となります。集合から集合の写像を考えた時、基本的に要素の順番というのは順不同となります。左から右へ対応する要素が過不足無く含まれていれば問題ありません。
実際にの要素が、具体的に
のどの要素に写像されるのかを表記するために
などという表記があると考えればいいでしょう。集合と写像は非常に抽象的な概念で、ほとんど具体的な制限が掛かっていない論理体系です。従って、近代的な数学の基礎となっています。
逆写像
今という写像を考えましたが、これとは逆に
という写像を作って、
と
を両方作用させることで自分自身に戻すことができるでしょうか(そのような
は存在するでしょうか)。
実をいうとこれはケースバイケースということになってきます。
先ほど見た名前から年齢への写像に関しては、逆写像はありません。
説明しませんでしたが、写像の定義は
集合の各要素に対して、それぞれ集合
の要素をただ1つ指定する規則
を写像
と表記する
というものです。
の場合は、下記の図のように写像が行われることになります。
被りがありますが、「次郎」と言われたらは「23」と要素をただ1つ指定できますし、「健太」と言われても「23」とただ1つの要素を指定できます。ですからこれは問題ありません。
すなわち、の要素を1つ考えたら、
のどの要素に移すかが直ちに決まらなければならないのです。
これがの要素から
の要素に移ろうと思うと、ただ1つに直ちに決まらなくなります。図を見れば明らかでしょう。
の要素である「23」を指定した場合に、
の要素をただ1つ指定することは出来ません。「次郎」と「健太」が候補に挙がってしまいます。従って、
なる写像は存在しないのです。
ではどんなときに逆写像を考えることができるのでしょうか。
非常に単純な話です。集合の要素の数が同じであって、要素が1対1に対応している時だけです。どちらか一方の要素が少ない場合は、少ない方から多い方へ線を結ぶときに必ず選択肢が1つに定まらなくなります。
今回の場合、集合から健太を除いた場合を考えれば、上手く逆写像が得られることになります。
ここまで説明すると分かるかもしれませんが、「写像」というのは「集合」が準備されて初めて議論できるものです。すなわち、「集合の上に写像が定義される」のです。単に「写像」だけがそこにポンと存在することはありません。
全単射・単射・全射
単射
単射とは以下の図のような写像です。
の要素を1つ指定すると、
の要素が1つに定まります(写像の定義)。しかも、
の要素が決まった時に、被りが一切ありません。単射とは写像先の集合
で被りが無いことを意味しています。しかし、
の要素は、選ばれないこともあります。
から写像されてきた結果、
にはあまり物の要素が出てきてしまうのです。
結果的に逆写像は存在しません。なぜなら、の要素を選んだ時に
の要素に映ることが出来ない場合があるためです。(今回の場合
が問題となる)
全射
全射とは以下の図のような写像です。
の要素を1つ指定すると、
の要素が1つ決まります(写像の定義)。しかし、被りもあります。これは先程、人名から年齢への写像を見た例と同じです。全射とは写像先の集合
の要素が全て選ばれる機会を持っていることを表しています。
先ほど見たように逆写像は存在しません。から
の要素を1つ決めることが出来ないからです。
全単射
全単射とは以下の図のような写像です。
の要素を1つ指定すると
の要素がただ1つに定まり、かつ
の要素全てに選ば得れる機会が存在します。このケースでは
と
の要素の数が同じで、線が一対一に対応しているため、必ず逆写像も存在します(矢印を反転するだけ)。
そして逆写像が存在するのは、全単射に限ります。
全射でも単射でもない写像
全射でも単射でも無い写像も存在します。
の要素を指定すると、
のどの要素に行けばいいかが決まります。しかし被りもある上に、余り物も存在します。従って全射でも単射でもありませんが、写像としての資格は持っています。
このように見ていくと集合の与え方で写像が定義されることがハッキリと理解できるでしょう。
写像の具体例:確率
確率変数
「確率変数」という名前でありながら、これも写像の例だと捉えることが出来ます。
コインを投げた場合、集合の要素のいずれかが発生します。この際に、数値でわかりやすくしておくために、集合
というものを準備しておいて、写像をして考えてしまうことが多いのではないでしょうか。
つまり確率変数は具体的な現実の事象を、予め準備しておいた数値の集合へ写像してくれるものだと考えることができます。しかし、大抵の場合は一度確率変数に対して数値への写像を行ったあとは、ずっと写像先での集合
を使って話をすることのほうが多いので、意識されることはほとんどありません。
具体的には、自体を写像先の集合
と同一視してしまい、
(背後には裏、表という事象から写像されたことが隠されている)
として、その要素を小文字で書くことが多いでしょう。(例えばサイコロの目のような直接数字であるようなケースは写像を必要としないこともあるので、実現値を要素に持つ集合
を最初から考えてしまったほうが便利なケースも多い)
確率密度関数
ガウス分布
上記の話の続きとして、確率密度関数について述べます。確率密度関数も列記とした写像です。「関数」は全て写像だと考えていいでしょう(というより分野が異なるだけで定義は同じ)。確率密度関数と言えば、最も馴染み深いのは
このガウス分布かもしれません。の値を入力すると、値域
の値を返してきます。この帰ってきた値を、
が発生する確率だと捉えるわけです。もちろん
というのは確率変数
の要素の1つであり、そしてこのケースでは
]という集合を扱っていることになります。(
はガウス分布のパラメータです)
ベルヌーイ分布
コイン投げで使うベルヌーイ分布の場合は、
集合から集合
への写像だと考えることになります(
はベルヌーイ分布のパラメータ)。
両分布の写像としての性質
両方の確率分布(写像)に共通して言えることですが、これは単射でも全射でもない可能性があります。
まず、集合]が写像先であり、ガウス分布に関しては
ということは起こりえません。ベルヌーイ分布も、
ならばありえますが、そのようなものを考えるメリットは1つも無いため、全射はありえないということになります。
更にベルヌーイ分布に関してである場合には、
で
でもあるため、単射ではなくなります。ガウス分布の場合は、対称性から、同じ確率が出力される値が必ず存在するので単射はありえません。
従って、ここでも写像先の集合のとり方で写像としての性質が変わってきます。
ベルヌーイ分布の場合、パラメータが既知であれば、
とでき、かつ
であれば全単射になります。(確率を指定すれば、確率変数の集合の要素を指定できる)
写像の具体例:線形代数
線形代数の基本
線形代数では写像という言葉は頻出です。行列と言うのは、端的に述べれば空間から空間への写像(の一種)であるからです。行列という写像は、空間上の点を要素に持つ集合の上に定義されています。
空間上の点を要素にする集合というのは、言い換えればベクトルを要素に持つ集合ということです。次元空間では
などが要素になります(実際には書き下せるものではなく、要素が無限に存在しますが)。
一般に次元空間のことを
と表します。これを
次元空間の点(あるいはベクトル)を要素に持つ集合と見るわけです。例えば以下のような表記を見たことがあるのではないでしょうか。
これは、ベクトルは3次元であるということを意味しますが、細かく言えば「3次元空間という集合の要素である」ということです。
行列と写像
行列による写像
行
列の行列
を考えましょう(これも
などと表記したりする)。
この行列は(基本的には)
という写像になります。すなわち
次元空間から
次元空間への写像になっています。具体的に要素であるベクトルを意識すれば、ベクトルの次元が
となることを意味します。(行列を左から掛ける場合の話)
例えばを考えましょう。するとこの写像は以下の図のように表現することが出来ます。
3次元空間上の点はそれぞれ2次元の空間上に移されます。
逆写像と逆行列
逆行列は正方行列(つまり同じ次元から同じ次元への変換)にしか存在しません。それはなぜでしょうか。非常に単純です。逆行列というのは「逆写像」のことであり、次元の異なる空間上では要素の数が異なるからです。
要素の数が異なるというだけで逆写像は作れなくなりました。
3次元空間をとするならば、2次元空間は
みたいなものです。3番目の要素がごっそり抜けているわけです。言わば2次元空間は3次元空間の部分集合なわけです。従って、3次元空間から2次元空間への写像は、恐らく被りを持つので単射にはなりません(しかし全射にはなるでしょう)。この時点で全単射ではないので当然、逆写像を作ることもできなくなります。
擬似逆行列
全く同じ集合に戻すような逆写像が見つからなくても、そこそこ似た集合に戻すことならばできるかもしれません。このとき「似ている」ということを測るためにはそのための概念が必要です。通常はユークリッド距離が用いられます。
要素を
で写像し
としたときに、それっぽい
で
を写像して、戻ってきた要素
が、元々の要素
となるべく近くなるように
を構成しようと言うことです。
赤の矢印で写像した後、緑や黄色の矢印で写像してみて、上手く元の位置に戻ってくる写像を採用するということになります(最小二乗法の形を取る。ただしこれは本当はただの結果論である)。この方法で得られる行列を擬似逆行列と呼び、正方行列以外の行列にも定義することができるようになります。
擬似逆行列は機械学習でも登場シーンの多い重要な概念です。
最後に
機械学習での写像
突き詰めると、機械学習(特に教師あり学習)とは訓練データ集合に対してラベルデータ集合
があった場合に、上手いこと
という写像を構築することに相当します。
そこで擬似的にという写像を適当に作っておいて、
と
がなるべく近づくように
を調整していくのが学習というわけです。
確率的なモデルの場合、直接ラベル集合への写像を獲得するのではなく、そのラベルで確率を出力するように写像を構築します(すなわち確率密度関数の形で写像を仮定しておく)。そうしておいて、実際にラベルを出力するのは確率を見た後に、確率最大のラベルを選んだり、あるいはどのラベルの確率も低かった場合は保留するなどの追加措置を取ります。
いずれにしても、機械学習は、写像を仮定し、パラメータ
を準備して、いろいろ調整していくというものです。
学習における損失関数
損失関数の意義
学習においては、
訓練データ集合
ラベルデータ集合
擬似的な写像
を準備しておいて、と[texT]が近づくように写像
を調整しなければなりません。その際、近づいているか否かを測るために用いられるのが損失関数です。損失関数は、
と
の距離を測る役割をしており、これにより
を上手く調整する手がかりを得られます。
確率分布に対する損失関数
機械学習ではと
の距離を近づけてしまうことで、写像を上手く調整するというのが基本的なスタンスです。特に分類問題に置いては、識別関数と呼ばれる直接ラベルを出力するタイプの写像を考える場合に最も効果的です。
一方で写像として確率分布を考え、出力はあくまで確率であって、実際の分類はもう一段階踏む(すなわちラベルと直接距離を測れない)場合は、少し工夫が必要になります。
今調整しようとしているのはあくまで写像の方であって、出力は
はその写像の調整の賜物です。そして
が直接
と比較するのが難しいという状況において、上手く
を調整できる損失関数を与えるのはそれなりに複雑な話です。
考えなおせば上手いを見つけるというのは、写像
の集合
を考え、この
の中から最も使える
を選びたいというふうに捉えることもできます。そうであれば写像
と真の写像
との距離を上手く測ることが重要になるわけです。
ここでは写像とは確率分布のことです。ならば、真の確率分布と適当な確率分布の類似度を測り、これを損失関数にすれば良いということになります。この手の議論は情報幾何学で行われています。
あるいは確率分布の最尤推定によるフィッティング考えると、自然と損失関数に相当する(負の対数)尤度が得られます。
機械学習の定式化
機械学習の定式化
入力データの集合を
とする。
ラベルデータの集合を
とする。
入力データとラベルデータの組の集合を
とする。
入力データからラベルデータへの写像をとする。
写像の集合を
とする。
と
の剥離を損失関数
とする。
学習アルゴリズムをとする。
損失関数を最小化するような
を、
を引数に
の中から見つけ出すのが学習アルゴリズム
であるというわけです。
実際の動き
実際には、集合から集合
への適当な写像
を初期値として仮定します。この際、当然のことながら
となってはいるものの、実際には入力データから正しいラベル
に全ての要素が写ってくれるとは限りません(単にランダムに
が選ばれるに過ぎない)。
具体的な入力データの写像
と、それに対応する
との剥離を損失関数
で定義し、
から
を最小とする写像
を
から見つけるのが機械学習アルゴリズム
です。
は具体的には
の形をしており、
を調整することで
を変えていきます。従って、写像
は実際には
の集合
からどのような要素を取るかによって決定されます。
機械学習の重要なポイント
1.写像の集合
をどのように準備するか
これが例えばサポートベクターマシンであったりニューラルネットワークであったりしてきます。基本的にニューラルネットワークもサポートベクターマシンもを非常に大きく取ります。ニューラルネットワークはユニットを増加させることによって、サポートベクターマシンはカーネル法を用いることによってこれを実現します。
2.損失関数をどうするか
これはから良い
を探す際の指針となります。回帰、分類のいずれも複数の損失関数が提案されています。損失関数をどのように設計するかによって、意外と学習の結果は変わるものです。
3.学習アルゴリズムをどうするか
ニューラルネットワークの場合は勾配法が用いられ、勾配の計算には誤差逆伝搬法(後方自動微分)が用いられます。サポートベクターマシンは損失関数が凸関数になるため、速さを追求したアルゴリズムが求められます。
ニューラルネットワークでは損失関数が凸でないため、勾配法で得られた勾配をあれこれ加工して、上手く最適解に素早く落ち着くような工夫がなされています。
4.データ集合をどうやって準備するか
学習アルゴリズムが
であることを忘れてはなりません。すなわち学習データ集合の準備次第で、得られる
が変わるということになるのです。そして実用上ここが非常に重要なポイントになるということは、強調しすぎるということはありません。
ニューラルネットにおける発展的問題点
学習アルゴリズムは多くの場合はから
への写像です。そして
のどの要素に落ち着くかで、
からどの
が選ばれるか具体的に決まってきます。
ここで嫌な問題が浮上します。実は、(特にニューラルネットでは)と
は一対一に対応しません。これが何を意味するのかというと、
から
を選ぶことと
から
を選ぶことが上手く対応しているとは言えなくなるのです(具体的には、異なる
と
が全く同じ
を示す場合がある)。
このような被りは、ユニットの数が増えるほど顕著です。しかし、これはさほど問題ではありません。パラメータをベクトルと見た空間上で見た際には、この被りは対称性を有しており、明らかであるためです。
もう1つの問題は(恐らく)多層化することから現れます。対称性とは縁が遠く、パラメータ空間上で連続的にが一切変化しない領域が生まれます。この領域にパラメータが差し掛かった時点で学習は停滞します(勾配法では勾配が0になると学習が止まる。
が変化しないということは損失関数
も変化しないということである)。
これを解決するためにモーメンタム法やAdamなどが考案され、そこそこ成果を出しているが、実際には本質的な解決であるとは言い難いです。
本当に獲得したいから見れば、
に不要な被りがあるわけで、この被っている部分は1つの要素として見てしまうことができれば話は早いです。つまり、
の中には不要な
が含まれており、本質的には
となる集合(部分集合、あるいは部分空間)を考えれば良いということになります。
空間上で、このような不要なは直線的に存在するわけではありません。この被りを1つの要素と見た場合には、部分空間は線形部分空間ではなくなります。この手の議論は情報幾何学の分野になってきます。
数学関連記事