激活函数

总结:机器学习中的基本数学知识

℡╲_俬逩灬. 提交于 2021-01-29 17:46:20
注:本文的代码是使用Python 3写的。 机器学习中的基本数学知识 线性代数(linear algebra) 第一公式 矩阵的操作 换位(transpose) 矩阵乘法 矩阵的各种乘积 内积 外积 元素积(element-wise product/point-wise product/Hadamard product 加 低等数学 几何 范数(norm) 拉格朗日乘子法和KKT条件 微分(differential) 表示形式 法则 常见导数公式 统计学/概率论 信息论 香农熵(Shannon Entropy) 博弈论 不知道放到哪儿 机器学习 激活函数 损失函数 附录 希腊字母的含义和发音 数学符号的含义和发音 参照 线性代数(linear algebra) 第一公式 f(x)=xwT+b 这是在机器学习中,最常见的公式。我把这个称为机器学习的第一公式,实际上就是线性分类函数(linear classifier)。 训练分类器的目标就是求出 ( w , b ) (w,b) 。 其中: x x 是一个一行矩阵 [ [ x 1 , x 2 , . . . , x n ] ] [[x1,x2,...,xn]] 。 w w 是一个一行矩阵 [ [ w 1 , w 2 , . . . , w n ] ] [[w1,w2,...,wn]] 。 x x 和 w w 的维度相同。 b b

吴恩达深度学习学习笔记——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

RNN LSTM GRU 讲解

旧城冷巷雨未停 提交于 2021-01-26 08:13:11
前言 平时很少写总结性的文章,感觉还是需要阶段性总结一些可以串在一起的知识点,所以这次写了下。 因为我写的内容主要在时序、时空预测这个方向,所以主要还是把rnn,lstm,gru,convlstm,convgru以及ST-LSTM 一、 RNN 最为原始的循环神经网络,本质就是全连接网络,只是为了考虑过去的信息,输出不仅取决于当前输入,还取决于之前的信息,也就是输出由之前的信息(也就是状态state)和此时的输入决定。 1.1 结构图 1.2 公式 1.3 优缺点 1.3.1 优点 ① RNN 很适合处理序列数据,因为考虑了之前的信息 ② 可以和CNN一起使用得到更好的任务效果 1.3.2 缺点 ① 梯度消失、梯度爆炸 ② rnn较其他cnn和全连接要用更多的显存空间,更难训练 ③ 如果采用tanh、relu为激活函数,没法处理太长的序列 二、LSTM 为了解决梯度消失和爆炸以及更好的预测和分类序列数据等问题,rnn逐渐转变为lstm 2.1 结构图 2.2 公式 2.3 扩展 实际应用中一般不采用单层的lstm,而是多层,在很多时序数据中双向的表现也很不错 2.3.1 双向lstm 2.3.2 深层双向lstm 三、 GRU 因为LSTM的训练比较慢,而GRU在其上稍微修改,速度可以快很多,而精度基本不变,所以GRU也十分流行 3.1 结构图 3.2 公式 3.3

炼丹的不二法门

天涯浪子 提交于 2021-01-26 07:54:19
1.数据增广 简单,行之有效地增加训练数据量,提高模型的泛化能力。 水平翻转(horizontally flipping) 位移 裁剪 颜色抖动(color jittering) 组合操作   例如同时做旋转和随机尺度变换,此外还可以把每个patch中所有像素在HSV颜色空间中的饱和度和明度提升0.25-4次幂方,乘以0.7-1.4之间的一个因子,再加一个-0.1-0.1之间的值。同样你可以在色调通道(H)对每张图片或patch  的所有像素增加一个-0.1~0.1之间的值。 2.预处理 零均值化和标准化   零均值化: X - = numpy.mean( X, axis = 0 )   数据有 过大的均值可能导致参数的梯度过大 ,如果有后续的处理,可能要求数据零均值,比如主成分分析 PCA。零均值化并没有消除像素之间的相对差异,人们对图像信息的摄取通常来自于像素之间的相对色差,而不是像素值的高  低。归一化是为了 让不同维度的数据具有相同的分布 。假如二维数据(X1,X2)两个维度都服从均值为零的正态分布,但是X1方差为100,X2方差为1。那么对(X1,X2)进行随机采样在二维坐标系中绘制的图像,应该是狭长的椭圆  形。 归一化后 加快了梯度下降求最优解的速度并有可能提高精度 。考虑数据特征提取的表达式:   S = w1*x1 + w2*x2 + b   梯度计算:   dS

2012到2020主要的CNN架构总结

£可爱£侵袭症+ 提交于 2021-01-16 13:28:21
来源:DeepHub IMBA 本文约1600字,建议阅读5分钟本文与你讨论每个机器学习工程师都应该知道的十大CNN架构。 卷积神经网络(CNN或ConvNet)是理解图像内容的最佳学习算法之一,并且在图像分割,分类,检测和检索相关任务中表现出出色。有许多公司,例如Google,Microsoft,AT&T,NEC和Facebook,已经建立了活跃的研究小组来探索CNN的新架构。 什么是CNN? CNN被设计用于图像识别任务,最初是用于手写数字识别的挑战(Fukushima 1980,LeCun 1989)。CNN的基本设计目标是创建一个网络,其中网络早期层的神经元将提取局部视觉特征,而后期层的神经元将这些特征组合起来以形成高阶特征。 在几乎每个CNN中,您都会看到三种主要的图层类型。 卷积层 卷积层由一组过滤器(也称为内核)组成,这些过滤器在输入数据上滑动。每个内核都有一个宽度,一个高度和一个宽度×高度权重,用于从输入数据中提取特征。在训练时,内核中的权重使用随机值进行初始化,并将根据训练集进行学习。 池化层 池化层(或下采样层)用于减少特征图的维数,从而从特征图中保存最相关的信息。在池化层中,过滤器会在输入数据上滑动并应用池化操作(最大,最小,平均)。最大池是文献中使用最多的。 全连接层 是由三种类型的层组成的多层感知器:输入层,隐藏层和输出层。输入层接收CNN生成的要素

手把手教你简单的人脸识别

感情迁移 提交于 2021-01-14 06:54:58
最近人脸检测识别又火起来了,不知道大家知否两会期间都是人脸检测识别技术在后台监控,保证了我们两会期间的安全及监控工作,今天是我们CV进阶的第二节课,带领大家进入新的篇章,教你怎么用最近本的框架去实现人脸识别。 人脸检测及识别无处不在我们身边,只要你出门,就被摄像头一直监控着可以这么说。这也是为了我们社会安全! 在各个领域都已经用到了检测及识别技术最常见的是我们支付宝刷脸支付及门禁系统。 那今天我们“计算机视觉战队”就和大家说说识别。今天主要是针对刚刚入门的同学,如果你还很感兴趣,接下来和我们一起学习吧!本次学习后,你会对识别有一个深入了解,也会对该领域有浓厚的兴趣! 今天我们主要以 实践 为主!!! 在实践之前,我们首先要做的就是搭建环境,这个在CV系列已经有详细的教学了,本次我们基于Python的keras为大家带来简单教学。 数据准备 首先你选定文件的位置,该文件主要有train、test、Model和predict四个文件夹,之后会说每个文件夹的用途。 建立好四个文件夹之后,在train这个文件夹中存放你要存放的训练集,如下图: 今天举例子我只用两个类别的人脸数据, 注: 在train文件在建立两个你存入训练数据的文件夹并命名,在测试集也一样的操作,数据量根据你个人而定。 上图就是训练集内的部分数据,其他训练集文件及测试集都一样的操作,这个是建模的基础。 建模型 注:

使用TensorFlow构建面部口罩识别系统【本文源码开箱即用】

孤街浪徒 提交于 2021-01-12 23:01:44
TensorFlow和OpenCV库的复杂性使得创建自动化解决方案成为可能,从而不仅可以最大程度地提高效率和确保合规性,而且还可以挽救生命。 本文原创github作者:marshall wurangian 本文技术翻译CSDN博客作者:源代码杀手 微信公众号: 关注本公众号可获取本文代码的数据集 CSDN原文链接: https://blog.csdn.net/weixin_41194129/article/details/112390817 我们看到计算机视觉 图像识别技术在我们日常生活中的应用非常频繁。无论是通过面部识别来解锁iPhone,通过机场检查,甚至是通过收费架来捕获您通过的汽车图像,图像分类都可以使机器有效地实现我们对它们的编程。无论是上述方法还是面罩识别系统,都应将技术融入我们的日常生活中以实现社会公益。我们的目标就是这样做-创建一个每个人都可以理解图像分类如何工作的面罩识别系统,以便我们的项目可以在现实生活中的实践中应用和复制。对于好奇的人 这是我们使用TensorFlow创建面部识别系统的方式,该系统可检测您的面部边界并预测您是否实时佩戴面罩。 数据采集 首先,我们需要为训练和测试数据集收集图像。我们想创建自己的数据集,该数据集包括戴有口罩的人的图像和未戴口罩的人的图像。我们利用Python中的Selenium和BeautifulSoup库来自动化Web浏览器

深度学习基础系列(五)| 深入理解交叉熵函数及其在tensorflow和keras中的实现

这一生的挚爱 提交于 2021-01-12 05:43:32
  在统计学中,损失函数是一种衡量损失和错误(这种损失与“错误地”估计有关,如费用或者设备的损失)程度的函数。假设某样本的实际输出为a,而预计的输出为y,则y与a之间存在偏差,深度学习的目的即是通过不断地训练迭代,使得a越来越接近y,即 a - y →0,而训练的本质就是寻找损失函数最小值的过程。   常见的损失函数为两种,一种是均方差函数,另一种是交叉熵函数。对于深度学习而言,交叉熵函数要优于均方差函数,原因在于交叉熵函数配合输出层的激活函数如sigmoid或softmax函数能更快地加速深度学习的训练速度。这是为什么呢?让我们来详细了解下。 一、函数定义 1. 第一种损失函数:均方差函数,其定义为:   L(a, y) = ½ (a - y) 2   令y=0,则L(a, y) = ½ a 2 ,当a处于(-1, 1)区间范围时,其图形特征为:         可以看出当y = 0, a =0时,L(a, y) →0,其值是最小的。   其求导公式为:dL(a, y) / da = a - y, 从函数本身来看当a = y时,L ' (a, y) = 0,也即求得最小值。    2. 第二种损失函数:交叉熵函数,其定义为:   L(a, y) = - [y * ln a + (1 - y) ln (1 - a)]   为什么该函数能帮我们找到最小值呢?假设a和y都是在(0, 1

BP反向传播矩阵推导图示详解

痞子三分冷 提交于 2021-01-08 16:02:49
©PaperWeekly 原创 · 作者|孙裕道 学校|北京邮电大学博士生 研究方向|GAN图像生成、情绪对抗样本生成 背景介绍 BP(反向传播)是有 Geffrey Hinton 在 1988 年发表的论文《Learning representations by back-propagating errors》 中首次被提出来。 该论文从题目到内容到参考文献一共 2 页半,Hinton 也借此工作荣获 2018 年的图领奖。在深度学习领域,BP 的重要程度在怎么强调也不为过,本文会从矩阵的视角对 BP 进行详细推导,为了更好地理解 BP 的工作原理,本文也画了大量的示意图帮助理解。 本文的公式经过自己很多次的推导打磨,尽力做到准确无误,每一张图也是反复的捉摸力求精准表达。本文的阅读难度确实很大,但是因为其重要,我觉得反复抄写下面的推导,也会有很多收获。 引言 在吴恩达的斯坦福机器学习的讲义中关于 BP 原理的介绍只给出了最后的 BP 矩阵的推导结果,略去了中间的推导过程。本文会对略去的推导过程进行补全。为了减少阅读阻碍,BP 矩阵证明过程会从预备知识开始慢慢铺展开来,其中最难啃的部分就是矩阵形式的链式法则。本文文章结构和的各个章节的内容如下: p 3 是一些预备知识介绍了矩阵求导的细节,如果想要看懂之后的 BP 矩阵推导这部分的两个小节一定要看明白 p 4 是关于 4

手写数字识别

泪湿孤枕 提交于 2021-01-06 16:57:17
本文作者:馬立 分享嘉宾:白浩杰 文章整理:马立辉 内容来源:百度云智学院 导读 上篇文章,我们重点讲解了卷积神经网络的基本概念及结构。本篇,我们将进行代码实战——完成手写数字识别任务。 本次实验代码是基于百度的深度学习框架—— 飞桨( PaddlePaddle )。 本篇文章主要内容包括: 1.创建实验资源 2.项目实战 3.总结 1. 创建实验资源 本次实验将在 百度云智学院实验平台 上进行,该平台已经为大家准备好实验所需环境。实验前,我们需要 创建实验资源 ,步骤如下: 《手写数字识别项目实战》地址为: http://abcxueyuan.cloud.baidu.com/newlab/#/lab_detail/lab_simple_say?id=116 打开该网址进入如下页面,点击: 开始学习 。在弹出的页面中点击 创建资源。 创建资源完成后点击 进入实验 。按以下步骤操作: 步骤一: 步骤二: 步骤三: 步骤四: 步骤五: 按照上述步骤完成实验资源的创建后,便可开始进行实验。 2. 项目实战 2.1 数据集介绍 当我们学习编程的时候,编写的第一个程序一般是打印出"Hello World"。而机器学习(或深度学习)的入门实验,一般是完成MNIST数据集上的手写数字识别任务。原因是手写数字识别属于典型的图像分类任务,比较简单。同时MNIST数据集也很经典