反向传播

2018秋招面试记录

你离开我真会死。 提交于 2021-02-16 10:59:06
作业帮笔试 leetcode 53 Maximum Subarray Given an integer array nums, find the contiguous subarray (containing at least one number) which has the largest sum and return its sum. Example: Input: [-2,1,-3,4,-1,2,1,-5,4], Output: 6 Explanation: [4,-1,2,1] has the largest sum = 6. class Solution { public: int maxSubArray(vector<int>& nums) { if (nums.empty()) { return -1; } int n = nums.size(); int max_val = nums[0]; int cur_max = 0; for (int i = 0; i < n; i++) { // 这样一来每次还会比较每个值的大小, 如果数组所有值为负数的话 cur_max += nums[i]; max_val = max(max_val, cur_max); cur_max = max(cur_max, 0); // 很优秀 } return max_val; } }

神经网络浅讲:从神经元到深度学习

。_饼干妹妹 提交于 2021-02-16 10:21:25
人工智能AI与大数据技术实战 公众号: weic2c 神经网络是一门重要的机器学习技术。它是目前最为火热的研究方向 -- 深度学习的基础。学习神经网络不仅可以让你掌握一门强大的机器学习方法,同时也可以更好地帮助你理解深度学习技术。   本文以一种简单的,循序的方式讲解神经网络。适合对神经网络了解不多的同学。本文对阅读没有一定的前提要求,但是懂一些机器学习基础会更好地帮助理解本文。   神经网络是一种模拟人脑的神经网络以期能够实现类人工智能的机器学习技术。人脑中的神经网络是一个非常复杂的组织。成人的大脑中估计有 1000 亿个神经元之多。 图1 人脑神经网络   那么机器学习中的神经网络是如何实现这种模拟的,并且达到一个惊人的良好效果的?通过本文,你可以了解到这些问题的答案,同时还能知道神经网络的历史,以及如何较好地学习它。   由于本文较长,为方便读者,以下是本文的目录:   一.前言   二.神经元   三.单层神经网络(感知器)   四.两层神经网络(多层感知器)   五.多层神经网络(深度学习)   六.回顾   七.展望   八.总结   九.后记   十.备注 一. 前言   让我们来看一个经典的神经网络。这是一个包含三个层次的神经网络。红色的是 输入层 ,绿色的是 输出层 ,紫色的是 中间层 (也叫 隐藏层 )。输入层有 3 个输入 单元,隐藏层有 4 个 单元

[硬核科普]神经网络:从神经元到深度学习

僤鯓⒐⒋嵵緔 提交于 2021-02-16 10:01:57
“ 原作者 :计算机的潜意识 重新排版 :「曲水流觞TechRill 」 , 转载请同时注明两个出处。 全文 :18K字,阅读需1小时 原文 : https://www.cnblogs.com/subconscious/p/5058741.html ” 神经网络是一门重要的机器学习技术。它是目前最为火热的研究方向--深度学习的基础。学习神经网络不仅可以让你掌握一门强大的机器学习方法,同时也可以更好地帮助你理解深度学习技术。 本文以一种简单的,循序的方式讲解神经网络。适合对神经网络了解不多的同学。本文对阅读没有一定的前提要求,但是懂一些 ‍‍‍‍‍ ‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍ ‍‍‍ 机器学习 参见本公众号另一篇: [硬核科普]从机器学习谈起 基础会更好地帮助理解本文。 神经网络是一种模拟人脑的神经网络以期能够实现类人工智能的机器学习技术。人脑中的神经网络是一个非常复杂的组织。成人的大脑中估计有1000亿个神经元之多。 图1 人脑神经网络 那么机器学习中的神经网络是如何实现这种模拟的,并且达到一个惊人的良好效果的?通过本文,你可以了解到这些问题的答案,同时还能知道神经网络的历史,以及如何较好地学习它。 由于本文较长,为方便读者,以下是本文的目录: 一.[前言] 二.[神经元] 三.[单层神经网络(感知器)] 四.[两层神经网络(多层感知器)] 五.[多层神经网络

关于卷积神经网络体系设计的理论实现

心不动则不痛 提交于 2021-02-12 04:45:44
  卷积神经网络,简称CNN,常用于视觉图像分析的深度学习的人工神经网络。形象地来说,这些网络结构就是由生物的神经元抽象拟合而成的。正如,每个生物神经元可以相互通信一般,CNN根据输入产生类似的通信输出。   若要论CNN的起源,那大概就是1980年代初了,随着最近技术的迅猛进步和计算能力的不断强大,CNN就此流行起来。简而言之,CNN技术允许在合理的时间内,利用其自身性和扩展性的算法对大量数据和复杂训练进行卷积维度的“神经”运算。目前,CNN主要应用于:基于人工智能的虚拟助手、自动照片标记、视频标记和自动驾驶汽车等方面。 一、卷积神经网络与常规神经网络的区别 CNN能处理分辨率更高的图像,解决常规神经网络不能解决的巨大计算开销问题;举个例子:如果考虑一个大小为224224个和3个通道的图像,它对应于224x224x3=150528的输入特性。一个典型的具有1000个节点的隐层神经网络在第一层本身就有150528×1000个参数。这对于常规神经网络来说,根本就难以估量; 具有检测不变性(Translation invariance)的特性,不管在识别过程中的哪个微时间阶段,或者图像识别的局部区域大小,都具有客观识物不变性质。 二、CNN的工作机制和原理   卷积层都是基于卷积的数学运算。卷积层由一组滤波器组成,就像一个二维数字矩阵。然后,滤波器与输入图像合并以产生输出

caffe详解之Python接口

▼魔方 西西 提交于 2021-02-03 00:24:55
从零开始,一步一步学习caffe的使用,期间贯穿深度学习和调参的相关知识! 生成net文件 from caffe import layers as L, params as P def lenet (lmdb, batch_size) : # 以Lenet-5网络搭建为例 n = caffe.NetSpec() # 继承自NetSpec # 创建数据层。数据层类型选用LMDB文件,向上传递两类数据(ntop=2):图片数据和对应的标签,并归一化到[0,1] n.data, n.label = L.Data(batch_size=batch_size, backend=P.Data.LMDB, source=lmdb, transform_param=dict(scale= 1. / 255 ), ntop= 2 ) #创建卷积层 n.conv1 = L.Convolution(n.data, kernel_size= 5 , num_output= 20 , weight_filler=dict(type= 'xavier' )) #创建池化层 n.pool1 = L.Pooling(n.conv1, kernel_size= 2 , stride= 2 , pool=P.Pooling.MAX) n.conv2 = L.Convolution(n.pool1, kernel

反向传播算法推导

蹲街弑〆低调 提交于 2021-02-01 11:20:29
一、MSE 损失函数推导 前向传播过程: 梯度反向传播公式推导: 定义残差: 则 残差推导如下: 对于最后一层: 广义上,左边项(-(···))是定义的损失函数对其输入(即最后一层神经元值)的导数,右项是sigmoind求导,这两项都是根据实际使用可以替换的。 对于隐藏层: 若去掉下标i,则有 其中 的操作是把两个向量对应元素相乘组成新的元素。 参考: https://www.cnblogs.com/nowgood/p/backprop2.html https://zhuanlan.zhihu.com/p/25416673 二、交叉熵损失函数推导 只放出最后一层残差: 参考:https://blog.csdn.net/Charel_CHEN/article/details/81266838 三、二元交叉熵损失梯度推导 参考:https://blog.csdn.net/chansonzhang/article/details/84674144 四、L2正则化以及反向传播 参考:https://blog.csdn.net/obrightlamp/article/details/85290929 五、CNN反向传播算法总结 注释:CNN反向传播主要解决四个问题 一二问对应步骤d-3,三问对应步骤d-2,四问对应步骤2-2-2. 具体推导细节请移步:https://www.cnblogs

我们的大脑,足以理解大脑本身吗?

早过忘川 提交于 2021-01-28 07:13:36
来源: 利维坦 树突(红色)神经元的分支过程,接收突触信息的突出棘的渲染,以及来自小鼠大脑皮层的饱和重建(多色圆柱体)。© Lichtman Lab at Harvard University 利维坦按: 关于大脑,你可以用这句话来自问:你 凭什么 觉得自己可以理解它呢?你或许会回答说:凭大脑。即,凭借大脑来理解大脑。但问题是,这两个“大脑”的信息匹配度或许存在很大差异。这就如同文中博尔赫斯那篇关于帝国地图的精妙描述:所有地图的绘制之所以能够以比例成图,就在于忽略掉了现实的很多细节,可试想,如果真要绘制一幅 囊括一切 细节 的地图,那么这张地图无疑与真实国度的比例相同了。 同理,鉴于我们目前对于脑内的这坨物质理解十分有限,所以,如何再描述“理解”可谓十分重要了。也许,未来人类对于人脑的理解可以非常接近我们的人脑地图“比例”,但,无限接近也仅仅是无限接近。 在去年秋天一个寒冷的夜晚,紫红的太阳缓缓坠落,我坐在哈佛大学郊外的办公室里,透过落地窗凝视着窗外的虚无,思考着关于老鼠大脑的数据集。 与此同时,我回想起波士顿市中心那些没有窗户的冰冷房间,那里的高性能计算中心存储着我宝贵的48TB数据。作为博士实验的一部分,我用了13万亿个字节来记录数据,并研究 老鼠大脑的视觉皮层是如何对运动做出反应的 。 如果将数据集按双倍行距打印出来,需要1160亿张纸。但当我写完关于这些数据的故事时

图灵奖得主Yann LeCun的六十年

纵饮孤独 提交于 2021-01-27 08:03:22
作者|陈大鑫、青暮 原文链接: https://mp.weixin.qq.com/s/baV9qKI73NrfsOZNbmSJ8g ​ mp.weixin.qq.com 当今世界人工智能领域,有三位AI学者被业内奉为“神一样的存在”,其中两位来自加拿大,一位来自法国。 他们就是2018年的图灵奖得主 Geoffrey Hinton 、 Yoshua Bengio ,以及我们今天要着重介绍的 Yann LeCun (以下简称“LeCun”)——纽约大学终身教授、纽约大学数据科学中心的创始人、Facebook人工智能研究院首席科学家。 LeCun是法国学术界非常引以为豪的科学家,也是在美国科技巨头公司中担任要职的为数不多的法国人。虽然同为“极客”,但法国人独特的气质让LeCun和很多美国科学家相比,看起来更加随意、富有亲和力。 他所开发的手写数字辨识模型LeNet,不但是反向传播算法的首次被实践,也证实了Hinton的想法是可行的,更是计算机视觉中常见的卷积神经网络原型。 在这篇文章中,AI科技评论将带大家回顾LeCun的一路走来的六十年。 ——1—— 从“2001太空漫游”到单板机 LeCun全名为Yann André Le Cun,他于1960年7月8日出生于法国巴黎西北边的一个小镇上。而Yann LeCun这个名字的由来,则是因为他考虑到自己的发展重心是美国和加拿大

浅层神经网络 反向传播推导:MSE softmax

允我心安 提交于 2021-01-27 06:52:11
基础:逻辑回归 Logistic 回归模型的参数估计为什么不能采用最小二乘法? logistic回归模型的参数估计问题不能“方便地”定义“误差”或者“残差”。 对单个样本: 第i层的权重 W [ i ] 维度的行等于i层神经元的个数,列等于i-1层神经元的个数;第i层常数项 b [ i ] b[i]维度的行等于i层神经元的个数,列始终为1。 对m个样本,用for循环不如用矩阵快,输入矩阵X的维度为( n x ,m),n x 是输入层特征数目。 其中, Z [ 1 ] 的维度是(4,m),4是隐藏层神经元的个数; A [ 1 ] 的维度与 Z [ 1 ] 相同; Z [ 2 ] 和 A [ 2 ] 的维度均为(1,m)。 行表示神经元个数,列表示样本数目m。 一文弄懂神经网络中的反向传播法——BackPropagation 反向传播推导 输出层 ----> 隐含层 以w5为例, 更新的是权值 : 1.计算总误差 分别计算o1和o2的误差,总误差为两者之和 2.链式法则 计算 : 计算 : 计算 : 最后三者相乘: 更新w5的值: 隐含层---->隐含层 方法其实与上面说的差不多,但是有个地方需要变一下,在上文计算总误差对w5的偏导时,是从out(o1)---->net(o1)---->w5,但是在隐含层之间的权值更新时,是out(h1)---->net(h1)---->w1,而

吴恩达深度学习学习笔记——C1W3——浅层神经网络-2

牧云@^-^@ 提交于 2021-01-26 10:25:38
3.6 激活函数 3.7 为什么需要非线性激活函数? 3.8 激活函数的导数 参考文章: sigmoid函数求导过程 https://blog.csdn.net/zhangyingjie09/article/details/82180199 Tanh激活函数及求导过程 https://blog.csdn.net/qq_35200479/article/details/84502844 3.9 神经网络的梯度下降法 3.10 (选修)直观理解反向传播 3.11 随机初始化 为什么不能将权重W初始化为零?因为这样做的话,同一隐层的每个节点的值将始终保持相同,失去了使用多个节点的意义(模型将过于简单,而难以有所作为) 来源: oschina 链接: https://my.oschina.net/u/4350591/blog/4924776