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つの要素と見た場合には、部分空間は線形部分空間ではなくなります。この手の議論は情報幾何学の分野になってきます。
数学関連記事