1.Mini_batch gradient descent 小批量梯度下降法

思想:batch gd是一次性处理所有数据,在数据集较大时比如500万个样本,一次迭代的时间会很长,而mini_batch gd是把数据集分为多个子数据集,每个eopch中对子集进行一次处理

实现:实现mini_batch分为两步,第一步shuffle,将原集打乱,乱序步骤确保将样本被随机分成不同的小批次。第二步partition分割,把训练集打乱之后,我们就可以对它进行切分了

shuffle 程序段:

permutation=list(np.random.permutation(m))

shuffled_X=X[:,permutation]

shuffled_Y=Y[:,permutation].reshape(1,m)

partition程序段:

num_complete_minibatches=math.floor(m/mini_batch_size)
    for k in range(0,num_complete_minibatches):
        mini_batch_X=shuffled_X[:,k*mini_batch_size:(k+1)*mini_batch_size]
        mini_batch_Y=shuffled_Y[:,k*mini_batch_size:(k+1)*mini_batch_size]
        mini_batch=(mini_batch_X,mini_batch_Y)
        mini_batches.append(mini_batch)
    if m%mini_batch_size!=0:
        mini_batch_X=shuffled_X[:,num_complete_minibatches*mini_batch_size:m]
        mini_batch_Y=shuffled_Y[:,num_complete_minibatches*mini_batch_size:m]
        mini_batch=(mini_batch_X,mini_batch_Y)

mini_batches.append(mini_batch)       #mini_batches是一个list,其中元素为tuple

经过打乱,分割得到的mini_batches是一个包含tuple的列表,迭代时可以通过以下代码访问:

for minibatch in mini_batches:

minibatch_X,minibatch_Y=minibatch

然后将minibatch_X,minibatch_Y看做X,Y进行前向传播,反向传播等处理。

2. Momentum 梯度下降算法

思想:计算梯度的指数加权平均,并利用该梯度更新权重,利用动量梯度下降算法可以减小纵向波动,加速收敛。

算法实现:

第一步,初始化V,即velocity:

def initialize_velocity(parameters):
    L=len(parameters)//2
    v={}
    for l in range(L):
        v['dW'+str(l+1)]=np.zeros((parameters['W'+str(l+1)].shape))
        v['db'+str(l+1)]=np.zeros((parameters['b'+str(l+1)].shape))

return v

第二步,对更新参数函数,update_parameters()做一定修改:

def update_parameters_with_momentum(parameters,grads,v,beta,learning_rate):
    L=len(parameters)//2
    for l in range(L):
        v['dW'+str(l+1)]=beta*v['dW'+str(l+1)]+(1-beta)*grads['dW'+str(l+1)]
        parameters['W'+str(l+1)]=parameters['W'+str(l+1)]-learning_rate*v['dW'+str(l+1)]
        v['db'+str(l+1)]=beta*v['db'+str(l+1)]+(1-beta)*grads['db'+str(l+1)]
        parameters['b'+str(l+1)]=parameters['b'+str(l+1)]-learning_rate*v['db'+str(l+1)]

return parameters,v

3.adam优化算法:

是动量梯度算法的另一种优化

实现同样分两步,需要对V,S进行初始化并对更新参数函数加以修改

整个实现过程如下:

def initialize_adam(parameters):L = len(parameters) // 2v = {}s = {}
    for l in range(L):v["dW" + str(l + 1)] = np.zeros_like(parameters["W" + str(l + 1)])v["db" + str(l + 1)] = np.zeros_like(parameters["b" + str(l + 1)])s["dW" + str(l + 1)] = np.zeros_like(parameters["W" + str(l + 1)])s["db" + str(l + 1)] = np.zeros_like(parameters["b" + str(l + 1)])return (v,s)
def update_parameters_with_adam(parameters,grads,v,s,t,learning_rate=0.01,beta1=0.9,beta2=0.999,epsilon=1e-8):L = len(parameters) // 2v_corrected = {} #偏差修正后的值s_corrected = {} #偏差修正后的值for l in range(L):#梯度的移动平均值,输入:"v , grads , beta1",输出:" v "v["dW" + str(l + 1)] = beta1 * v["dW" + str(l + 1)] + (1 - beta1) * grads["dW" + str(l + 1)]v["db" + str(l + 1)] = beta1 * v["db" + str(l + 1)] + (1 - beta1) * grads["db" + str(l + 1)]#计算第一阶段的偏差修正后的估计值,输入"v , beta1 , t" , 输出:"v_corrected"v_corrected["dW" + str(l + 1)] = v["dW" + str(l + 1)] / (1 - np.power(beta1,t))v_corrected["db" + str(l + 1)] = v["db" + str(l + 1)] / (1 - np.power(beta1,t))#计算平方梯度的移动平均值,输入:"s, grads , beta2",输出:"s"s["dW" + str(l + 1)] = beta2 * s["dW" + str(l + 1)] + (1 - beta2) * np.square(grads["dW" + str(l + 1)])s["db" + str(l + 1)] = beta2 * s["db" + str(l + 1)] + (1 - beta2) * np.square(grads["db" + str(l + 1)])#计算第二阶段的偏差修正后的估计值,输入:"s , beta2 , t",输出:"s_corrected"s_corrected["dW" + str(l + 1)] = s["dW" + str(l + 1)] / (1 - np.power(beta2,t))s_corrected["db" + str(l + 1)] = s["db" + str(l + 1)] / (1 - np.power(beta2,t))#更新参数,输入: "parameters, learning_rate, v_corrected, s_corrected, epsilon". 输出: "parameters".parameters["W" + str(l + 1)] = parameters["W" + str(l + 1)] - learning_rate * (v_corrected["dW" + str(l + 1)] / np.sqrt(s_corrected["dW" + str(l + 1)] + epsilon))parameters["b" + str(l + 1)] = parameters["b" + str(l + 1)] - learning_rate * (v_corrected["db" + str(l + 1)] / np.sqrt(s_corrected["db" + str(l + 1)] + epsilon))return (parameters,v,s)

2.2吴恩达深度学习笔记之优化算法相关推荐

  1. 吴恩达深度学习笔记(四)

    吴恩达深度学习笔记(四) 卷积神经网络CNN-第二版 卷积神经网络 深度卷积网络:实例探究 目标检测 特殊应用:人脸识别和神经风格转换 卷积神经网络编程作业 卷积神经网络CNN-第二版 卷积神经网络 ...

  2. 799页!吴恩达深度学习笔记.PDF

    吴恩达深度学习课程,是公认的最优秀的深度学习课程之一,目前没有教材,只有视频,本文提供完整笔记下载,这本笔记非常适合和深度学习入门. 0.导语 黄海广博士和同学将吴恩达老师深度学习视频课程做了完整的笔 ...

  3. 吴恩达深度学习笔记——卷积神经网络(Convolutional Neural Networks)

    深度学习笔记导航 前言 传送门 卷积神经网络(Convolutional Neural Networks) 卷积神经网络基础(Foundations of Convolutional Neural N ...

  4. 吴恩达深度学习笔记——神经网络与深度学习(Neural Networks and Deep Learning)

    文章目录 前言 传送门 神经网络与深度学习(Neural Networks and Deep Learning) 绪论 梯度下降法与二分逻辑回归(Gradient Descend and Logist ...

  5. 吴恩达深度学习笔记——结构化机器学习项目(Structuring Machine Learning Projects)

    深度学习笔记导航 前言 传送门 结构化机器学习项目(Machine Learning Strategy) 机器学习策略概述 正交化(orthogonalization) 评价指标 数字评估指标的单一性 ...

  6. 吴恩达深度学习笔记1-Course1-Week1【深度学习概论】

    2018.5.7 吴恩达深度学习视频教程网址 网易云课堂:https://mooc.study.163.com/smartSpec/detail/1001319001.htm Coursera:htt ...

  7. 吴恩达深度学习笔记(四)—— 正则化

    有关正则化的详细内容: 吴恩达机器学习笔记(三) -- Regularization正则化 <机器学习实战>学习笔记第五章 -- Logistic回归 主要内容: 一.无正则化 二.L2正 ...

  8. 吴恩达深度学习笔记_Github标星过万的吴恩达机器学习、深度学习课程笔记,《统计学习方法》代码实现,可以在线阅读了!...

    吴恩达机器学习.深度学习,李航老师<统计学习方法>,可以说是机器学习入门的宝典.本文推荐一个网站"机器学习初学者",把以上资源的笔记.代码实现做成了网页版,可以在线阅读 ...

  9. 吴恩达--深度学习笔记

    这是一个督促自己学习的笔记 文章目录 这是一个督促自己学习的笔记 1.logistic回归 1. 神经网络基础----二分分类 2. logistic回归 3. logistic回归损失函数 4. 梯 ...

最新文章

  1. Chmod 777到一个文件夹和所有内容[重复]
  2. eclipse 常见问题及解决
  3. Linux进程之间通信 消息队列
  4. 城市流动劳动力的数学模型matlab,数学建模_人口预测
  5. HTTP/2特性及其在实际应用中的表现
  6. java 新项目计划_项目计划 - KerryJava - 博客园
  7. 计算机组成原理课程(唐朔飞)最全笔记
  8. 数列科技开源全链路压测平台Takin-总结
  9. c语言题库及详解答案 免费下载,C语言题库(带详解答案).pdf
  10. 数据结构:算法的时间复杂度和空间复杂度
  11. 解决显卡驱动错误43
  12. InterSystems开发者竞赛:InterSystems IRIS Analytics
  13. 第 342 场力扣周赛
  14. Python input函数
  15. a烟台计算机哪个学校好,烟台多所学校有新消息,家长速看!
  16. 电大学位计算机考试题库,电大学位英语跟考试题库一模一样.doc
  17. iOS客户端图片智能裁剪
  18. python大数据入门书籍_初学大数据,一定要知道这些
  19. jsp导入MySQL包_jsp操作数据库需要导入的包
  20. java生成永远不重复的随机数_java生成不重复随机数的方法

热门文章

  1. 面试经验 | 一个 Android 小老弟的面试记录 (1-3年)
  2. Redis和Memcached的区别
  3. 前端中的icon几种用法
  4. 【汇正财经】股权结构与企业治理有什么关系?
  5. rviz导航——2D Pose estimate
  6. 认证、授权、鉴权、权限控制
  7. 蛋壳公寓信息/信息网爬取/小猪短租/豆瓣/拉钩/人民邮电报/百度电视剧/加载更多-获取字符串中间任意内容
  8. 使用yagmail发送邮件遇到的问题
  9. php试题答案是非题,PHP试题带答案
  10. 无源定位入门(一)TDOA(3)CRLB