一、常用标记
样本:(x, y) x为输入,y为输出
输入x:x是一个nx维的特征向量
输出y:取值为0或1
样本数量:m
样本空间:{(x(1),y(1)),(x(2),y(2)),...,(x(m),y(m))}
矩阵X=[x(1),x(2),...,x(m)]
矩阵Y=[y(1),y(2),...,y(m)]
sigmoid函数:g(z) = 1/(1 + e-z) z的范围为正负无穷,g(z)结果范围为(0,1)
二、logistic回归
一种学习算法,用于解决输出y为0或1的监督型学习问题。它的目标是最小化预测值与训练结果的差距
最大似然概率:http://blog.csdn.net/zengxiantao1994/article/details/72787849
已知一个样本空间和一个模型(参数已知但值未定),找出使得该模型可以最好地模拟样本空间的情况的参数值,以得到一个好的模型,可用于其它计算
输入:特征向量x,参数w和b
输出:0或1
用sigmoid函数对分类方法再处理一次,则结果?的取值为(0,1)
?=σ(wTx+b) σ(z) = 1/(1 + e-z)
训练得到的结果?与原始的标签y比较
判断训练的效果:loss(error)函数,cost函数
loss函数是针对一个样本的:l(?-y) = -(ylog? + (1-y)log(1-?))
cost函数衡量参数x和b在整个样本空间的训练效果(损失函数和的平均值):J(w, b) = 1/m ∑l(?(i)-y(i)) 这个和w、b哪里有关系???
损失函数的定义:当y和?接近时,损失函数的值越小。y的取值为0或1。当y=0时,l=xxx,若?趋近于0,l的值也趋于0。当y=1时,l=xxx,若?趋近于1,l的值趋于0
三、梯度下降法
利用梯度下降法来学习模型中的参数w和b,使得cost函数可以取到是小值
cost函数是一个凸函数(f(x1)+f(x2))/2>=f((x1+x2)/2)
梯度下降法:从某个点开始,每次朝最陡(梯度)的方向移动,最后可以到达全局最优(或相近位置)
对w求偏导以更新w:w:=w-αdJ(w,b)/dw α是学习率
b的更新方法与w相似
四、计算图
把一个计算式分成多个步骤写成一个流程图,前向传导是一步步计算,而后向传导则可以帮助求导
五、向量化
把for的显示循环用向量的方式计算,调用一些内置的函数,可以充分利用并行的优势以加快速度
能尽量少用for循环则少用
python中的广播:一个向量和另一个向量(或一个实数)运算,则其中维数较少的向量或实数会自动扩展成与另一个向量维数相同的向量,并进行元素上的运算
一些避免因为广播导致bug的方法:
1. 不使用秩为1的向量(不是行向量也不是列向量),而使用行、列都是确定的向量。使用秩为1的向量的话,好像会自动广播,而确定的维数的话就不会了???
把向量外积定义为:
|a ×b| = |a|·|b|·sin<a,b>.
方向根据右手法则确定,就是手掌立在a、b所在平面的向量a上,掌心由a转向b的过程中,大拇指的方向就是外积的方向
2. assert(a.shape==(5,1)) 来断言一个向量的维度
3. 使用一个不确定维数的向量时使用reshape
原文地址:https://www.cnblogs.com/coolqiyu/p/8503588.html