0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

ラビットチャレンジ 応用数学

Last updated at Posted at 2021-01-06

#ラビットチャレンジ 応用数学のレポート

  • 線形代数
  • 確率・統計
  • 情報理論

#1 線形代数
##1.1 行列

行列とは数値を縦と横に並べたもので、縦方向を列、横方向を行と言います。

  • 2行2列の行列(2次正方行列)
\begin{pmatrix}
1 & 2 \\
3 & 4
\end{pmatrix}
\quad ,\quad
\begin{pmatrix}
a & b \\
c & d
\end{pmatrix}
  • 3行3列の行列(3次正方行列)
\begin{pmatrix}
1 & 2 & 3\\
4 & 5 & 6\\
7 & 8 & 9
\end{pmatrix}
\quad ,\quad
\begin{pmatrix}
a & b & c\\
d & e & f\\
g & h & i 
\end{pmatrix}
  • m行n列の行列(3次正方行列)
\begin{pmatrix}
a_{11} & a_{12} & \cdots & a_{1n}\\
a_{21} & a_{22} & \cdots & a_{2n}\\
\vdots & \vdots & \ddots & \vdots \\
a_{m1} & a_{m2} & \cdots & a_{mn}
\end{pmatrix}

##1.2 単位行列

単位行列とは、任意のn次正方行列 $A$ に対して、次の式が成り立つ n次正方行列 $I$のことである。

$$IA=AI=A$$

単位行列 $I$ を表すと

I=
\begin{pmatrix}
1 & 0 & \cdots & 0\\
0 & 1 & \cdots & 0\\
\vdots & \vdots & \ddots & \vdots \\
0 & 0 & \cdots & 1
\end{pmatrix}

である。

##1.3 逆行列

逆行列$B$は、ある行列 $A$ に対して、かけ算すると単位行列 $I$ になるもので、$B=A^{-1}$と表す。

$$AB=BA=I$$
$A$:行列、$I$:単位行列、$B=A^{-1}$:$A$の逆行列

##1.4 行列式

逆行列が存在するか否かを判定するための式

  • 2行2列の行列式
|A|=
\begin{vmatrix}
a & b \\
c & d \\
\end{vmatrix}
=ad-bc
  • 3行3列の行列式
|A|=
\begin{vmatrix}
a_{11} & a_{12} & a_{13}\\
a_{21} & a_{22} & a_{23}\\
a_{31} & a_{32} & a_{33} 
\end{vmatrix}
=a_{11}
\begin{vmatrix}
a_{22} & a_{23}\\
a_{32} & a_{33} \\
\end{vmatrix}
-a_{12}
\begin{vmatrix}
a_{21} & a_{23}\\
a_{31} & a_{33} \\
\end{vmatrix}
+a_{13}
\begin{vmatrix}
a_{21} & a_{22}\\
a_{31} & a_{32} \\
\end{vmatrix}\\
=a_{11}(a_{22}a_{33}-a_{23}a_{32})
-a_{12}(a_{21}a_{33}-a_{23}a_{31})
+a_{13}(a_{21}a_{32}-a_{22}a_{31})\\
=a_{11}a_{22}a_{33}-a_{11}a_{23}a_{32}-a_{12}a_{21}a_{33}+a_{12}a_{23}a_{31}
+a_{13}a_{21}a_{32}-a_{13}a_{22}a_{31}\\
=a_{11}a_{22}a_{33}+a_{12}a_{23}a_{31}+a_{13}a_{21}a_{32}-a_{11}a_{23}a_{32}
-a_{12}a_{21}a_{33}-a_{13}a_{22}a_{31}

となる

  • 同じ行ベクトルが含まれる場合、行列式は0となる。
|A|=
\begin{vmatrix}
\vec{v_1}\\
\vec{v_2}\\
\vdots \\
\vec{v_k}\\
\vdots \\
\vec{v_k}\\
\vdots \\
\vec{v_n}
\end{vmatrix}=0
  • あるベクトルが$\lambda$ 倍された場合、行列式も$\lambda$ 倍される。
|A|=
\begin{vmatrix}
\vec{v_1}\\
\vec{v_2}\\
\vdots \\
\lambda \vec{v_k}\\
\vdots \\
\vec{v_{n-1}}\\
\vec{v_n}
\end{vmatrix}=\lambda 
\begin{vmatrix}
\vec{v_1}\\
\vec{v_2}\\
\vdots \\
\vec{v_k}\\
\vdots \\
\vec{v_{n-1}}\\
\vec{v_n}
\end{vmatrix}
  • 行(もしくは列)のベクトルを入れ替えると、符号が入れ替わる
\begin{vmatrix}
\vec{v_1}\\
\vec{v_2}\\
\vdots \\
\vec{v_m}\\
\vdots \\
\vec{v_n}\\
\vdots \\
\vec{v_n}
\end{vmatrix}=-
\begin{vmatrix}
\vec{v_1}\\
\vec{v_2}\\
\vdots \\
\vec{v_n}\\
\vdots \\
\vec{v_m}\\
\vdots \\
\vec{v_n}
\end{vmatrix}

1.5 固有値

固有値とは、ある正方行列$A$に対して、$\vec{0}$ではない、ベクトル$\vec{x}$に対して次の式が成り立つときの$\lambda$のことを言う。
(このときのベクトル$\vec{x}$は、固有ベクトルと言う )

$$A\vec{x}=\lambda\vec{x}$$

固有値の求め方は、次の通りである。
上記の右辺の式$\lambda\vec{x}$を左辺に移項すると

$$(A-\lambda I)\vec{x}=0$$

定義より、$\vec{x}\neq\vec{0}$のため、$|A-\lambda I|=0$ となる。
これを計算することで、$\lambda$ を求めることができる。

1.6 固有値分解

固有値及び固有ベクトルが次の式のように複数存在するとする

\begin{eqnarray}
A\vec{x_1} &=& \lambda_1\vec{x_1}  \\
A\vec{x_2} &=& \lambda_2\vec{x_2}  \\
A\vec{x_3} &=& \lambda_3\vec{x_3}  \\
&\vdots& \\
A\vec{x_n} &=& \lambda_n\vec{x_n}  \\
\end{eqnarray}

このとき、固有ベクトルを横に並べた行列を
$$X=\left(\vec{x_1},\vec{x_2},\vec{x_3},\cdots ,\vec{x_n} \right)$$
とし、対角成分に固有値を並べた行列を

\Lambda=
\begin{pmatrix}
\lambda_1 & 0 & 0 & \cdots & 0\\
0 & \lambda_2 & 0 & \cdots & 0 \\
0 & 0 & \lambda_3 & \cdots & 0 \\
\vdots & \vdots & \vdots & \ddots & \vdots \\
0 & 0 & 0 & 0 & \lambda_n
\end{pmatrix}

とするとき、

\begin{eqnarray}
AX&=& A\left(\vec{x_1},\vec{x_2},\vec{x_3},\cdots ,\vec{x_n} \right)  \\
&=& \left(A\vec{x_1},A\vec{x_2},A\vec{x_3},\cdots ,A\vec{x_n} \right) \\
&=& \left(\lambda_1\vec{x_1},\lambda_2\vec{x_2},\lambda_3\vec{x_3},\cdots ,\lambda_n\vec{x_n} \right) \\
&=& \left(\vec{x_1},\vec{x_2},\vec{x_3},\cdots ,\vec{x_n} \right) \begin{pmatrix}
\lambda_1 & 0 & 0 & \cdots & 0\\
0 & \lambda_2 & 0 & \cdots & 0 \\
0 & 0 & \lambda_3 & \cdots & 0 \\
\vdots & \vdots & \vdots & \ddots & \vdots \\
0 & 0 & 0 & 0 & \lambda_n
\end{pmatrix}\\
&=& X\Lambda
\end{eqnarray}

となる。両辺右から$X^{-1}$を掛けることで

$$A=X\Lambda X^{-1}$$

となる。上式の右辺が、正方行列$A$の固有値分解したものである。

1.7 特異値分解

特異値分解は、正方行列以外の行列の固有値分解である。

ある行列$A$があって、これを

$$A=USV^{T}$$

と分解します。$U$、$V$は直交行列、$S$は対角行列とします。
式で書くと

A=(\vec{u_1}, \vec{u_2},\cdots ,\vec{u_n})
\begin{pmatrix}
\sigma_1 & 0 & 0 & \cdots & 0 \\
0 & \sigma_2 & 0 & \cdots & 0 \\
0 & 0 & \sigma_3 & \cdots & 0 \\
\vdots & \vdots & \vdots & \ddots & \vdots \\
0 & 0 & 0 & \cdots & \sigma_n \\
\end{pmatrix}
\begin{pmatrix}
\vec{v_1} \\
\vec{v_2} \\
\vec{v_3} \\
\cdots \\
\vec{v_n}
\end{pmatrix}

ここで、$\sigma_1$、$\sigma_2$、$\sigma_3$、$\cdots$ 、$\sigma_n$ を特異値といい、
$$\sigma_1\geqq\sigma_2\geqq \sigma_3\geqq \cdots \geqq \sigma_n $$
を満たすように選びます。

$AA^{T}$の固有値を$\lambda$、固有ベクトルを$\vec{u}$とすると

\begin{eqnarray}
AA^{T}\vec{u_1}&=&\lambda_1 \vec{u_1} \\
AA^{T}\vec{u_2}&=&\lambda_2 \vec{u_2} \\
&\vdots&\\
AA^{T}\vec{u_n}&=&\lambda_n \vec{u_n} \\
\end{eqnarray}

これに、左から $A^{T}$ をかけて

\begin{eqnarray}
A^{T}AA^{T} \vec{u_1} &=& A^{T}\lambda_1 \vec{u_1} \\
A^{T}A\left(A^{T}\vec{u_1}\right) &=& \lambda_1\left(A^{T}\vec{u_1}\right) \\
\end{eqnarray}

$A^{T}A$ の固有ベクトルを$\vec{v}$とすると、

$$A^{T}A\vec{v_1}=\lambda_1\vec{v_1}$$

となる。同様の計算をすることで、$A^{T}A$の固有値が、$AA^{T}$の固有値が同じになることがわかる。
$\vec{v}$が単位ベクトルになるように$\theta$を取ると

$$\vec{v_1}=\theta_1\vec{u_1}$$
となる。これを順番に並べて

\begin{eqnarray}
V&=&\left(\vec{v_1},\vec{v_2},\vec{v_3}, \cdots,\vec{v_n}\right)\\
&=&\left(\theta_1A^{T}\vec{u_1},\theta_2A^{T}\vec{u_2}, \theta_3 A^{T}\vec{u_3},\cdots,\theta_n A^{T}\vec{u_n} \right)\\
&=&\left(A^{T}\vec{u_1},A^{T}\vec{u_2}, A^{T}\vec{u_3} ,\cdots, A^{T}\vec{u_n} \right)

\begin{pmatrix}
\theta_1 & 0 & 0 & \cdots & 0 \\
0 & \theta_2 & 0 & \cdots & 0 \\
0 & 0 & \theta_3 & \cdots & 0 \\
\vdots & \vdots & \vdots & \ddots & \vdots \\
0 & 0 & 0 & \cdots & \theta_n \\
\end{pmatrix}\\
&=& A^{T}\left(\vec{u_1},\vec{u_2},\vec{u_3}, \cdots,\vec{u_n}\right)
\begin{pmatrix}
\theta_1 & 0 & 0 & \cdots & 0 \\
0 & \theta_2 & 0 & \cdots & 0 \\
0 & 0 & \theta_3 & \cdots & 0 \\
\vdots & \vdots & \vdots & \ddots & \vdots \\
0 & 0 & 0 & \cdots & \theta_n \\
\end{pmatrix}\\
&=& A^{T}U
\begin{pmatrix}
\theta_1 & 0 & 0 & \cdots & 0 \\
0 & \theta_2 & 0 & \cdots & 0 \\
0 & 0 & \theta_3 & \cdots & 0 \\
\vdots & \vdots & \vdots & \ddots & \vdots \\
0 & 0 & 0 & \cdots & \theta_n \\
\end{pmatrix}
\end{eqnarray}

ここで

\Theta=\begin{pmatrix}
\theta_1 & 0 & 0 & \cdots & 0 \\
0 & \theta_2 & 0 & \cdots & 0 \\
0 & 0 & \theta_3 & \cdots & 0 \\
\vdots & \vdots & \vdots & \ddots & \vdots \\
0 & 0 & 0 & \cdots & \theta_n \\
\end{pmatrix}

と置きます。

\begin{eqnarray}
V&=&A^{T}U\Theta \\
V\Theta^{-1} &=&A^{T}U
\end{eqnarray}

となる。これを

AA^{T}U=U\begin{pmatrix}
\lambda_1 & 0 & 0 & \cdots & 0 \\
0 & \lambda_2 & 0 & \cdots & 0 \\
0 & 0 & \lambda_3 & \cdots & 0 \\
\vdots & \vdots & \vdots & \ddots & \vdots \\
0 & 0 & 0 & \cdots & \lambda_n \\
\end{pmatrix}

に代入すると

\begin{eqnarray}
AV\Theta^{-1}&=&U\begin{pmatrix}
\lambda_1 & 0 & 0 & \cdots & 0 \\
0 & \lambda_2 & 0 & \cdots & 0 \\
0 & 0 & \lambda_3 & \cdots & 0 \\
\vdots & \vdots & \vdots & \ddots & \vdots \\
0 & 0 & 0 & \cdots & \lambda_n \\
\end{pmatrix} \\
AV&=&U\begin{pmatrix}
\lambda_1 & 0 & 0 & \cdots & 0 \\
0 & \lambda_2 & 0 & \cdots & 0 \\
0 & 0 & \lambda_3 & \cdots & 0 \\
\vdots & \vdots & \vdots & \ddots & \vdots \\
0 & 0 & 0 & \cdots & \lambda_n \\
\end{pmatrix}\Theta \\
A&=& 
U\begin{pmatrix}
\lambda_1 & 0 & 0 & \cdots & 0 \\
0 & \lambda_2 & 0 & \cdots & 0 \\
0 & 0 & \lambda_3 & \cdots & 0 \\
\vdots & \vdots & \vdots & \ddots & \vdots \\
0 & 0 & 0 & \cdots & \lambda_n \\
\end{pmatrix} 
\begin{pmatrix}
\theta_1 & 0 & 0 & \cdots & 0 \\
0 & \theta_2 & 0 & \cdots & 0 \\
0 & 0 & \theta_3 & \cdots & 0 \\
\vdots & \vdots & \vdots & \ddots & \vdots \\
0 & 0 & 0 & \cdots & \theta_n \\
\end{pmatrix}V^{T}\\
A&=& 
U\begin{pmatrix}
\lambda_1\theta_1 & 0 & 0 & \cdots & 0 \\
0 & \lambda_2\theta_2 & 0 & \cdots & 0 \\
0 & 0 & \lambda_3\theta_3 & \cdots & 0 \\
\vdots & \vdots & \vdots & \ddots & \vdots \\
0 & 0 & 0 & \cdots & \lambda_n\theta_n \\
\end{pmatrix} V^{T}
\end{eqnarray}

ここで
$$\lambda_1\theta_1=\sigma_1,\lambda_2\theta_2=\sigma_2,\lambda_3\theta_3=\sigma_3,\cdots ,\lambda_n\theta_n=\sigma_n$$

と置くことで、結果が求まる。

2.確率・統計

2.1 確率とは

確率は、起こりやすさを数値で表したもの

  • 頻度確率は「発生する確率」
    例:どうように確からしいとき、コインで表を出す確率は0.5

  • ベイズ確率は「信念の度合いを数値にしたもの」
    例:Aさんが、恋を焦がれているBさんに好かれている確率は0.5

確率の定義

$U$を全体集合、$A$を部分集合、$P(A)$をAが起きる確率とするとき、

$$P(A)=\frac{n(A)}{n(U)}=\frac{事象Aが起こる数}{全事象の数}$$

2.2 条件付き確率とは

事象$A$起きたとき、事象$B$が起こる確率$P(B|A)$は

$$P(B|A)=\frac{P(A\cap B)}{P(A)}$$

$P(A\cap B)$:$A$かつ$B$が起こる確率

2.3 同時確率とは

$$P(A\cap B)=P(A)P(B|A)=P(B)P(A|B)$$

$P(A|B)$:事象$B$が起きたとき、事象$A$が起こる確率

なお、事象$A$と事象$B$が独立な場合(事象$A$と事象$B$が関係を及ぼさないとき)
事象$B$が起きたとき、事象$A$が起こる確率と事象$A$が起こる確率は同じ($P(A|B)=P(A)$)になる

もしくは

事象$A$が起きたとき、事象$B$が起こる確率と事象$B$が起こる確率は同じ($P(B|A)=P(B)$)になる

そのため、

$$P(A\cap B)=P(A)P(B)$$

となる。

2.4 和事象の同時確率とは

事象$A$または事象$B$が起こる確率$P(A\cup B)$は
事象$A$が起こる確率$P(A)$と事象$B$が起こる確率$P(B)$を加えて
二重に数えている事象$A$かつ事象$B$が起こる同時確率$P(A\cap B)$を引きます

$$P(A\cup B)=P(A)+P(B)-P(A\cap B)$$

2.5 ベイズの定理とは

同時確率の式

$$P(A)P(B|A)=P(B)P(A|B)$$

がベイズの定理である。$P(A∣B)とP(B∣A)$が入れ替わっているので、時間が逆行している確率を求める際にも有効である。

例:高熱の症状の時にインフルエンザの確率、コロナウイルスの確率など
時間の経過は
インフルエンザにかかる ⇒ 高熱になる
コロナウイルスにかかる ⇒ 高熱等の症状が出る

2.6 用語の説明

事象

同じ条件の下で繰り返し行うことのできる実験や観測など によって起こる結果
このときの実験や観測のことを試行という。

確率変数

起こりうることがらに対して割り当てられている数値
離散値(とびとびの値)であれば表に示せる
離散値:サイコロ(1,2,3,4,5,6)など

例:サイコロを3回振ったとき
1,2,3,4,5,6 ⇒ 確率変数
1の目が3回出た ⇒ 事象

確率分布

全事象の発生する確率を分布にしたもの。

記述統計

母集団から標本(サンプル)を抽出し、母集団の性質をグラフにしたり数値化する統計。

推測(推計)統計

母集団から標本(サンプル)を抽出し、母集団の性質を推測する

期待値$E(f(X))$

平均値の事
事象$X$を
$$x_1,x_2,x_3,\cdots,x_n$$

確率変数
$$f(x_1),f(x_2),f(x_3),\cdots,f(x_n)$$

確率$P(X)$を
$$P(x_1),P(x_2),P(x_3),\cdots,P(x_n)$$
とするとき、期待値(離散値)$E(f(X))$の定義は
$$E(f(X))=\sum_{k=1}^n P(X=x_k)f(X=x_k)$$

連続値の場合の期待値$E(f(X))$の定義は

$$\int_{-\infty}^{\infty}P(X=x)f(X=x)dx$$

分散

データの散らばり具合(散布度)を示す
期待値と各々のデータがどれだけズレているのかを差を取り、2乗して平均したもの定義は

$$Var(f(X))=E\left( f(X=x)-\Big(E(f(x))\Big)^2\right)=E(f(X)^2)-\Big(E(f(X)) \Big)^2$$

標準偏差σ

分散は2乗計算しているため、単位が2乗になっている
単位を1乗に戻すため、分散の平方根を取ったものが標準偏差

$$\sigma=\sqrt{Var(f(X))}$$

共分散

2つのデータの傾向の違いを測るもの
正の値ならば似た傾向があり
負の値なら逆の傾向がある。
共分散が0の場合、関係性が乏しくなる。

\begin{eqnarray}
Cov(f(X),g(Y))&=&E\bigg( \Big(f(X=x)-E(f(X)) \Big) \Big( g(Y=y)-E(g(Y))  \Big) \bigg)\\
&=&E\Big(f(X=x)g(Y=y) \Big)-E\Big(f(X=x)\Big)E\Big(g(Y=y)\Big)
\end{eqnarray}

ベルヌーイ分布

コイントスのように事象が2つに分けられる場合の確率分布。各々の確率が均等でなくても使用できる。(表裏が同様に確からしくない、歪んだコインでもよい)

$$P(x|\mu)=\mu^x(1-\mu)^{1-x}$$

マルチヌーイ(カテゴリカル)分布

サイコロを振るように事象が複数に分けられる場合の確率分布。ベルヌーイ分布のマルチ版のようなもの。(つまり歪んだサイコロを扱うイメージ)
ベルヌーイ分布と同じように、確率が均等でなくても使用することができる。

$$P(x|\mu)=\prod_{k=1}^K \mu_k^{x_k}$$

2項分布

ベルヌーイ分布の多試行版
$n$回のベルヌーイ試行をしたときに$x$回成功する確率は

$$P(x|\lambda ,n)=\frac{n!}{x!(n-x)!}\lambda^x(1-\lambda)^{n-x}$$

$n$:試行の回数
$x$:成功する回数
$\lambda$:期待する事象の確率

ガウス分布(正規分布)

釣鐘型の連続分布、偏差値などを出すさいにも使われている。

$$N(x:\mu ,\sigma^2)=\frac{1}{\sqrt{2\pi}\sigma}\exp\left(-\frac{1}{2\sigma^2}(x-\mu)^2\right)$$

標本平均

母集団から取り出した標本(サンプル)の平均値

不偏分散

母集団に比べ標本数が少ない時は、標本分散が母分散よりも小さくなるため
標本分散が母分散に等しくなるように補正したもの

$$\bar{x}=\frac{1}{n}\sum_{k=1}^n x_k$$
とするとき、不偏分散は次の式で与えられる

$$\frac{1}{n-1}\sum_{k=1}^n (x_k-\bar{x})^2$$

3.情報理論

情報を数式化することで扱う理論

3.1 自己情報量

情報は確率$P(x)$を用いて表現することができる。
情報が珍しいというのは、情報量が大きいことを示すため、
確率$P(x)$と情報量には反比例の関係がある。そこで、自己情報量$I(x)$を次の式で定義する。
$$I(x)=\log\frac{1}{P(x)}=\log\Big(P(x)\Big)^{-1}=-\log P(x)$$
である。
単位は、対数の底が2のときは bit 、対数の底が$e$(ネイピア数、自然対数)のときは nat

3.2シャノンエントロピ―

自己情報量の期待値、つまり事象$x$の珍しの平均値をシャノンエントロピーといい次の式で定義する
$$H(x)=E(I(x))=-E(\log(P(x)))=-\sum_{x\in X}P(x)\log P(x)$$

3.3 カルバック・ライブラー ダイバージェンス

同じ事象・確率変数における異なる確率分布$P$、$Q$の違いを表す。
$$D_{KL}(P, ||Q)=E_{X\sim P}\left[\log\frac{P(x)}{Q(x)}\right]=E_{X\sim P}\left[\log P(x)-\log Q(x) \right]$$
ここで、$I_P(x)=-\log P(x)$ 、$I_Q(x)=-\log Q(x)$とすると、上式は
$$D_{KL}(P, ||Q)=E_{X\sim P}\left[-I_P(x)+I_Q(x) \right]$$
とできる。

3.4 交差エントロピー

  • KLダイバージェンスの一部分を取り出したもの。
  • $Q$についての自己情報量を$P$の分布で平均している。
  • 2つの確率分布$P$と$Q$がどのくらい離れているのかを示す。

$P$ を事前に想定した確率分布、$Q$ を実際に発生した確率分布、$H(P)$ をシャノンエントロピー、$D_{KL}(P, ||Q)$ をカルバック・ライブラー ダイバージェンスとするとき、交差エントロピー$H(P,Q)$ は次の式となる。

$$H(P,Q)=H(P)+D_{KL}(P, ||Q)$$

計算は次の通り

\begin{eqnarray}
H(P,Q)&=&-\sum_{x\in X}P(x)\log Q(x) \\
&=& -\sum_{x\in X}P(x)\Big(\underline{\log P(x)-\log P(x)}+\log Q(x) \Big) \\
&=& -\sum_{x\in X}P(x)\log P(x)+\sum_{x\in X}P(x)[\log P(x)-\log Q(x)]\\
&=& H(P)+E_{X\sim P}\left[\log P(x)-\log Q(x) \right]\\
&=& H(P)+D_{KL}(P\, ||Q)
\end{eqnarray}

4. ラビット・チャレンジについて

ラビット・チャレンジは「現場で潰しが効くディープラーニング講座」の講義の録画ビデオを教材としたE資格認定プログラムです。
 受講料はE資格認定プログラムの中で1番安く、2021年からは月謝生の講座も誕生しました。
 サポートは他の認定プログラムに比べて少ないため、自分自身で学習を管理できる方や上級者向けです。

ラビット・チャレンジへのリンクはこちらです。
 ラビット・チャレンジ

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?