スキップしてメイン コンテンツに移動

Map

Introduction
sorry, this page is Japanese only

今回は写像の厳密な定義をして行きたいと思います。写像は大学数学では線形代数や微積分の分野で 序盤から正しい定義をされることもなく当たり前のように使われているのではないでしょうか。 写像とは何となく関数のようなものだが、しかし先生は関数ではないといいます。これに私も、 ずいぶん悩まされましたが、大学二回生の集合と位相という講義で厳密な定義を習ったので、 ここで共有させていただこうと思います。

写像(map)
写像f:A->Bの定義
任意のAの要素はBの中に対応するbという要素がただ一つ存在する。 記号で書くと以下のようになります。

$$\forall a \in A \exists ! b \in B ~~s.t~~ f(a) = b$$

この定義は二つの事柄について分けて考えることで写像の定義を正しく確認できます。


  • 全てのAの要素aについてfで送ると対応するbの要素がBの中に存在する。
  • Aの中の一つの要素から対応するBの要素が二つ存在することはあり得ない。
この二つは後に述べる逆写像が存在するための必要十分条件のために必要なので覚えておいてください。

全射
写像$f:A \rightarrow B$が全射

$$f(A) = B$$

つまり、Bの全ての要素が余ることなく、Aの中のある要素aをfで送ることで対応しているということです。

単射
写像$f:A \rightarrow B$が単射
$$\forall a_1, \forall a_2 \in A if f(a_1) = f(a_2) \implies a_1 = a_2$$

これは対偶をとると以下のように解釈できます。

$$\forall a_1, \forall a_2 \in A if a_1 \neq a_2 \implies f(a_1) = f(a_2)$$

つまり、fで送る要素$a_1,a_2$が違えば必ず違う行く先に対応しているということです。

写像fが全射であり、単射であるとき、fは全単射といいます。


逆写像
逆写像とは写像$f:A \rightarrow B$に対して、以下を満たす写像のことを言います。
$$\b in \V \exists a \in A ~s.t~ f^{-1}(b) = a$$
逆写像はどのような写像fについても定義できるのでしょうか。
逆写像も写像なので、当然写像の定義を満たしていなければいけません。 

写像の定義から

  • 全てのBの要素bについて $f^{-1}$ で送ると対応するaの要素がAの中に存在する。
  • Bの中の一つの要素から対応するAの要素が二つ存在することはあり得ない。
また、fも写像なので 
  • 全てのAの要素aについてfで送ると対応するbの要素がBの中に存在する。
  • Aの中の一つの要素から対応するBの要素が二つ存在することはあり得ない。 

これらを見ていると集合Aと集合Bが一対一対応していなければいけないことがわかるはずです。 

よって逆写像が定義される必要十分条件は写像fが全単射であることです。







コメント

このブログの人気の投稿

カーネルk-meansの実装

Introduction   English ver 今日はカーネルk-meansの実装をしました。k-menasアルゴリズムはクラスタリングのためのアルゴリズムです。僕がカーネルk-meansを実装しようと思ったのには一つ理由があります。それは僕の友人がk-meansのプレゼンを、僕がカーネルのプレゼンをしていた時に、k-meansにカーネルを適応できないかと思ったからです。そこで、カーネルk-meansについての論文を探しました。 ここのpdf を主に参考にさせていただきました。うまくカーネルk-meansを実装できたと思います。ここでは、普通のk-meansとカーネルを用いた,kernel k-meansについての実装の結果を紹介します。 また、この記事では実装結果のみ書きますが、理論のほうも別の記事で書くつもりです。書き終えたらリンクをこの記事にも貼っておきます。 #  理論編書きました。K-means 理論編 概要 dataset   ちょっとだけ理論の説明  k-means    kernel k-means   Dataset   English ver 今回使うのは二つのデータセットです。一つ目は、普通のk-means用のデータです。二つ目はkernel k-means用のデータセットです。 一つ目のデータは、三つのグループで構成されており、次元は2で、サンプル数は300です。以下のような分布になっています。 二つ目のデータは二つのグループで構成されており、次元は2でサンプル数は300です。   this page にデータセットを作ったコードを載せています。 ちょっとだけ理論の説明 k-meansとは、k-平均法とも呼ばれています。初めに、適当なクラスに分け、各クラスの中で平均となるベクトルを求めます。そして、各データに対して、すべての平均ベクトルとの距離を求めます。そして、最小となる距離になるクラスに改めて、そのデータをクラスタリングします。そして、新たに得られたクラスの中でそれぞれ平均ベクトルを求め、これを繰り返し、平均ベクトルが動かな...

Implementation of Robbins monro

Robbins monro の実装 sorry, this page is Japanese only.   今回はRobbins monro の実装をしてみました。 Robbins monroは確率勾配降下法の学習率を入りテーション回数の逆数で割っていくものです。 使っているprogram言語はpython 3です。osはwindowsです。(macほしい...) アルゴリズム 確率勾配降下方とは目的関数の最適解を求めるアルゴリズムです。目的関数をf(X)とすると、手順は以下のようになっています。 初期学習率$n_0$を決めます。訓練データDを用意します。この訓練データは複数の初期値の集まりです。 訓練データから一つ初期値をランダムに取り出し、これを$x_0$とし、最初の予測値とします。 次の式に現在の予測値$x_0$を代入し、新たな予測値$x_{n+1}$を得ます。$$x_{n+1} = x_{n} - \frac{n_0}{n} grad f(X_n)$$ 収束して入れば4へ、収束していなければ2で得られた値$x{n+1}$を新たに$x_n$としてもう一度2を行う。 訓練データを一周していなければ2へ、一周していれば各初期値から得られた解の中から目的関数を最も小さくするものを選ぶ。   実装例 以下の目的関数を最小化させてみましょう。 $$f(x,y) = (x-2)^2 + (y-3)^2 $$ コマンドラインでpythonを実行していきます。 予想通り、(2,3)という解を導き出してくれました。目的関数が簡単だったので、初期値をどの値でとってもばっちり正解にたどり着いてくれました。 CODE 以下にRobbins monroの関数だけ置いておきます。 こちら にすべてのコードを載せています。 def Robbins_monro(function,grad,number_variable_gradient): init_learning_rate = 1.5 stepsize = 1000 init_value = np.array([range(-1000,1020,20) for i in range(number_v...

大学院試験 -外部への道しるべ-

始めに この度、 京都大学大学院情報学研究科システム科学専攻 に合格することができました!!! 僕は現在、立命館大学という関西の私立大学に通っているので、外部受験をしたことになります。 さらに、学部は数学専攻で、大学院からは情報学(の中でも機械学習)専攻になるので、専門も変えることになります。 この記事では、外部の大学院、もしくは専攻替えを考えている人向けに書こうと思っているので、目次で気になった項目があれば、ぜひ、読んでいってくださいませ。( *´艸`) ちなみに、予測点数は線形微積6~7割、専門科目満点、英語かなり低いので内緒です。(笑) 得点開示を要求するので、得点がわかったら、また追記します。 目次 外部受験を目指すまで、目指したきっかけ 外部受検の大変さ 専攻替えの大変さ 合格するために 英語が苦手な人へ 数学科の学部から情報学(機械学習)の大学院を目指す人へ 応援 外部受検を目指すまで、目指したきっかけ ここでは、自分の大学生活がどんなだったかを書いてるだけなので、興味のない人は飛ばしましょう。(笑) 僕が学部二回生頃に、当時数理科には機械学習の研究をされている先生が一人だけ所属されていました。その先生に、直接弟子入りさせていただき、僕の機械学習への道は始まりました。。。(メインは遺伝統計学の研究でした。) 弟子入りした直後は、タイピングもなめくじのように遅かったですし、gitもpullする前にpushしたこともありました。。。 しかし、その先生は、目的に最先端で届く道のりを用意してくださいました。 プログラミングを初めて一か月ほどで、t-SNEの実装をしたり(遺伝統計学の研究で必要だった)、四か月ほどで、カーネルc-SVMの実装をしたり(やってみなとゆわれて(笑))することができました。その後も、学部二回生、三回生ながら、論文を読んで実装してきました。 学部二回生冬には、遺伝統計学の研究を 株式会社パーソルキャリア さん主催のハッチングフェスというデータサイエンティストのためのイベントで、発表しました。 このイベントでは、企業の方もたくさん来られて、知り合えるチャンスがかなりあります!! (名刺を作っておくと、「えっ、学生なのに名刺持ってるの?!」ってなるので、覚えてもらえます。...