上一章的分类可以推导了
P
(
C
1
∣
x
)
=
σ
(
z
)
=
1
1
+
e
−
z
P(C_1|x)=\sigma(z)=\frac{1}{1+e^{-z}}
P(C1∣x)=σ(z)=1+e−z1,并且在Gaussian的distribution下考虑class 1和class 2共用
Σ
\Sigma
Σ,可以得到一个线性的z(其实很多其他的Probability model经过化简以后也都可以得到同样的结果)
P
w
,
b
(
C
1
∣
x
)
=
σ
(
z
)
=
1
1
+
e
−
z
P_{w,b}(C_1|x)=\sigma(z)=\frac{1}{1+e^{-z}}
Pw,b(C1∣x)=σ(z)=1+e−z1
z
=
w
⋅
x
+
b
=
∑
i
w
i
x
i
+
b
z=w\cdot x+b=\sum\limits_i w_ix_i+b \
z=w⋅x+b=i∑wixi+b 这里的w和x都是vector,两者的乘积是inner product,从上式中我们可以看出,现在这个model(function set)是受w和b控制的,因此我们不必要再去像前面一样计算一大堆东西,而是用这个全新的由w和b决定的model——Logistic Regression(逻辑回归)
Step 1:function set
这里的function set就是Logistic Regression——逻辑回归
w
i
w_i
wi:weight,
b
b
b:bias,
σ
(
z
)
\sigma(z)
σ(z):sigmoid function,
x
i
x_i
xi:input
Step2 定义损失函数
由于
L
(
w
,
b
)
L(w,b)
L(w,b)是乘积项的形式,为了方便计算,我们将上式做个变换:
由于class 1和class 2的概率表达式不统一,上面的式子无法写成统一的形式,为了统一格式,这里将Logistic Regression里的所有Training data都打上0和1的标签,即output
y
^
=
1
\hat{y}=1
y^=1代表class 1,output
y
^
=
0
\hat{y}=0
y^=0代表class 2,于是上式进一步改写成:
现在已经有了统一的格式,我们就可以把要minimize的对象写成一个summation的形式:
−
ln
L
(
w
,
b
)
=
∑
n
−
[
y
^
n
ln
f
w
,
b
(
x
n
)
+
(
1
−
y
^
n
)
ln
(
1
−
f
w
,
b
(
x
n
)
)
]
-\ln L(w,b)=\sum\limits_n -[\hat{y}^n \ln f_{w,b}(x^n)+(1-\hat{y}^n) \ln(1-f_{w,b}(x^n))]
−lnL(w,b)=n∑−[y^nlnfw,b(xn)+(1−y^n)ln(1−fw,b(xn))] 这里
x
n
x^n
xn表示第n个样本点,
y
^
n
\hat{y}^n
y^n表示第n个样本点的class标签(1表示class 1,0表示class 2),最终这个summation的形式,里面其实是两个Bernouli distribution(两点分布)的cross entropy(交叉熵)
step 3:Find the best function
实际上就是去找到使loss function即交叉熵之和最小的那组参数
w
∗
,
b
∗
w^*,b^*
w∗,b∗就行了,这里用gradient descent的方法进行运算就ok
结果竟然异常的简洁,gradient descent每次update只需要做:
w
i
=
w
i
−
η
∑
n
−
(
y
^
n
−
f
w
,
b
(
x
n
)
)
x
i
n
w_i=w_i-\eta \sum\limits_{n}-(\hat{y}^n-f_{w,b}(x^n))x_i^n
wi=wi−ηn∑−(y^n−fw,b(xn))xin 那这个式子到底代表着什么意思呢?现在你的update取决于三件事:
learning rate,是你自己设定的
x
i
x_i
xi,来自于data
y
^
n
−
f
w
,
b
(
x
n
)
\hat{y}^n-f_{w,b}(x^n)
y^n−fw,b(xn),代表function的output跟理想target的差距有多大,如果离目标越远,update的步伐就要越大
Logistic Regression V.s. Linear Regression
损失函数:为什么不学线性回归用平方误差?
如果是交叉熵,距离target越远,微分值就越大,就可以做到距离target越远,更新参数越快。
而平方误差在距离target很远的时候,微分值非常小,会造成移动的速度非常慢,这就是很差的效果了。
判别模型v.s. 生成模型
逻辑回归的方法称为Discriminative(判别)方法;上一篇中用高斯来描述后验概率,称为 Generative(生成) 方法。它们的函数集都是一样的。
- 如果是逻辑回归,就可以直接用梯度下降法找出w和b;
- 如果是概率生成模型,像上篇那样求出 μ 1 , μ 2 μ^1,μ^2 μ1,μ2 ,协方差矩阵的逆,然后就能算出w和b。
用逻辑回归和概率生成模型找出来的w和b是不一样的。结果是逻辑回归的效果好一些。
Generative model和discriminative model的差别就在于,Generative的model它有做了某些假设,假设你的data来自于某个概率模型;而Discriminative的model是完全不作任何假设的
判别方法不一定比生成方法好
生成方法的优势:生成方法会自己脑补,受到数据量的影响比较小。 对于噪声数据有更好的鲁棒性(robust)。
语音识别是 Generative 的方法,DNN只是其中的一块而已;因为还是需要算一个先验概率,就是某句话被说出来的概率,而估计某句话被说出来的概率不需要声音数据,只需要爬很多的句子,就能计算某句话出现的几率。
多类别分类
softmax的意思是对最大值做强化,因为在做第一步的时候,对z取exponential会使大的值和小的值之间的差距被拉得更开,也就是强化大的值
为什么Softmax的输出可以用来估计后验概率?
- 设我们用的是Gaussian distribution(共用covariance),经过一般推导以后可以得到softmax的function,
- 从information theory也可以推导出softmax function,Maximum entropy本质内容和Logistic Regression是一样的,它是从另一个观点来切入为什么我们的classifier长这样子
定义target
保证所有class之间的关系是一样的,这里使用类似于one-hot编码的方式
二元分类一样,多元分类问题也是通过极大似然估计法得到最终的交叉熵表达式的,这里不再赘述。
逻辑回归的限制
这个平面上无论怎么画直线都不可能把图中的两个class分隔开来
特征转换
特征转换:找一个比较好的feature space,让Logistic Regression能够处理。
级联逻辑回归模型
我们把一个input的x分为x1和x2,两个逻辑回归进行特征转换得到
x
1
′
,
x
2
′
x_1^{'},x_2^{'}
x1′,x2′,再进行新一轮的分类
当面对多元分类问题,需要用到多个Logistic Regression来画出多条直线划分所有的类,每一个Logistic Regression对应它要检测的那个类。
.
我们把每一个Logistic Regression叫做一个neuron(神经元),把这些Logistic Regression串起来所形成的network,就叫做Neural Network,就是类神经网路,这个东西就是Deep Learning!