部分内容记录:
序号 | 内容 | 点 |
1.4 | 为什么深度学习会兴起? | 1、data_scale 与performance的二维图形,对于ml 当数据规模达到一定量后,算法性能表现不再上升,比较平稳; 2、但是nn可以有更大的性能表现,随着训练一个更大规模的NN 3、“scale drives deep learning progress":这里的scale 包含两部分:数据规模、网络规模 4、在算法性能上升区域,是很难说哪个算法更好的,可能跟程序员对数据处理等相关; 5、神经网络的激活函数一般采用修正线性单元(Relu)而非sigmod,因为在sigmod函数表现的两端,梯度接近于0,当采用梯度下降算法时,参数就会学习的很慢,relu在x大于0时梯度不会为0,可以使学习速度更快 |
2.1 | 2分分类 | 1、关于1张图片的表示,举例一张图片64*64像素,则1张图片表示为1列维的64*64*3的特征向量;而整个样本集表示为大写X,其中在神经网络训练中样本按列堆积表示,即为(nx,m);对应的Y表示为1行维的向量 |
2.3 | logistic回归损失函数 | 1、sigmod 函数公式 1/(1+e^(-z)) 2、逻辑回归的损失函数没有采用误差平方的形式,因为这种表示在优化的时候是非凸函数,采用梯度下降算法的话找到的是局部最优点 3、逻辑回归损失函数形式见下图片: |
2.4 | 梯度下降法 | 1、将"梯度下降"这个看起来高深的名词转换为最直观的认识:w:=w-α*(df(w)/d(w)),文字即 将w按照导数值变化更新(梯度、导数、斜率);w 有一个初始值,也就有这一点的梯度值,也就产生了下一个w的值,如此迭代;图片加深印象 |
2.5 | 导数 | df(w)/d(w),也就是表示函数f以w作为未知数求导,得到的一个函数式子。因此如果是一次函数求导得到的是恒定值,其他复杂函数就不是了 |
2.8 | 计算图求导数 | 1、以J=3*(a+b*c)举例子,要计算这个式子需要分为3个步骤,通过从左到右可以计算J(前向传播);通过从右到左可以计算出来a\b\c的导数(反向传播) 2、每一步的反向传播极大可能和当前样本的输入特征数据计算相关,也就是说反向传播得到的求导公式里包含当前样本的值的情况,所以就得先前向、再后向 |
2.10 | m个样本的logistic中的梯度下降 | 假设只有2个特征: 1、单个样本的梯度计算:根据loss函数,计算单个样本的w1,w2,b的梯度值(导数值) 2、m个样本的梯度计算:1次迭代,就是要把m个样本的关于w1,w2的梯度值都计算,然后取平均,更新一次w1,w2,b的值 |
2.11 | 向量化 | 1、显式消除for循环,实现快速计算的艺术 2、向量化逻辑回归、及梯度输出 |
2.18 | 逻辑回归成本函数解释 | 吴恩达深度学习 —— 2.18(选修)逻辑回归损失函数的解释_诗与远方-CSDN博客 |
3.3 | 计算神经网络的输出 | 1、计算层数通常是从隐含层开始1,输出层也算; 2、每一层的每一个隐藏单元就类似于逻辑回归完成的2步骤:z的计算、a的计算 3、神经网络就是在不断重复逻辑回归的2步 |
3.6 | 激活函数 | 1、sigmod:几乎不用,仅当在输出层做2分类的时候,因为想得到[0,1]的输出;几乎不用是因为tanh几乎在各方面强于sigmod; 2、tanh:[-1,1],因为其平均值为0,而不是sigmod的0.5,所以有数据中心化的作用,表现强于sigmod;公式见下图 3、relu:最常用的激活函数,因其梯度不会像sigmod、tanh一样接近于0,可以使得算法计算更快;公式见下图 |
3.11 | 随机初始化 | 1、逻辑回归的初始化可以全部设为0,图形是凸函数,无论从哪一点初始化都可以梯度下降找到最优点 2、神经网络如果全部初始化为0,梯度下降就失效了;原因是:不同于逻辑回归相当于1个输出单元完成2个步骤的计算,而神经网络1个隐藏层就有多个神经单元,如果把每一个神经单元的W初始化为0,那么根据公式转置W*X+b 将全部为0,这样网络就有对称性了,再多的隐藏单元也跟1个神经单元的计算没什么区别了; 3、所以一般的情况是,w进行随机初始化,b可以随机初始化,也可以初始化为0影响不大 |
4.3 | 核对矩阵的维数 | 核对矩阵的维数,可帮助排除程序错误 1、z,a,b的维数一致,跟当前层的单元数相关 2、w的维数跟当前层及前一层的单元数相关 |
4.7 | 参数VS超参数 | 超参数称之为控制参数的参数,例如神经网络里w和b是参数,是网络结构本身的参数,但是学习率、隐藏层数、每层隐藏单元数、迭代次数等是超参数,是可调节的参数 |