本周开始学习神经网络的一些简单用例
二分分类
主要是根据一些x的输入,来确定y的输出,其中y是0或者1,即判定是还是不是,所以称为二分分类。
输入的是判断的一些特征,在这之前应该进行特征提取,比如输入特征向量,向量的纬度可能会很大,来进行分类。
logistic回归
Logistic回归为概率型非线性回归模型,是研究二分类观察结果与一些影响因素之间关系的一种多
变量分析方法。在这个课中logistic函数是
定义域在负无穷到正无穷,值域是(0,1).这里的自变量x是有多个特征线性组合得到,逻辑斯特回归的重点就是训练这些参数
根据所给的m组数据训练参数,使得误差最小,于是就产生了损失函数。损失函数就是用来定义于真实情况的差距大小。
在以往的经验里是这样子,但是这个可能陷入局部最优(这个后面会讲到)
于是在这里我们使用这个损失函数,可以起到同样的效果,当yhat跟y越近,函数值就越小。
梯度下降法
梯度下降法就是从某一个给定的初值开始,朝着下降最快的方向走,多次迭代后达到局部最优解,当然,在凸问题中就是最全局最优解。
导数这两节的内容在基础课中均有学过,在这里就不再叙述。
计算图
这个类似于思维导图,流程图一类的。基于TensorFlow这个编程系统中的每一个计算都是计算图上的一个节点,而节点与节点之间的连线则代表计算之间的依赖关系。
这是课中举的简单的计算图例子。
前面的logistic回归就可以使用这个计算图表示。
向量化
用向量化来避免for循环,可以提高不少速度。
在逻辑回归中,以计算z为例,z=wT+b,你可以用for循环来实现。
但是在python中z可以调用numpy的方法,直接一句z=np.dot(w,x)+b用向量化完成,而且你会发现这个非常快。
ng做了个实验,求两个100万长的一维向量的內积,用向量化花了1.5毫秒,而用for循环计算花了400多毫秒。
所以平常记得用向量化,一定要避免使用for循环,你的代码会快很多。
CPU和GPU都有并行化的指令,有时候叫SIMD( single instruction multiple data )。
如果你使用了这样的内置函数,比如np.function,python的numpy能充分利用并行化去更快的计算。