SVM推导

实际上我们需要训练一个线性分类器(超平面):$$f(x)=sgn(w^{T}x+b)$$,也就是说当$$ w^{T}x+b \\geq 0 $$的时候输出1,否则输出-1。$$sgn()$$表示取符号。而$$g(x) =w^{T}x + b=0$$就是我们要寻找的分类超平面。
令$$H_{1}: w^{T}x + b= 1 和 H_{2}: y = w^{T}x + b=-1$$
好了,这时候我们就需要两个条件:(1)没有任何样本在这两个平面之间;(2)这两个平面的距离需要最大。(对任何的H1和H2,我们都可以归一化系数向量w,这样就可以得到H1和H2表达式的右边分别是+1和-1了)。
对于条件(2),例如$$ax+by=c_{1}$$和$$ax+by=c_{2}$$,那他们的距离是$$
\\frac{|c2-c1|}{\\sqrt(x2+y2)}$$
而用w来表示就是$$H_{1}: w_{1}x_{1}+w_{2}x_{2}=+1$$和$$H_{2}:w_{1}x_{1}+w_{2}x_{2}=-1$$,那$$H_{1}$$和$$H_{2}$$的距离就是$$
\\frac{|1+1|} {\\sqrt(w^{2}_{1}+w^{2}_{2})}=\\frac{2}{||w||}$$。
也就是说,我们需要最大化$$margin=\\frac{2}{||w||}$$,为了最大化这个距离,我们应该最小化||w||。同时我们还需要满足条件(1),也就是同时要满足没有数据点分布在H1和H2之间。
– 那么对于任何一个正样本$$y_{a}$$,保证$$y_{a}=w^{T}x+b \\geq 1$$
– 那么对于任何一个负样本$$y_{b}$$,保证$$y_{b}=w^{T}x+b \\leq -1$$
– 合并成一个式子后变成$$y_{i}(w^{T}x+b) \\geq 1$$

下面我们将这个问题转化为一个二次优化问题(Quadratic Programming)。
$$min\\frac{1}{2}||w||^{2}$$
$$s.t. y_{i}(w^{T}x_{i}+b) \\geq 1 , \\forall x_{i}$$
两个式子分别表示了,最大化支持向量与超平面的距离,在支持平面+1,-1区域内没有样本点。

deeplearning.ai学习笔记

逻辑回归

$a^{1}$
$$y’=sigmod(W^{T}T+b)$$
$$sigmoid(z)=\frac{1}{1+e^{-z}}$$
$$y’=P(y=1|x)$$

如果是二元分类的输出层,用$$sigmoid(z)=\frac{1}{1+e^{-z}}$$,在其他地方用relu或者是tanh,$$tanh(z)=\frac{e^{z}-e^{-z}}{e^{z}+e^{-z}}$$,通常建议使用reluleaky relu,$$leaky relu(z)=max(0.01z,z)$$

sigmoid函数求导
$$f(z)=\frac{-(-e^{-z})}{(1+e^{-z})^{2}}$$
$$=\frac{e^{-z}}{(1+e^{-z})^{2}}$$
$$=\frac{1+e^{-z}-1}{(1+e^{-z})^{2}}$$
$$=\frac{1}{1+e^{-z}}-\frac{1}{(1+e^{-z})^{2}}$$
$$=\frac{1}{1+e^{-z}}(1-\frac{1}{1+e^{-z}})$$
$$=f(z)(1-f(z))$$

tanh函数求导 $$1-tanh(z)^{2}$$

卷积神经网络

  • 在卷积神经网络中,底层的过滤器(fliter)是用来处理边缘特征,可以很好地检索出图像的边缘。同时筛选器中的参数可以让神经网络自己训练出来,可以检测多种方向的边缘。
  • 过滤器的尺寸一般都是奇数,我的理解是,这样可以确定一个中心位置,便于接下来的计算。
  • 当过滤器的大小为1* 1时,作用相当于全连接,目的就是调整通道的数量。
  • 权值共享(parameter sharing)可以大量的削减参数量

循环神经网络

  • 在Beam Search中,对于每次生成的结果,并不使用贪心的做法,每次选择可能性最大单词作为生成的结果,二是设置一个b(beam width),每次保留前b个结果,然后在下一次生成的时候,根据加权后的概率P(y^{2}|y^{1},X)生成b*n个候选结果,以此类推选择最大的b个结果,这样的话,计算的整体复杂度会变成b倍,但是生成的结果会更好。

Windows10_64+tensorflow0.12+cuda8+cudnnv5+Anaconda4.2.0安装教程

转眼间一年过去了,上次接触tensorflow是在一年前,通过一年的学习我发现,我还在配环境。。。。。

1.安装Anaconda4.2.0

Anaconda直接官网下载即可,里面自带了大量的科学计算工具和python、pip,推荐。

2017_1_16_1

2.安装tensorflow

CPU版:

如果你不需要GPU加速的话,那么到现在为止就结束了。

GPU版:

3.安装CUDA ToolKit

首先要先在这里确认一下你的GPU版本,附图一张:

2017_1_16_2

1.你要保证你的显卡CC大于等于3.5.

2.你的显卡驱动是最新的。

3.你要有相应的VS版本,我已经安装好了VS2015。

2017_1_16_4

下载CUDA,下载完之后是exe,直接安装即可,过程比较费时间,我曾经卡在installing nsight visual studio…….上很久,后来发现是显卡驱动没更新,更新下就好了。

安装完之后试一下这个命令

效果显示如下:

2017_1_16_3

4.安装CUDNN Toolkit

下载链接

2017_1_16_5

其实这个是一个压缩包,解压放到任何一个目录下就行,然后把你放的那个目录添加到Path环境变量里。

2017_1_16_6

之后要讲三个文件分别放在CUDA三个目录下:

5.测试

2017_1_16_7

6.参考

TensorFlow在Windows 10上安装手记

【TensorFlow】Windows10 64位下安装TensorFlow – 官方原生支持

TensorFlow 官方文档中文版

7.下一步思考

复现GAN学习指南:从原理入门到制作生成Demo