在统计学中,损失函数是一种衡量损失和错误(这种损失与“错误地”估计有关,如费用或者设备的损失)程度的函数.假设某样本的实际输出为a,而预计的输出为y,则y与a之间存在偏差,深度学习的目的即是通过不断地训练迭代,使得a越来越接近y,即 a - y →0,而训练的本质就是寻找损失函数最小值的过程. 常见的损失函数为两种,一种是均方差函数,另一种是交叉熵函数.对于深度学习而言,交叉熵函数要优于均方差函数,原因在于交叉熵函数配合输出层的激活函数如sigmoid或softmax函数能更快地加速深度学习的训…
Dropout是过去几年非常流行的正则化技术,可有效防止过拟合的发生.但从深度学习的发展趋势看,Batch Normalizaton(简称BN)正在逐步取代Dropout技术,特别是在卷积层.本文将首先引入Dropout的原理和实现,然后观察现代深度模型Dropout的使用情况,并与BN进行实验比对,从原理和实测上来说明Dropout已是过去式,大家应尽可能使用BN技术. 一.Dropout原理 根据wikipedia定义,dropout是指在神经网络中丢弃掉一些隐藏或可见单元.通常来说,是在神…
深度学习最终目的表现为解决分类或回归问题.在现实应用中,输出层我们大多采用softmax或sigmoid函数来输出分类概率值,其中二元分类可以应用sigmoid函数. 而在多元分类的问题中,我们默认采用softmax函数,具体表现为将多个神经元的输出,映射到0 ~ 1的区间中,按概率高低进行分类,各概率之和为1. 某分类的概率数学表达式为:yi = ei / ∑j=1ej   具体来说,假设有四个输出单元,分别为: y1 = ex1 / (ex1 + ex2 + ex3 + ex4 ),假设其概…
在深度学习中,数据短缺是我们经常面临的一个问题,虽然现在有不少公开数据集,但跟大公司掌握的海量数据集相比,数量上仍然偏少,而某些特定领域的数据采集更是非常困难.根据之前的学习可知,数据量少带来的最直接影响就是过拟合.那有没有办法在现有少量数据基础上,降低或解决过拟合问题呢? 答案是有的,就是数据增强技术.我们可以对现有的数据,如图片数据进行平移.翻转.旋转.缩放.亮度增强等操作,以生成新的图片来参与训练或测试.这种操作可以将图片数量提升数倍,由此大大降低了过拟合的可能.本文将详解图像增强技术在K…
Batch Normalization(批量标准化,简称BN)是近些年来深度学习优化中一个重要的手段.BN能带来如下优点: 加速训练过程: 可以使用较大的学习率: 允许在深层网络中使用sigmoid这种易导致梯度消失的激活函数: 具有轻微地正则化效果,以此可以降低dropout的使用. 但为什么BN能够如此有效?让我们来一探究竟. 一.Covariate Shift Convariate shift是BN论文作者提出来的概念,其意是指具有不同分布的输入值对深度网络学习的影响.举个例子,假设我们有…
ResNet可以说是在过去几年中计算机视觉和深度学习领域最具开创性的工作.在其面世以后,目标检测.图像分割等任务中著名的网络模型纷纷借鉴其思想,进一步提升了各自的性能,比如yolo,Inception-v4等. ResNet通过重构模型对残差映射(Residual mapping)进行拟合,而非以往那样拟合期望的潜在映射(Underlying mapping).借助这一举措,ResNet解决了"退化问题"(Degradation problem),使得训练数百甚至数千层网络成为可能,且…
我们在学习成熟网络模型时,如VGG.Inception.Resnet等,往往面临的第一个问题便是这些模型的各层参数是如何设置的呢?另外,我们如果要设计自己的网路模型时,又该如何设置各层参数呢?如果模型参数设置出错的话,其实模型也往往不能运行了. 所以,我们需要首先了解模型各层的含义,比如输出尺寸和可训练参数数量.理解后,大家在设计自己的网路模型时,就可以先在纸上画出网络流程图,设置各参数,计算输出尺寸和可训练参数数量,最后就可以照此进行编码实现了. 而在keras中,当我们构建模型或拿到一个成熟…
Global Average Pooling(简称GAP,全局池化层)技术最早提出是在这篇论文(第3.2节)中,被认为是可以替代全连接层的一种新技术.在keras发布的经典模型中,可以看到不少模型甚至抛弃了全连接层,转而使用GAP,而在支持迁移学习方面,各个模型几乎都支持使用Global Average Pooling和Global Max Pooling(GMP). 然而,GAP是否真的可以取代全连接层?其背后的原理何在呢?本文来一探究竟. 一.什么是GAP? 先看看原论文的定义: In th…
在深度学习过程中,会经常看见各成熟网络模型在ImageNet上的Top-1准确率和Top-5准确率的介绍,如下图所示: 那Top-1 Accuracy和Top-5 Accuracy是指什么呢?区别在哪呢?我们知道ImageNet有大概1000个分类,而模型预测某张图片时,会给出1000个按概率从高到低的类别排名, 所谓的Top-1 Accuracy是指排名第一的类别与实际结果相符的准确率, 而Top-5 Accuracy是指排名前五的类别包含实际结果的准确率. 下面的代码可更为直观地说明其中的区…
常见的激活函数有sigmoid.tanh和relu三种非线性函数,其数学表达式分别为: sigmoid: y = 1/(1 + e-x) tanh: y = (ex - e-x)/(ex + e-x) relu: y = max(0, x) 其代码实现如下: import numpy as np import matplotlib.pyplot as plt def sigmoid(x): return 1 / (1 + np.exp(-x)) def tanh(x): return (np.e…
<深度学习基础> 卷积神经网络,循环神经网络,LSTM与GRU,梯度消失与梯度爆炸,激活函数,防止过拟合的方法,dropout,batch normalization,各类经典的网络结构,各类优化方法 1.卷积神经网络工作原理的直观解释 https://www.zhihu.com/question/39022858 简单来说,在一定意义上,训练CNN就是在训练每一个卷积层的滤波器.让这些滤波器组对特定的模式有高的激活能力,以达到CNN网络的分类/检测等目的. 2.卷积神经网络的复杂度分析 ht…
如果你希望系统性的了解神经网络,请参考零基础入门深度学习系列,下面我会粗略的介绍一下本文中实现神经网络需要了解的知识. 什么是深度神经网络? 神经网络包含三层:输入层(X).隐藏层和输出层:f(x) 每层之间每个节点都是完全连接的,其中包含权重(W).每层都存在一个偏移值(b). 每一层节点的计算方式如下: 其中g()代表激活函数,o()代表softmax输出函数. 使用Flow Graph的方式来表达如何正向推导神经网络,可以表达如下: x: 输入值 a(x):表示每个隐藏层的pre-acti…
前期回顾: 深度学习实践系列(1)- 从零搭建notMNIST逻辑回归模型 深度学习实践系列(2)- 搭建notMNIST的深度神经网络 在第二篇系列中,我们使用了TensorFlow搭建了第一个深度神经网络,并且尝试了很多优化方式去改进神经网络学习的效率和提高准确性.在这篇文章,我们将要使用一个强大的神经网络学习框架Keras配合TensorFlow重新搭建一个深度神经网络. 什么是Keras? 官方对于Keras的定义如下: "Keras: Deep Learning library for…
"大菜":源于自己刚踏入猿途混沌时起,自我感觉不是一般的菜,因而得名"大菜",于自身共勉. 扩展阅读 c#基础系列1---深入理解 值类型和引用类型 c#基础系列2---深入理解 String 在上篇文章深入理解值类型和引用类型的时候,有的小伙伴就推荐说一说ref和out 关键字,昨天晚上彻夜难眠在想是否要谈一下呢,因为可谈的不是太多,也可能是我理解的不够深刻. 应用场景 out 修饰函数参数,以传递引用的方式向函数传递参数. out 关键字也可与泛型类型参数结合使…
[C++自我精讲]基础系列五 隐式转换和显示转换 0 前言 1)C++的类型转换分为两种,一种为隐式转换,另一种为显式转换. 2)C++中应该尽量不要使用转换,尽量使用显式转换来代替隐式转换. 1 隐式转换 定义:隐式转换是系统跟据程序的需要而自动转换的. 1)C++类型(char,int,float,long,double等)的隐式转换: 算术表达式隐式转换顺序为: 1.char - int - long - double 2.float - double //1)算术表达式 ; double…
UFLDL深度学习笔记 (五)自编码线性解码器 1. 基本问题 在第一篇 UFLDL深度学习笔记 (一)基本知识与稀疏自编码中讨论了激活函数为\(sigmoid\)函数的系数自编码网络,本文要讨论"UFLDL 线性解码器",区别在于输出层去掉了\(sigmoid\),将计算值\(z\)直接作为输出.线性输出的原因是为了避免对输入范围的缩放: S 型激励函数输出范围是 [0,1],当$ f(z^{(3)}) $采用该激励函数时,就要对输入限制或缩放,使其位于 [0,1] 范围中.一些数据…
TensorFlow深度学习基础与应用实战高清视频教程,适合Python C++ C#视觉应用开发者,基于TensorFlow深度学习框架,讲解TensorFlow基础.图像分类.目标检测训练与测试以及后期在C++和C#的应用. 视频目录如下: 你能学到那些内容预览: TensorFlow深度学习基础与应用实战高清视频教程,适合Python C++ C#视觉应用开发者,基于TensorFlow深度学习框架,讲解TensorFlow基础.图像分类.目标检测训练与测试以及后期在C++和C#的应用.…
之前的[笔记] 基于nvidia/cuda的深度学习基础镜像构建流程已经Out了,以这篇为准. 基于NVidia官方的nvidia/cuda image,构建适用于Deep Learning的基础image. 思路就是先把常用的东西都塞进去,build成image,此后使用时想装哪个框架就装. 为了体验重装系统的乐趣,所以采用慢慢来比较快的步骤,而不是通过Dockerfile来build. 环境信息 已经安装了Docker CE和NVIDIA Container Toolkit,具体流程参考这里…
从业这么久了,做了很多项目,一直对机器学习的基础课程鄙视已久,现在回头看来,系统的基础知识整理对我现在思路的整理很有利,写完这个基础篇,开始把AI+cv的也总结完,然后把这么多年做的项目再写好总结. 参考:机器学习&深度学习算法及代码实现 学习路线第一步:数学主要为微积分.概率统计.矩阵.凸优化 第二步:数据结构/算法常见经典数据结构(比如字符串.数组.链表.树.图等).算法(比如查找.排序)同时,辅助刷leetcode,提高编码coding能力 第三步:Python数据分析掌握Python这门…
欢迎大家关注我们的网站和系列教程:http://www.tensorflownews.com/,学习更多的机器学习.深度学习的知识! 笔者:Ray 介绍 通过对前面文章的学习,对深度神经网络(DNN)和卷积神经网络(CNN)有了一定的了解,也感受到了这些神经网络在各方面的应用都有不错的效果.然而这些网络都有一个共同的特点:每一层的神经元之间是相互独立的,如输入层的神经元彼此之间是独立的.然而,现实世界中很多元素之间都是有相互联系的.比如一部连续剧的内容,上一集和这一集的内容会有一定的联系:同样的…
前言 上一节中我们提到了同步异步与阻塞非阻塞的区别,知道了同步并不等于阻塞.而本节的主角NIO是一种同步非阻塞的I/O模型,并且是I/O多路复用模型.NIO在java中被称为 New I/O.它并不能提高I/O处理的效率,注意我这里说的是效率,而从根本上解决的是I/O处理的并发问题. 那么NIO的本质是什么样的呢?它是怎样与事件模型结合来解放线程.提高系统吞吐的呢? 回顾五种I/O模型 由上图可知,所有的系统I/O都分为两个阶段:等待就绪和操作. 举一个例子,当我们要读某块网卡的时候,分为等待系…
代码和其他资料在 github 一.tf.keras概述 首先利用tf.keras实现一个简单的线性回归,如 \(f(x) = ax + b\),其中 \(x\) 代表学历,\(f(x)\) 代表收入,分别代表输入特征和输出值.为了描述预测目标与真实值之间的整体误差最小,需要定义一个损失函数,数学描述为\((f(x) - y)^2\),即预测值与真实值差值的平方的均值.优化的目标是求解参数 \(a,b\) 使其损失函数最小. import tensorflow as tf import pand…
深度学习是一个框架,包含多个重要算法: Convolutional Neural Networks(CNN)卷积神经网络 AutoEncoder自动编码器 Sparse Coding稀疏编码 Restricted Boltzmann Machine(RBM)限制波尔兹曼机 Deep Belief Networks(DBN)深信度网络 Recurrent neural Network(RNN)多层反馈循环神经网络神经网络 对于不同问题(图像,语音,文本),需要选用不同网络模型比如CNN RESNE…
tensorflow集成和实现了各种机器学习基础的算法,可以直接调用. 代码集:https://github.com/ageron/handson-ml 监督学习 1)决策树(Decision Tree)和随机森林 决策树: 决策树是一种树形结构,为人们提供决策依据,决策树可以用来回答yes和no问题,它通过树形结构将各种情况组合都表示出来,每个分支表示一次选择(选择yes还是no),直到所有选择都进行完毕,最终给出正确答案. 决策树(decision tree)是一个树结构(可以是二叉树或非二…
参考:机器学习&深度学习算法及代码实现 Python3机器学习 传统机器学习算法 决策树.K邻近算法.支持向量机.朴素贝叶斯.神经网络.Logistic回归算法,聚类等. 一.机器学习算法及代码实现–决策树 决策树学习笔记(Decision Tree) 引自:Python3<机器学习实战>学习笔记(二):决策树基础篇之让我们从相亲说起 github:https://github.com/Jack-Cherish/Machine-Learning/tree/master/Decision…
该论文提出了一种新颖的深度网络结构,称为"Network In Network"(NIN),以增强模型对感受野内local patches的辨别能力.与传统的CNNs相比,NIN主要的创新点在于结构内使用的mlpconv layers(multiple layer perceptron convolution layers)和global average pooling.下面先介绍二者: MLP Convolution Layers 如Fig.1所示,传统卷积网络中的 linear c…
本文是深度学习入门: 基于Python的实现.神经网络与深度学习(NNDL)以及花书的读书笔记.本文将以多分类任务为例,介绍多层的前馈神经网络(Feed Forward Networks,FFN)加上Softmax层和交叉熵CE(Cross Entropy)损失的前向传播和反向传播过程(重点).本文较长. 一.概述 1.1 多层前馈神经网络         多层的前馈神经网络又名多层感知机(Multi-Layer Perceptrons, MLP).MLP只是经验叫法,但实际上FFN不等价于ML…
出处: Michael Nielsen的<Neural Network and Deep Learning>,点击末尾“阅读原文”即可查看英文原文. 本节译者:哈工大SCIR本科生 王宇轩 声明:我们将在每周一,周四 定期连载该书的中文翻译,如需转载请联系wechat_editors@ir.hit.edu.cn,未经授权不得转载. 使用神经网络识别手写数字 反向传播算法是如何工作的 热身:一个基于矩阵的快速计算神经网络输出的方法 关于损失函数的两个假设 Hadamard积 反向传播背后的四个基…
出处: Michael Nielsen的<Neural Network and Deep Leraning>,点击末尾“阅读原文”即可查看英文原文. 本节译者:哈工大SCIR硕士生 徐伟 (https://github.com/memeda) 声明:我们将在每周一,周四,周日定期连载该书的中文翻译,如需转载请联系wechat_editors@ir.hit.edu.cn,未经授权不得转载. “本文转载自[哈工大SCIR]微信公众号,转载已征得同意.” 使用神经网络识别手写数字 感知机 sigmo…
https是如何实现安全通信的 如果有不正确的地方,还望指出! web基础系列目录 总结几种常见web攻击手段极其防御方式 总结几种常见的安全算法 回顾 总结几个概念(具体描述可以看上一篇文章) 数字签名和数字证书的应用 场景是这样的:rose给jiajun写情书 刚开始用非对称加密的方式,rose用jiajun的公钥对情书进行加密,那么这样的话,如果Billy截获到情书,也无法对情书进行解密,因为只有jiajun有私钥,除非私钥泄露了 jiajun收到,要回信给rose,这个时候jiajun要…