精华内容
下载资源
问答
  • 吴恩达入门级机器视频学习课程,中英文字幕,对应pdf,百度云链接。
  • 吴恩达Coursera机器学习课程第二周编程作业 涵盖多个子文件
  • 吴恩达Coursera深度学习课程 deeplearning.ai (1-1) 深度学习概论--作业
  • 自己实现的吴恩达Coursera机器学习课程编程作业的满分代码,不包含optional部分。文件包含ex1~ex8的题目以及解决代码。
  • 该课程是对那些需要学习深度学习的人来说,是非常值得推荐和学习的
  • 吴恩达Coursera深度学习编程作业
  • 机器学习教程资源,下载地址,高清,迅雷影音打开有双语字幕
  • 吴恩达Coursera深度学习课程 deeplearning.ai (2-3) TensorFlow Tutorial--作业(可执行源码)
  • 吴恩达倾力奉献,创建的Coursera的deeplearning.ia。里面囊括了所有的上课笔记!
  • 前言 学以致用,以学促用,通过笔记总结,巩固学习成果,复习新学的概念。 目录 文章目录前言目录正文模型引入决策边界误差函数多分类问题作业答案 正文 本节学习内容主要为逻辑回归-分类。 模型引入 ...

    前言

    学以致用,以学促用,通过笔记总结,巩固学习成果,复习新学的概念。

    目录

    正文

    本节学习内容主要为逻辑回归-分类。

    模型引入

    fig1问题引入,收到一封邮件后,电脑如何自动判断将其归类为垃圾邮件,节约我们看邮件的时间。
    fig2例子,根据肿瘤尺寸对癌症的良性和恶性进行分类,假设计算的值》=0.5,则认为肿瘤是恶性的。
    fig3因为,我们想要0<y(x)<1,因此,我们选择了sigmoid函数作为映射函数,它的函数图像如图所示。
    fig4对于理论输出结果的解释,多少概率是这个结果。

    决策边界

    fig5逻辑回归模型详解,对应于y=1时的原始x值,以及中间输出值z的大小。

    fig6决策边界,即是分类超平面,是模型空间里正负两类的分界线。
    fig7分类便捷不一定是条直线,对于非线性问题它也可能是一条曲线。

    误差函数

    fig8为了选择一个合适的参数,我们需要一个合适的误差函数,而且这个误差函数是凸函数。

    fig9直观演示逻辑回归函数的误差函数1。
    fig9直观演示逻辑回归函数的误差函数2。
    fig10 误差函数组合,最终形式。

    fig11在这里插入图片描述在这里插入图片描述## 梯度下降的实现流程
    在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述这个程序的优化算法

    多分类问题

    在这里插入图片描述在这里插入图片描述多分类的分类边界
    在这里插入图片描述在这里插入图片描述多分类问题的实现方式,通过n个单分类器。

    作业答案

    ex2.m

    %% Machine Learning Online Class - Exercise 2: Logistic Regression
    %
    %  Instructions
    %  ------------
    % 
    %  This file contains code that helps you get started on the logistic
    %  regression exercise. You will need to complete the following functions 
    %  in this exericse:
    %
    %     sigmoid.m
    %     costFunction.m
    %     predict.m
    %     costFunctionReg.m
    %
    %  For this exercise, you will not need to change any code in this file,
    %  or any other files other than those mentioned above.
    %
    
    %% Initialization
    clear ; close all; clc
    
    %% Load Data
    %  The first two columns contains the exam scores and the third column
    %  contains the label.
    
    data = load('ex2data1.txt');
    X = data(:, [1, 2]); y = data(:, 3);
    
    %% ==================== Part 1: Plotting ====================
    %  We start the exercise by first plotting the data to understand the 
    %  the problem we are working with.
    
    fprintf(['Plotting data with + indicating (y = 1) examples and o ' ...
             'indicating (y = 0) examples.\n']);
    
    plotData(X, y);
    
    % Put some labels 
    hold on;
    % Labels and Legend
    xlabel('Exam 1 score')
    ylabel('Exam 2 score')
    
    % Specified in plot order
    legend('Admitted', 'Not admitted')
    hold off;
    
    fprintf('\nProgram paused. Press enter to continue.\n');
    pause;
    
    
    %% ============ Part 2: Compute Cost and Gradient ============
    %  In this part of the exercise, you will implement the cost and gradient
    %  for logistic regression. You neeed to complete the code in 
    %  costFunction.m
    
    %  Setup the data matrix appropriately, and add ones for the intercept term
    [m, n] = size(X);
    
    % Add intercept term to x and X_test
    X = [ones(m, 1) X];
    
    % Initialize fitting parameters
    initial_theta = zeros(n + 1, 1);
    
    % Compute and display initial cost and gradient
    [cost, grad] = costFunction(initial_theta, X, y);
    
    fprintf('Cost at initial theta (zeros): %f\n', cost);
    fprintf('Expected cost (approx): 0.693\n');
    fprintf('Gradient at initial theta (zeros): \n');
    fprintf(' %f \n', grad);
    fprintf('Expected gradients (approx):\n -0.1000\n -12.0092\n -11.2628\n');
    
    % Compute and display cost and gradient with non-zero theta
    test_theta = [-24; 0.2; 0.2];
    [cost, grad] = costFunction(test_theta, X, y);
    
    fprintf('\nCost at test theta: %f\n', cost);
    fprintf('Expected cost (approx): 0.218\n');
    fprintf('Gradient at test theta: \n');
    fprintf(' %f \n', grad);
    fprintf('Expected gradients (approx):\n 0.043\n 2.566\n 2.647\n');
    
    fprintf('\nProgram paused. Press enter to continue.\n');
    pause;
    
    
    %% ============= Part 3: Optimizing using fminunc  =============
    %  In this exercise, you will use a built-in function (fminunc) to find the
    %  optimal parameters theta.
    
    %  Set options for fminunc
    options = optimset('GradObj', 'on', 'MaxIter', 400);
    
    %  Run fminunc to obtain the optimal theta
    %  This function will return theta and the cost 
    [theta, cost] = ...
    	fminunc(@(t)(costFunction(t, X, y)), initial_theta, options);
    
    % Print theta to screen
    fprintf('Cost at theta found by fminunc: %f\n', cost);
    fprintf('Expected cost (approx): 0.203\n');
    fprintf('theta: \n');
    fprintf(' %f \n', theta);
    fprintf('Expected theta (approx):\n');
    fprintf(' -25.161\n 0.206\n 0.201\n');
    
    % Plot Boundary
    plotDecisionBoundary(theta, X, y);
    
    % Put some labels 
    hold on;
    % Labels and Legend
    xlabel('Exam 1 score')
    ylabel('Exam 2 score')
    
    % Specified in plot order
    legend('Admitted', 'Not admitted')
    hold off;
    
    fprintf('\nProgram paused. Press enter to continue.\n');
    pause;
    
    %% ============== Part 4: Predict and Accuracies ==============
    %  After learning the parameters, you'll like to use it to predict the outcomes
    %  on unseen data. In this part, you will use the logistic regression model
    %  to predict the probability that a student with score 45 on exam 1 and 
    %  score 85 on exam 2 will be admitted.
    %
    %  Furthermore, you will compute the training and test set accuracies of 
    %  our model.
    %
    %  Your task is to complete the code in predict.m
    
    %  Predict probability for a student with score 45 on exam 1 
    %  and score 85 on exam 2 
    
    prob = sigmoid([1 45 85] * theta);
    fprintf(['For a student with scores 45 and 85, we predict an admission ' ...
             'probability of %f\n'], prob);
    fprintf('Expected value: 0.775 +/- 0.002\n\n');
    
    % Compute accuracy on our training set
    p = predict(theta, X);
    
    fprintf('Train Accuracy: %f\n', mean(double(p == y)) * 100);
    fprintf('Expected accuracy (approx): 89.0\n');
    fprintf('\n');
    
    
    
    

    sigmoid.m

    function g = sigmoid(z)
    %SIGMOID Compute sigmoid function
    %   g = SIGMOID(z) computes the sigmoid of z.
    
    % You need to return the following variables correctly 
    g = zeros(size(z));
    
    % ====================== YOUR CODE HERE ======================
    % Instructions: Compute the sigmoid of each value of z (z can be a matrix,
    %               vector or scalar).
    g=1./(1+exp(-z));
    
    
    
    
    % =============================================================
    
    end
    
    

    costfunction.m

    function [J, grad] = costFunction(theta, X, y)
    %COSTFUNCTION Compute cost and gradient for logistic regression
    %   J = COSTFUNCTION(theta, X, y) computes the cost of using theta as the
    %   parameter for logistic regression and the gradient of the cost
    %   w.r.t. to the parameters.
    
    % Initialize some useful values
    m = length(y); % number of training examples
    
    % You need to return the following variables correctly 
    J = 0;
    grad = zeros(size(theta));
    
    % ====================== YOUR CODE HERE ======================
    % Instructions: Compute the cost of a particular choice of theta.
    %               You should set J to the cost.
    %               Compute the partial derivatives and set grad to the partial
    %               derivatives of the cost w.r.t. each parameter in theta
    %
    % Note: grad should have the same dimensions as theta
    %
    error=0;
    for i=1:m
    error=error-y(i)*log(sigmoid(X(i,:)*theta))-(1-y(i))*log(1-sigmoid(X(i,:)*theta));
    end
    J=error/m;
    for j=1:length(theta)
        factor=0;
        for i=1:m
           factor=factor+(sigmoid(X(i,:)*theta)-y(i))*X(i,j);
        end
        grad(j)=factor/m;
    end
    
    
    
    
    
    
    
    
    % =============================================================
    
    end
    
    

    predict.m

    function p = predict(theta, X)
    %PREDICT Predict whether the label is 0 or 1 using learned logistic 
    %regression parameters theta
    %   p = PREDICT(theta, X) computes the predictions for X using a 
    %   threshold at 0.5 (i.e., if sigmoid(theta'*x) >= 0.5, predict 1)
    
    m = size(X, 1); % Number of training examples
    
    % You need to return the following variables correctly
    p = zeros(m, 1);
    
    % ====================== YOUR CODE HERE ======================
    % Instructions: Complete the following code to make predictions using
    %               your learned logistic regression parameters. 
    %               You should set p to a vector of 0's and 1's
    %
    
    p= sigmoid(X*theta)>0.5;
    
    
    
    展开全文
  • 第一部分 深度学习概论 (1-1) 深度学习概论–课程笔记 (1-1) 深度学习概论–编程作业 (1-2) 神经网络基础–课程笔记 (1-2) 神经网络基础–编程作业 (1-3) 浅层神经网络–课程笔记 (1-3) 浅层神经网络–编程...

    第一部分 深度学习概论

    第二部分 深度学习及其优化

    第三部分 机器学习策略

    第四部分 卷积神经网络CNN

    第五部分 循环神经网络RNN

    展开全文
  • 吴恩达第五课Coursera,序列模型,RNN,GRU,LSTM,编程练习
  • Andrew Ng 吴恩达 Coursera 机器学习课程,全部作业(ex1- ex8)答案,Matlab运行通过。
  • 该课程是对那些需要学习深度学习的人来说,是非常值得推荐和学习的
  • 本资源是吴恩达机器学习的编程练习答案,包括matlab和python的两种版本
  • 经典教材无须赘述,很难找的资源,仅供诸君参考学习只用,最后且最重要的,买一本纸质书真的很重要
  • 该课程是对那些需要学习深度学习的人来说,是非常值得推荐和学习的
  • 吴恩达Coursera深度学习课程 deeplearning.ai (1-4) 深层神经网络--作业(可执行源码)
  • 内有详细搜集的吴恩达机器学习课的课后习题编程实现代码,有官方提供的matlab版本,还有多个用python实现的版本,并且附有详细的注释以及作业文档说明。
  • title: 吴恩达Coursera(DeepLearning.ai)笔记和作业汇总帖 date: 2018-10-18 20:01:05 id: dl-ai-summary tags: dl.ai categories: 汇总帖 吴恩达Coursera(DeepLearning.ai)笔记和作业汇总。 历时一个多月终于...

    title: 吴恩达Coursera(DeepLearning.ai)笔记和作业汇总帖
    date: 2018-10-18 20:01:05
    id: dl-ai-summary
    tags:

    • dl.ai
      categories:
    • 汇总帖

    吴恩达Coursera(DeepLearning.ai)笔记和作业汇总。

    历时一个多月终于把NG的五门课全部学完并且做了作业和笔记了。这里汇总一下:

    第一门课:神经网络和深度学习

    主要讲了神经网络的基本概念,以及机器学习的梯度下降法,向量化,而后进入了浅层和深层神经网络的实现。

    第二门课:改善神经网络

    介绍了改善神经网络的方法,如正则化,超参数调节,优化算法等。

    第三门课:结构化机器学习项目

    主要讲了机器学习中的一些策略。

    • 第一周:ML策略、正交化、优化指标、数据集的划分、偏差
    • 第二周:误差分析、数据不同分布、迁移学习、多任务、端到端

    第四门课:卷积神经网络

    主要讲了神经网络的在图像上的非常重要的应用,卷积神经网络。

    第五门课:序列模型

    主要讲了神经网络在语言领域的应用,用RNN模型

    展开全文
  • 吴恩达 coursera 机器学习,深度学习笔记, 中文,方便对照课程学习
  • 斯坦福大学吴恩达Coursera机器学习公开课中文笔记

    千次下载 热门讨论 2016-03-28 13:37:44
    此笔记为2014年Andrew Ng在Coursera 开设的机器学习Machine Learning公开课的中文笔记。 原作者为中国海洋大学博士生,感谢原作者的贡献。
  • 2.1 训练 / 开发 / 测试集 训练集:训练数据模型 开发验证集:选择最好的模型 无偏评估算法的运行状况 数据划分比例 - 小数据量(10-10000)... 在不需要无偏评估的时候可以没有测试集,只有训练集和开...

    相关课件:https://download.csdn.net/download/haoyutiangang/10495501

    2.1 训练 / 开发 / 测试集

    • 训练集: 训练数据模型
    • 开发验证集: 选择最好的模型
    • 测试集: 无偏评估算法的运行状况

    数据划分比例

    • 小数据量(10-10000):60/20/20
    • 大数据量(1000000) : 98/1/1
    • 超大数据量: 99.5/0.25/0.25
    1. 应该确保开发验证集与测试集来自同一分布
    2. 在不需要无偏评估的时候可以没有测试集,只有训练集和开发验证集,这时候有些人把开发验证集叫做测试集,所以当别人说他们只有训练集和测试集时,其实应该说只有训练集合开发验证集。

    2.2 偏差 / 方差

    • 高偏差:欠拟合
    • 高方差:过拟合
      image

    评判

    以下假设最优误差可以达到很小

    训练集误差测试集误差结论
    1%10%高方差
    15%16%高偏差
    15%30%高偏差 & 高方差
    0.5%1%低偏差 & 低方差

    2.3 机器学习基础

    • 高偏差:欠拟合
      • 增加网络结构,比如增加隐藏层数量
      • 训练更长的时间(不一定好使)
      • (寻找合适的网络架构)
    • 高方差:过拟合
      • 获取更多的数据
      • 正则化(regularization)
      • (寻找合适的网络架构)

    通过以上方法我们可以实现降低一方的同时不增加另一方,这也是深度学习对监督式学习的裨益。

    2.4 正则化(Regularization)

    过拟合(低偏差,高方差)的时候第一想到的应该是正则化,因为获取更多的数据有时并不那么容易。

    2.4.1 逻辑回归(Logistic regression)

    逻辑回归的L2正则化,因为W变化影响大,所以正则化时仅对w进行正则化
    J ( w , b ) = 1 m &ThickSpace; ∑ i = 1 m L ( y ^ ( i ) , y ( i ) ) + λ 2 m &ThickSpace; ∣ ∣ w ∣ ∣ 2 2 J(w,b) = \frac{1}{m}\;\sum_{i=1}{m}L(\hat y^{(i)}, y^{(i)}) + \frac{\lambda}{2m}\;||w||_2^2 J(w,b)=m1i=1mL(y^(i),y(i))+2mλw22

    • L2 正则化: 每一项平方的和
      λ 2 m &ThickSpace; ∣ ∣ w ∣ ∣ 2 2 = λ 2 m &ThickSpace; ∑ j = 1 n x w j 2 = λ 2 m &ThickSpace; w T w \frac{\lambda}{2m}\;||w||_2^2 = \frac{\lambda}{2m}\; \sum_{j=1}^{n_x}w_j^2 = \frac{\lambda}{2m}\;w^Tw 2mλw22=2mλj=1nxwj2=2mλwTw
    • L1 正则化:每一项和的绝对值
      λ m &ThickSpace; ∣ ∣ w ∣ ∣ 1 = λ m &ThickSpace; ∑ j = 1 n x ∣ w j ∣ \frac{\lambda}{m}\;||w||_1 = \frac{\lambda}{m}\; \sum_{j=1}^{n_x}|w_j| mλw1=mλj=1nxwj

    lambda 为Python保留字,编程时可以用lambd代替。

    2.4.2 神经网络(Neural network)

    神经网络的正则化
    J ( w [ 1 ] , b [ 1 ] , . . . , w [ l ] , b [ l ] ) = 1 m &ThickSpace; ∑ i = 1 m L ( y ^ ( i ) , y ( i ) ) + λ 2 m ∑ l = 1 L ∣ ∣ w [ l ] ∣ ∣ F 2 J(w^[1],b^[1],...,w^[l],b^[l]) = \frac{1}{m}\;\sum_{i=1}^{m} L(\hat y^{(i)}, y^{(i)}) + \frac{\lambda}{2m} \sum_{l=1}{L} ||w^{[l]}||_F^2 J(w[1],b[1],...,w[l],b[l])=m1i=1mL(y^(i),y(i))+2mλl=1Lw[l]F2
    后面仍然是每一项平方的加和, 该矩阵范数称为“Frobenius norm”

    2.4.3 权重衰减

    加入正则化后,梯度变为:
    d W [ l ] = ( f r o m _ b a c k p r o p ) + λ m W [ l ] dW^{[l]} = (from\_backprop) + \frac{\lambda}{m}W^{[l]} dW[l]=(from_backprop)+mλW[l]
    梯度更新公式变为:
    W [ l ] : = W [ l ] − α &ThickSpace; d W [ l ] W^{[l]} := W^{[l]} - \alpha \; dW^{[l]} W[l]:=W[l]αdW[l]
    代入可得:
    W [ l ] : = W [ l ] − α [ ( f r o m _ b a c k p r o p ) + λ m W [ l ] ] = W [ l ] − α &ThickSpace; λ m W [ l ] − α ( f r o m _ b a c k p r o p ) = ( 1 − α λ m ) W [ l ] − α ( f r o m _ b a c k p r o p ) \begin{aligned} W^{[l]} &amp;:= W^{[l]} - \alpha [(from\_backprop) + \frac{\lambda}{m}W^{[l]}] \\ &amp;= W^{[l]} - \alpha \; \frac{\lambda}{m}W^{[l]} - \alpha (from\_backprop) \\ &amp;= (1-\frac{\alpha\lambda}{m})W^{[l]} - \alpha (from\_backprop) \end{aligned} W[l]:=W[l]α[(from_backprop)+mλW[l]]=W[l]αmλW[l]α(from_backprop)=(1mαλ)W[l]α(from_backprop)
    因为W系数小于1,所以相当于给了W一个衰减的参数,故L2范数正则化也被称为"权重衰减(Weight decay)"。

    2.5 为什么正则化可以减少过拟合

    上文介绍,L2正则化后
    W [ l ] : = ( 1 − α λ m ) W [ l ] − α ( f r o m _ b a c k p r o p ) W^{[l]} := (1-\frac{\alpha\lambda}{m})W^{[l]} - \alpha (from\_backprop) W[l]:=(1mαλ)W[l]α(from_backprop)

    当lambda变得很大时,W会变得很小甚至趋近于零,而神经网络就趋近于线性回归,由于线性回归不能解决复杂拟合的情况,所以在一定程度上可以起到消除过拟合的问题。

    当然实际情况中,我们不会设置特别大的lambda, 但是从分析我们可以知道,存在一个lambda可以部分消除过拟合而不至于欠拟合。

    2.6 Dropout 正则化

    Dropout(随机失活): 随机消除一些神经元节点,保留下来的较小规模结构的神经网络进行训练。

    2.6.1 实现方法

    反向随机失活:Inverted dropout

    假设我们要对第3层进行dropout(修改的是a3)

    keep_prob = 0.8  # 设置神经元保留概率
    d3 = np.random.rand(a3.shape[0], a3.shape[1]) < keep_prob # 随机消除矩阵
    a3 = np.multiply(a3, d3) # 随机消除后的a3
    a3 /= keep_prob # 除以keep_prob,保持Z4期望值不变,Z4 = W4+b4
    

    仅在训练阶段使用dropout,在测试阶段不要使用,那样会使预测结果变得随机。

    2.7 理解 Dropout

    • 由于任何节点都可能被消除,所以无法依赖于某一个节点或者某一个输入特征,从而起到压缩权重的作用(权重分布更加均匀)
    • 不同层的 keep_prob 可变,怀疑哪层造成过拟合则可以在那一层设置较小的keep_prob
    • 通产不对输入层进行dropout

    缺点: 由于每次J都在变化,所以无法绘制出梯度下降图。

    使用:

    • 关闭dropout, 即设置keep_prob = 1
    • 运行代码,确保J单调递减
    • 再打开dropout进行训练

    2.8 其他正则化方法

    • 数据扩增(Data augmentation): 图片变换增加图片数据量,转换,剪裁等等。
    • early_stopping: 提前停止梯度下降。
      • 缺点: 无法单独处理偏差和方差,经常在方差不大的时候停止,此时偏差不够理想。

    2.9 归一化输入

    讲的是对输入的归一化,归一化到同样的范围内

    归一化均值

    μ = 1 m ∑ i = 1 m x ( i ) x = x − μ \begin{aligned} &amp;\mu = \frac{1}{m}\sum_{i=1}^{m}x^{(i)} \\ &amp;x = x - \mu \end{aligned} μ=m1i=1mx(i)x=xμ

    归一化方差:

    σ 2 = 1 m ∑ i = 1 m x ( i ) 2 x = x / σ 2 \begin{aligned} &amp;\sigma^2 = \frac{1}{m}\sum_{i=1}^{m}x^{(i)^2} \\ &amp;x = x / \sigma^2 \end{aligned} σ2=m1i=1mx(i)2x=x/σ2

    在训练集和测试集上使用同样的均值和方差进行归一化

    不使用归一化的代价函数中很可能我们需要很多次迭代才能到达全局最优解;如果使用了归一化,无论从哪个位置开始迭代,我们都能以相对很少的迭代次数找到全局最优解。

    2.10 梯度消失与梯度爆炸

    假设g(z) = z; b = 0

    y ^ = W [ l ] W [ l − 1 ] . . . W [ 1 ] X \hat y = W^{[l]}W^{[l-1]}...W^{[1]}X y^=W[l]W[l1]...W[1]X

    • 当各层W相等且大于1时,激活函数的值将以指数级递增
    • 当各层W相等且小于1时,激活函数的值将以指数级递减

    在梯度函数上出现的以指数级递增或者递减的情况就分别称为梯度爆炸或者梯度消失。

    2.11 神经网络的权重初始化

    随机初始化权重W
    Z = W 1 X 1 + W 2 X 2 + W n X n + b Z = W_1X_1+W_2X_2+W_nX_n +b Z=W1X1+W2X2+WnXn+b
    为了消除梯度消失和梯度爆炸,我们想把W设置为1附近。
    所以可以设置w_i 为1/n
    w [ l ] = n p . r a n d o m . r a n d n ( s h a p e ) ∗ n p . s q r t ( 1 n [ l − 1 ] ) w^{[l]} = np.random.randn(shape)*np.sqrt(\frac{1}{n^{[l-1]}}) w[l]=np.random.randn(shape)np.sqrt(n[l1]1)
    这里除以的是输入个数的算术平方根。

    • tanh 是合适于
      n p . s q r t ( 1 n [ l − 1 ] ) np.sqrt(\frac{1}{n^{[l-1]}}) np.sqrt(n[l1]1)
      又称为Xavier初始化

    • relu适合于
      n p . s q r t ( 2 n [ l − 1 ] ) np.sqrt(\frac{2}{n^{[l-1]}}) np.sqrt(n[l1]2)

    当然你也可以将其作为一个参数进行调试,但是相比于其他参数而言,这个参数调参的优先级较低。

    2.12 梯度的数值逼近

    使用双边误差的方法去逼近导数更准确, 精度比单边导数高很多
    f ′ ( θ ) = l i m ε → 0 f ( θ + ε ) − f ( θ − ε ) 2 ε O ( ε 2 ) f&#x27;(\theta) = lim_{\varepsilon\to0} \frac{f(\theta + \varepsilon) - f(\theta - \varepsilon)}{2\varepsilon} \\ O(\varepsilon^2) f(θ)=limε02εf(θ+ε)f(θε)O(ε2)

    2.13 梯度检验

    因为复杂函数求导比较复杂,容易出错,所以需要进行梯度检验,验证我们的反向传播计算是否准确。

    • 参数
      W [ 1 ] , b [ 1 ] , W [ 1 ] , b [ 1 ] , . . . , W [ n ] , b [ n ] d W [ 1 ] , d b [ 1 ] , d W [ 1 ] , d b [ 1 ] , . . . , d W [ n ] , d b [ n ] W^{[1]}, b^{[1]}, W^{[1]}, b^{[1]},..., W^{[n]}, b^{[n]}\\ dW^{[1]}, db^{[1]}, dW^{[1]}, db^{[1]},..., dW^{[n]}, db^{[n]} W[1],b[1],W[1],b[1],...,W[n],b[n]dW[1],db[1],dW[1],db[1],...,dW[n],db[n]
    1. 参数向量连接:将各个参数转化为列向量(n*1的矩阵),然后按照顺序连接这些列向量为一个大的列向量 theta。
    2. 导参数向量连接:同上
    3. 逼近求导:循环向量的每一个值i,利用双边导数定义计算 J_i+ , J_i- , 从而计算出 J’(下面说明 J_i+的计算方法,J_i-类似)
      • 向量矩阵的第 i 个值加上很小的 epsilon
      • 将向量反向转化为参数 W,…b
      • 利用各个参数求出 J 是为 J_i+, 同理可求J_i-
    4. 3中循环各个 i 后计算的 J’ 组合为一个导数列向量d_theta_approx, 与2的 d_theta 进行梯度检验

    c h e c k = ∣ ∣ d θ a p p r o x − d θ ∣ ∣ 2 ∣ ∣ d θ a p p r o x ∣ ∣ 2 + ∣ ∣ d θ ∣ ∣ 2 check = \frac{ || d\theta_{approx} - d\theta ||_2}{||d\theta_{approx}||_2 + ||d\theta ||_2} check=dθapprox2+dθ2dθapproxdθ2

    其中 ||.||_2 表示欧几里得范数,表示平方只和的平方根,得到欧氏距离。

    1. check 的值:
      • 10e(-7) great!
      • 10e(-5) please check!
      • 10e(-3) wrong!

    2.14 关于梯度检验实现的注记

    • 不要在训练中使用
    • 仅仅用于 debug
    • 如果梯度检验失败,仔细检查d_theta_approx的每一项,哪一项与 d_theta 相差越大,对应到参数 W或 b.可能帮你定位到 bug
    • 记着使用正则化
    • 不可与 dropout 同时使用,此时可以设置 dropout 的 keep_prob = 1.0
    • 随机初始化参数为比较小的值
    展开全文
  • 吴恩达Coursera深度学习课程 deeplearning.ai (1-3) 浅层神经网络--作业(可执行源码)
  • 吴恩达Coursera深度学习课程 deeplearning.ai (2-2) 优化算法--作业(可执行源码)
  • 本次上传的文件是吴恩达老师在coursera上机器学习第一、二、三、四周的课堂练习,包括每节课程里暂停的作业以及每章会有的五个小练习,都是自己在coursera网上遇到是截图下来的,希望与大家一起交流学习
  • 该课程是对那些需要学习深度学习的人来说,是非常值得推荐和学习的
  • 说起吴恩达「Andrew Ng」,相信大家都非常熟悉...自去年8月开始,吴恩达Coursera 上开设了由 5 门课组成的深度学习专项课程,掀起了一股人工智能深度学习热潮。这里附上deeplearning.ai的官网: https://www.de...
  • Building your Recurrent Neural Network - Step by Step Welcome to Course 5's first assignment! In this assignment, you will implement your first Recurrent Neural Network in numpy. ...
  • 吴恩达Coursera深度学习课程 deeplearning.ai (1-1) 深度学习概论--课件

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,763
精华内容 2,305
关键字:

吴恩达coursera

友情链接: 9927400NonLinerFEM.rar