1.随机数和伪随机数

1.1随机数

真正的随机数是使用物理现象产生的:比如掷钱币、骰子、转轮、使用电子元件的噪音、核裂变等等,这样的随机数发生器叫做物理性随机数发生器,它们的缺点是技术要求比较高。
----百度百科

根据百科上的定义可以看到,真随机数是依赖于物理随机数生成器的。使用较多的就是电子元件中的噪音等较为高级、复杂的物理过程来生成。

使用物理性随机数发生器生成的真随机数,可以说是完美再现了生活中的真正的“随机”,也可以称为绝对的公平。

1.2伪随机数

真正意义上的随机数(或者随机事件)在某次产生过程中是按照实验过程中表现的分布概率随机产生的,其结果是不可预测的,是不可见的。而计算机中的随机函数是按照一定算法模拟产生的,其结果是确定的,是可见的。我们可以这样认为这个可预见的结果其出现的概率是100%。所以用计算机随机函数所产生的“随机数”并不随机,是伪随机数。
—百度百科

从定义我们可以了解到,伪随机数其实是有规律的。只不过这个规律周期比较长,但还是可以预测的。主要原因就是伪随机数是计算机使用算法模拟出来的,这个过程并不涉及到物理过程,所以自然不可能具有真随机数的特性。

for (int i = 0; i < 10; ++i){cout<<rand()<<" ";}cout<<endl;

连续两次运行这个过程,结果是一样的。(程序简单,自行试验)
这就是伪随机数了!!!!
就好像是在系统中已经有了一个0~RAND_MAX的一个乱序序列,我们调用rand()的时候都是参照这个序列和随机种子的,这里没有设置随机种子,因此随机种子为1,当随机种子为x的时候,我们可以根据这个随机种子x来计算出一个随机数f(x, m),其中m为这个序列中的伪随机数。如果随机种子是固定的,那么每次调用rand()依然可以计算出来了。

1.3随机种子

由上面我们就知道了,所谓随机数其实是伪随机数,所谓的‘伪’,意思是这些数其实是有规律的,只不过因为算法规律太复杂,很难看出来而已。

但是,再厉害的算法,如果没有一个初始值,它也不可能凭空造出一系列随机数来,我们说的种子就是这个初始值。

random随机数是这样生成的:我们将这套复杂的算法(是叫随机数生成器吧)看成一个黑盒,把我们准备好的种子扔进去,它会返给你两个东西,一个是你想要的随机数,另一个是保证能生成下一个随机数的新的种子,把新的种子放进黑盒,又得到一个新的随机数和一个新的种子,从此在生成随机数的路上越走越远。

2.深度学习中的随机种子

深度学习网络模型中初始的权值参数通常都是初始化成随机数
而使用梯度下降法最终得到的局部最优解对于初始位置点的选择很敏感
为了能够完全复现作者的开源深度学习代码,随机种子的选择能够减少一定程度上
算法结果的随机性,也就是更接近于原始作者的结果
即产生随机种子意味着每次运行实验,产生的随机数都是相同的

but
在大多数情况下,即使设定了随机种子,仍然没有办法完全复现paper中所给出的模型性能,这是因为深度学习代码中除了产生随机数中带有随机性,其训练的过程中使用 mini-batch SGD或者优化算法进行训练时,本身就带有了随机性。
因为每次更新都是从训练数据集中随机采样出batch size个训练样本计算的平均梯度
作为当前step对于网络权值的更新值,所以即使提供了原始代码和随机种子,想要
复现作者paper中的性能也是非常困难的
ps:原文链接:https://blog.csdn.net/WYXHAHAHA123/article/details/96595109

深度学习笔记:随机种子的作用相关推荐

  1. 深度学习笔记03——浅析Softmax作用

    Softmax为一个函数,一般用于处理分类任务中初始输出结果. 首先对于一个分类的任务,它的输出一般为一个向量.因为可以通过向量的方式来表示某个类别.比如如下label的三个类别: 这个是label结 ...

  2. 《繁凡的深度学习笔记》前言、目录大纲 一文让你完全弄懂深度学习所有基础(DL笔记整理系列)

    <繁凡的深度学习笔记>前言.目录大纲 (DL笔记整理系列) 一文弄懂深度学习所有基础 ! 3043331995@qq.com https://fanfansann.blog.csdn.ne ...

  3. 一文弄懂元学习 (Meta Learing)(附代码实战)《繁凡的深度学习笔记》第 15 章 元学习详解 (上)万字中文综述

    <繁凡的深度学习笔记>第 15 章 元学习详解 (上)万字中文综述(DL笔记整理系列) 3043331995@qq.com https://fanfansann.blog.csdn.net ...

  4. TensorFlow 深度学习笔记 TensorFlow实现与优化深度神经网络

    TensorFlow 深度学习笔记 TensorFlow实现与优化深度神经网络 转载请注明作者:梦里风林 Github工程地址:https://github.com/ahangchen/GDLnote ...

  5. 深度学习笔记5:正则化与dropout

    出处:数据科学家养成记 深度学习笔记5:正则化与dropout 在笔记 4 中,笔者详细阐述了机器学习中利用正则化防止过拟合的基本方法,对 L1 和 L2 范数进行了通俗的解释.为了防止深度神经网络出 ...

  6. 深度学习笔记(44) Triplet 损失

    深度学习笔记(44) Triplet 损失 1. 三元组损失函数 2. 损失函数公式 3. 训练集 1. 三元组损失函数 已经了解了Siamese网络架构,并且知道想要网络输出什么,即什么是好的编码 ...

  7. 深度学习笔记(18) 迁移学习

    深度学习笔记(18) 迁移学习 1. 迁移学习理念 2. 图像识别的迁移学习 3. 语音识别的迁移学习 4. 使用迁移学习的场合 1. 迁移学习理念 深度学习中最强大的理念之一就是: 神经网络可以从一 ...

  8. 深度学习笔记(16) 误差分析(一)

    深度学习笔记(16) 误差分析(一) 1. 进行误差分析 2. 清除标注错误的数据 1. 进行误差分析 假设正在调试猫分类器 然后在开发集取得了90%准确率,相当于10%错误 这离希望的目标还有很远 ...

  9. 深度学习笔记(4) 浅层神经网络

    深度学习笔记(4) 浅层神经网络 1. 神经网络概述 2. 激活函数 3. 激活函数的导数 4. 神经网络的梯度下降 5. 随机初始化 1. 神经网络概述 神经网络看起来是如下: 有输入特征x1.x2 ...

  10. 深度学习笔记:01快速构建一个手写数字识别系统以及张量的概念

    深度学习笔记:01快速构建一个手写数字识别系统 神经网络代码最好运行在GPU中,但是对于初学者来说运行在GPU上成本太高了,所以先运行在CPU中,就是慢一些. 一.安装keras框架 使用管理员模式打 ...

最新文章

  1. Java可以跨平台的原因
  2. 微信环境中如何实现下载apk文件的下载
  3. 机器学习算法-PCA降维技术
  4. SAP 电商云 Spartacus UI 的交货模式 Delivery Mode 设计
  5. Jar Hell变得轻松–用jHades揭开类路径的神秘面纱
  6. hadoop 计算几点 主节点_01-Hadoop的介绍
  7. PCI-E 5.0标准公布:速度再次翻番达32GT/s
  8. SQLException: Value '0000-00-00 00:00:00' can not be represented as java.sql.Timestamp
  9. 独奏骑士服务器维护,独奏骑士最强流派天赋加点攻略
  10. 捷联惯导系统模型及仿真
  11. 15.网络协议-Radius协议
  12. 大气中水汽凝结物对微波遥感的影响
  13. iOS 跑马灯带图片可点击
  14. 图解最短路径之迪杰斯特拉算法(Java实现)
  15. html五星评分标准,五星级酒店评分标准.doc
  16. Vue3+node.js实战项目网易云音乐APP(二)
  17. 前端调用高德地图 百度地图
  18. STP 问题处理方法
  19. 图片查看插件-magnify
  20. 2022-2028全球与中国ABF基板市场现状及未来发展趋势

热门文章

  1. IDEA和Webstorm主题配色
  2. [附源码]Java计算机毕业设计SSM宠物管理系统
  3. MMKV_MMKV - 由微信开发的高效,小巧的移动端key-value存储框架,适用于iOS和Android...
  4. “kuangbin带你飞”专题计划——专题十五 数位DP
  5. 杨校老师课堂之Hadoop环境搭建(一)
  6. 已知地球上某两个点的坐标(即经纬度),求两点的实际距离。uniapp实现(实现语法js)
  7. 自然语言处理--基于规则(AIML)的问答机器人
  8. 常用的三款专业的OCR文字识别软件
  9. Kindeditor在线HTML富文本编辑器使用入门
  10. 常用词句或缩略语汇总