点击关注我哦

一篇文章带你了解函数声明时的优雅操作

一、引言

这是我计划的系列优化算法的第1部分,该算法特别用于机器学习和神经网络中的“训练”。在这篇文章中,将介绍Gradient Descent(GD)及其小变化。之后将介绍其他流行的算法,例如:

  1. SGD with momentum

  2. RMSprop

  3. Adam

  4. Genetic Algorithm

下面从的神经网络介绍开始,将解释什么是Loss函数以及“训练”神经网络或任何其他机器学习模型的含义。

二、让我们定义一个神经网络

人工神经网络(ANN)的灵感来自大脑中实际发生的事情。尽管这些类比很松散,但人工神经网络与其生物学的“父母”有几处相似之处。它们由一些神经元组成。因此,让我们看一下单个神经元。

单个感知器

我在上面绘制的神经元将两个数字作为输入。每个输入数字我们将表示为xₖ,其中k代表输入索引。对于每个输入xₖ,神经元分配另一个数字wₖ。由这些数字组成的向量wₖ被称为权重向量。这些权重使每个神经元都变得独特。它们在测试过程中是固定的,但是在培训过程中,我们将更改这些数字以“调整”网络。我将在后面的文章中讨论。正如我上面所说,神经元是一种功能。但是那是什么功能呢?它是权重和输入的线性组合,并在其顶部具有某种非线性函数。让我进一步解释。让我们看一下第一部分-线性部分。

权重和输入的线性组合

上面的公式是我所说的线性组合。我们将接受输入,将它们乘以相应的权重,然后将所有内容相加。结果是一个数字。最后一部分-在其顶部应用某种非线性函数。实际上,当今使用的最流行的非线性甚至比称为整流线性单位(ReLU)的线性函数还要容易。公式如下:

校正的线性单位公式

如果我们的数字大于零,那么我们将按原样使用该数字;如果它小于零,那么我们将采用零。应用于神经元顶部线性的此非线性函数称为激活函数。我们必须具有某种非线性函数的原因将在稍后阐明。综上所述,神经元是一个函数,它需要一定数量的输入并输出一个数字-它的激活。上面的神经元的最终公式是:

将两个数字作为输入的神经元

如果我们以狗与猫为例,我们将把图像作为输入传递给神经元。在计算机中存储图像的方式是将其表示为数字数组,每个数字表示给定像素的亮度。因此,将其传递给神经元的方法是获取2D数组(在彩色图像的情况下为3D),将其连续展平以获取1D向量并将所有这些数字传递给神经元。

现在是时候定义一个神经网络了。神经网络也是数学函数。它是由一堆相互连接的神经元定义的。一个神经元的输出用作其他神经元的输入。

简单的神经网络

上面定义的网络有5个神经元。这些神经元堆叠在3个完全连接的层中,也就是说,一层中的每个神经元都与下一层中的每个神经元相连。网络中有多少层,每层中有多少神经元以及它们如何连接-所有这些选择都定义了一种架构网络。由2个神经元组成的第一层称为输入层。从某种意义上说,它们不执行任何计算,因此实际上这层神经元并不是我之前所描述的神经元。它们仅用于表示网络的输入。

非线性的需要来自以下事实:我们将神经元连接在一起,并且线性函数之上的线性函数本身就是线性函数。因此,如果没有在每个神经元中应用非线性函数,则神经网络将是线性函数,因此不会比单个神经元强大。最后要注意的是,我们通常希望0到1之间的数字作为输出神经网络的输出,因此我们将其视为概率。例如,在dogs-vs-cats中,我们可以将接近零的数字视为猫,而将接近1的数字视为猫。

为此,我们将对我们的最后一个神经元应用不同的激活功能。关于此函数,需要了解的是它返回一个0到1的数字,正是我们想要的。综上所述,我们已经准备好定义一个与我上面绘制的网络相对应的函数:

功能,定义出神经网络

w的上标表示神经元的索引。w的下标表示输入的索引。结果,我们有了某种函数,该函数需要一些数字并输出另一个介于0和1之间的数字。实际上,该函数具有什么公式并不重要,重要的是我们有一些参数化的复杂非线性函数从某种意义上说,权重可以通过更改权重来更改。

三、损失函数

在开始谈论训练之前,剩下唯一要定义的就是损失函数。损失函数是一种函数,它告诉我们神经网络在完成某项任务时的性能如何。以每个训练示例为例,通过网络获取数字,然后从我们要获取的实际数字中减去该数字并平方(因为负数与正数一样差)。

y代表我们想从网络中获得的数字,其中y^实际通过网络传递示例获得的数字i培训示例的索引。让我们再次以dogs-vs-cats为例。我们有一个狗和猫的图片数据集,如果是狗则标为1,如果是猫则标为0。该标签对应于y-这是我们将图像传递给网络时要从网络获取的数字。为了计算损失函数,我们将遍历数据集中的每个训练示例,计算y对于该示例,然后计算上面定义的函数。如果损失函数很大,则我们的网络表现不佳,我们希望数量尽可能少。我们可以重写此公式,将y更改为网络的实际功能,以更深入地了解损失函数与神经网络的联系。

从原理上“训练”一个神经网络(上)相关推荐

  1. 从原理上“训练”一个神经网络(下)

    点击关注我哦 一篇文章带你了解函数声明时的优雅操作 四.训练 当我们从神经网络开始时,我们会随机初始化权重.显然,它不会给很好的结果.在训练过程中,我们希望从性能不佳的神经网络入手,并以高准确度结束网 ...

  2. 在MNIST数据集上训练一个手写数字识别模型

    使用Pytorch在MNIST数据集上训练一个手写数字识别模型, 代码和参数文件 可下载 1.1 数据下载 import torchvision as tvtraining_sets = tv.dat ...

  3. 【Pytorch分布式训练】在MNIST数据集上训练一个简单CNN网络,将其改成分布式训练

    文章目录 普通单卡训练-GPU 普通单卡训练-CPU 分布式训练-GPU 分布式训练-CPU 租GPU服务器相关 以下代码示例基于:在MNIST数据集上训练一个简单CNN网络,将其改成分布式训练. 普 ...

  4. pascal行人voc_在一个很小的Pascal VOC数据集上训练一个实例分割模型

    只使用1349张图像训练Mask-RCNN,有代码. 代码:https://github.com/kayoyin/tiny-inst-segmentation 介绍 计算机视觉的进步带来了许多有前途的 ...

  5. 构建Transformer模型 | 在wikiText-2数据集上训练一个语言模型

    0 Introduction 自然语言处理通用解决方案 需要熟悉word2Vec, 了解词向量如何建模 重点在于Transformer网络架构,BERT训练方法,实际应用 开源项目,都是现成的,套用进 ...

  6. 神经网络的三种训练方法,如何训练一个神经网络

    1.神经网络有哪些主要分类规则并如何分类? 神经网络模型的分类 人工神经网络的模型很多,可以按照不同的方法进行分类.其中,常见的两种分类方法是,按照网络连接的拓朴结构分类和按照网络内部的信息流向分类. ...

  7. 人工智能被批不环保,训练一个神经网络的排炭量竟然比5辆车还多?

    大数据文摘出品 作者:曹培信 1970年,赞比亚修女Mary Jucunda给NASA(美国航空航天局)Marshall太空航行中心的科学副总监Ernst Stuhlinger博士写了一封信.信中,M ...

  8. 训练神经网络的详细步骤,如何训练一个神经网络

    如何训练神经网络 1.先别着急写代码训练神经网络前,别管代码,先从预处理数据集开始.我们先花几个小时的时间,了解数据的分布并找出其中的规律. Andrej有一次在整理数据时发现了重复的样本,还有一次发 ...

  9. 深度学习笔记13_猫狗分类案例 - 从头开始训练一个神经网络

    在小型数据集上从头开始训练一个卷积神经网络 小型数据集的模型构建的策略 小型数据集:"很少的"样本可能是几百张图像,也可能是几万张图像. 接下来的示例中,主要用来猫狗分类:4000 ...

最新文章

  1. U盘容量显示错误修正
  2. 【3】SCN-Hystrix熔断器
  3. kindeditor 文件上传在 spring mvc下的使用
  4. 【ANSYS命令流】通用后处理技术(三):列表显示结果及输出TXT文本(实例)
  5. Python爬虫之爬取酷狗音乐
  6. HDB3码:快速上手步骤实例
  7. 统信UOS系统安装详细教程(小白也能装系统啦~)
  8. GPS导航电文——第二子帧数据解析
  9. 什么是意志力?如何提高意志力?
  10. 企业CDN缓存加速原理
  11. 解决OpenSSL 在VC2015下链接报错的问题。
  12. STM32系列(HAL库)——F103C8T6使用SPI方式点亮OLED
  13. Marketing and Monetizing on YouTube YouTube上的营销和货币化 Lynda课程中文字幕
  14. 在网页中实现icon小图标的几种方法
  15. oracle 根据分隔符提取,oracle如何按分隔符拆分字符串(正则方法)
  16. SAP顾问生涯闲记:来自超过20多个国家地区的团队一起做一个SAP项目是什么体验
  17. oracle程序包写法,Oracle学习笔记20150913pl/sql编程包的写法
  18. 修改SpringBoot启动Logo
  19. RecyclerView双列表联动
  20. 蓝桥杯垒骰子(动态规划)

热门文章

  1. 第一章:赛灵思(Xilinx)的Zynq的多处理器片上系统(MPSoC)入门综述
  2. 东南大学计算机网络实验报告三,东南大学计算机网络第三次实验报告.docx
  3. windows8.1/10 添加网络打印机的方法
  4. 在线网页视频播放器(flash flv播放器)
  5. 分数化成有限小数的方法_什么样的分数能化成有限小数?
  6. 腾讯IEG后台开发(已拿到offer)
  7. 惠普PAVILION Gaming NB 15-ak039TX触摸板关闭
  8. 你为什么应该为软件付费?
  9. 情感计算-音频情感识别
  10. 世界之窗浏览器TheWorld 2.0.6.4(论坛预览版)