基础知识
基础知识-什么是分类问题
分类问题是根据已有数据,判断结果是正的还是负的(1或者0),比如:
• 根据肿瘤大小,判断肿瘤是良性的还是恶性的
• 根据客户交易行为,判断是否是恶意用户
• 根据邮件情况,判断是否垃圾邮件
下图:横坐标是肿瘤大小,纵坐标:是肿瘤的可能性,可能性大于 50% ,结果是 1 (恶性),小于 50% 结果是 0 (良性),下图中最右边的那个,体积很大,是恶性的可能性非常大
肿瘤有70%可能性是恶性,30%可能性是良性,两者加和为1

基础知识-逻辑回归算法(logsitic regression)
逻辑回归算法是解决分类问题的一种,下面是逻辑回归模型,x是肿瘤大小(已知数据),theta是需要训练的参数,一个肿瘤根据两个数据可以知道h(是肿瘤的概率),下图z>0认为是恶性肿瘤
线性决策边界:线右边的是恶性,左边是良性

非线性决策边界:圈外面的是恶性,圈里面是良性

基础知识-多分类(multi-class classification)
多分类:上述讲的是二分类,结果只有1和0,以此扩展为多分类,预测结果有很多可能。
比如预测天气可能是:晴天?阴天?雨天?雪天?分别预测每种情况的可能性,比如是晴天的可能性70%,阴天可能性60%。。。找可能性最大的那个,作为本次数据的结果

基础知识-什么是神经网络
神经网络模拟人类大脑,将大量的输入信息,经过多个节点(每个节点处理一部分)处理(输入层),将结果作为输入传给下个节点(隐藏层,每个隐藏层含多个节点,可以有多个隐藏层),隐藏层的输出传给最后一个节点,并得到结果
适用于数据量大,特征个数多,计算复杂的场景,在语音识别,图像识别等场景应用很广





基础知识-神经网络应用:识别手写数字,智能驾驶
识别手写数字:通过图片转化成数字输入,经过神经网络算法,输出结果数字

智能驾驶:通过观察人类的行驶学习转向,根据摄像头采集的画面画质(车上装传感器),转化成数据,预测出接下来应该是向左,向右,直向行驶(采用神经网络算法,多分类问题应用)
下图左上角第一个横线是驾驶员实际操作,第二个横线是系统预测的操作



计算方法
计算方法-总体方法
实现方法:正向传播计算结果,反向传播更新theta(这里的w和b就是theta),直到损失函数最小
1 正向传播

2 计算导数推演

3 逻辑回归计算导数推演


计算实现



计算方法-代价函数( cost function )
肿瘤举例:有了很多肿瘤的数据,训练theta,让预测的结果跟实际结果最相近,当有一个新的肿瘤案例,根据theta就知道新的病例是恶性的可能性有多大,所以我们要做的是找到最佳的theta
过程是:随机初始化参数=>算出预测值=>算出差异(损失函数J)=>更新参数=>算出预测值。。重复第二步,直到损失函数足够小

预测值与实际值的差距(叫做代价函数J)越小,代表预测的越准确


参数每次减去J的导数和学习速率乘积,更新自己

计算方法-导数
导数:变量x偏移一个小的单位,结果y变化的倍数,是斜率
直线的斜率是恒定值,曲线的斜率在不同的点不一样


计算方法-正向传播


计算方法-反向传播


反向传播可以让损失函数朝着最小值前进

计算方法-反向传播-梯度检测(选看)
当反向传播和其他算法(梯度下降等)一起工作时,可能会产生一些BUG,导致看起来都正常(比如代价函数在每次梯度都在减小),但其结果的误差很大,这时候需要用梯度检测,注意:在使用梯度检测验证反向传播是正确之后,应该关闭梯度检测,因为这个检测很耗费时间




计算方法-反向传播-随机初始化(选看)
如果初始化的theta都是0,对于x2产生的a1和a2是一样的,在反向传播会导致theta1和theta2一样,也就是说红色的两个线参数一样,绿色的2个线参数一样(蓝色也一样),虽然它们的值都不是0
参考
吴恩达深度学习和机器学习,关于神经网络部分