您的位置:首页 > 理论基础 > 计算机网络

吴恩达《深度学习-神经网络和深度学习》2--神经网络基础

2018-01-23 21:12 561 查看
1.二分类
  对特征X以及y的矩阵一般这样标记:(统一的标记方法会让后续的处理更容易)



X.shape是python中的命令,来确保X矩阵中每一列是一个样本的数据。
2.  逻辑回归为什么引入sigmoid函数
对于线性回归

,y可能是任意值,而逻辑回归希望完成的是(离散)分类,即确定什么情况下属于此类而什么情况下不属于此类,对此,很难找到一个实数来划分,若能控制y的取值在0到1之间,通过判断y是否为1来确定分类,那么这个问题就可解了,所以这里引入了sigmoid函数,将实数投影到(0,1)这个区间。





在深度学习里面用w和b来代替机器学习里面的参数theta



3. 逻辑回归的损失函数和成本函数
   (1) 损失函数为什么取log?
    损失函数用来衡量单个样本预测值与实际值的相似度,通常定义为

,但这个函数会导致后面优化问题为非凸性的,即会有多个局部最优解,可能找不到全局最优解。
     (2) 成本函数(cost function)用来衡量算法在整个样本集中的表现



4. 梯度下降(Gradient Descent)





由导数的正负来控制下降的方向
5.  神经网络的梯度下降
欲用梯度下降求最优解,需先求偏导,对于神经网络来说求导需要链式法则+反向传播

6. 向量化
用向量代替for循环可以大大提高运行效率



GPU和CPU 都可以使用SIMD进行并行计算,相比CPU来说,GPU更擅长。



7. 用python写code的一些建议
  1)构建矩阵时要标注行列号
import numpy as np
a.np.random.randn(5)  //这样构建的其实并不是一个向量,打印a.shape为(5,),是一个秩为1的数组(rank 1 array),其转置等于本身,即aT=a,所以后续操作如果将其看作向量,会产生很多问题。可以用a.reshape((5,1))转换成向量形式
a.np.random.randn(5,1)  //推荐这种方式,显示指出行列号,构建向量,a.shape为(5,1).
assert(a.shape=(5,1))  //如果不确定向量的维度,可以使用assert,来确保这是一个列向量( 行向量assert(a.shape=(1,5)))

8. 逻辑回归成本函数详解(选修)







以上是单个样本的损失函数,对于整个数据集来说,其成本函数如下:



计算过程采用的极大似然估计,极大似然估计的求解步骤为:1写出似然函数,2如果无法对似然函数求导,那么就先取对数,3求导,并令偏导为0,4求解模型最优参数。
训练样本独立分布,所以整个样本集的似然函数是P=P(y1|x1)*P(y2|x2)*……*P(ym|xm),
求其最大值,最理想的做法是求一阶导令其为零,而似然函数为乘积形式,无法通过求导获得最优解,所以取对数令乘积变成求和,且其最优值与原函数保持一致
令似然函数最大等价于对其负值求最小值,这就引出了成本函数。(分类问题的最优解即是令成本函数最小的参数)



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐