深度学习基本理论上篇:(MLP/激活函数/softmax/损失函数/梯度/梯度下降/学习率/反向传播)、深度学习面试

news2024/9/9 6:37:00

1、MLP、FCN、DNN三者的关系?

多层感知器MLP,全连接网络,DNN三者的关系?三者是不是同一个概念?

  •  FCN:Fully Connected Neural Network,全连接神经网络,也称为密集连接神经网络,其每个节点都与上一层的所有节点相连,也就是说每个神经元都和上一层所有的神经元都有连接,是最简单的神经网络结构,它不一定要求有隐藏层。
  • MLP:Multi-Layer Perceptron,多层感知器,也称多层感知机,是一种特殊的全连接神经网络,它由输入层、若干个隐藏层和输出层组成。每个神经元都与上一层的所有神经元相连。
  • DNN:Deep Neural Network,深度神经网络,是指具有多层神经元的神经网络。

因此MLP属于DNN;FCN有时候属于DNN,有时候不属于DNN。但DNN也包括许多其他的深度网络,比如深度卷积网络等。

因此,MLP和FCN之间的主要区别在于隐藏层的存在。MLP通过添加多个隐藏层可以提高网络的表示能力,从而能够更好地解决复杂的分类和回归问题,而FCN有时候可能只有输入层和输出层。

2、 什么是前馈神经网络

前馈神经网络(feedforward neural network)又称多层感知机(multilayer perceptron,MLP),是典型的深度学习模型。它是一种单向多层结构,其中每一层包含若干个神经元。在此种神经网络中,各神经元可以接收前一层神经元的信号,并产生输出到下一层。第0层叫输入层,最后一层叫输出层,其他中间层叫做隐含层(或隐藏层、隐层),隐含层可以是一层,也可以是多层。整个网络中无反馈,信号从输入层向输出层单向传播,可用一个有向无环图表示。 

前馈神经网络使用数学公式可以表示为:

其中,f(1)被称为网络的 第一层(first layer),f(2)被称为 第二层(second layer),以此类推。链的全长称为模型的深度(depth)。 

3、深度学习有什么优缺点

1)优点

  • 性能更优异
  • 不需要特征工程
  • 在大数据样本下有更好的性能
  • 能解决某些传统机器学习无法解决的问题

2)缺点

  • 小数据样本下性能不如机器学习
  • 模型复杂
  • 过程不可解释

4、什么是激活函数,为什么要使用激活函数 

激活函数(activation function),指神经网络中将输入信号的总和转换为输出信号的函数,激活函数将多层感知机输出转换为非线性,使得神经网络可以任意逼近任何非线性函数,这样神经网络就可以应用到众多的非线性模型中。 

神经网络中,如果不加入激活函数,那么每一层的输入输出都是函数均是线性的,网络的逼近能力有限,于是就引入非线性函数作为激活函数,使网络的表达能力更强。

激活函数是向神经网络中引入非线性因素,通过激活函数神经网络就可以拟合各种曲线

5、神经网络中常用的激活函数有哪些,各自有什么特点

1)sigmoid

 ① 定义:sigmoid函数也叫Logistic函数,用于隐层神经元输出,能将$(-\infty,+\infty)$的数值映射到(0,1)的区间,可以用来做二分类。表达式为:

② 特点
优点:平滑、易于求导
缺点:激活函数计算量大,反向传播求误差梯度时,求导涉及除法;反向传播时,很容易就会出现梯度消失

2)tanh

① 定义:双曲正切函数,表达式为:

② 特点
优点:平滑、易于求导;输出均值为0,收敛速度要比sigmoid快,从而可以减少迭代次数
缺点:很容易就会出现梯度消失

3)relu

① 定义:修正线性单元,其表达式为: 

② 特点:
优点:计算过程简单;避免了梯度爆炸和梯度消失问题
缺点:小于等于0时无输出

6. 什么是softmax函数,其主要作用是什么 

 1)定义:Softmax函数可以将多分类的输出数值转化为相对概率,而这些值的累和为1。表达式为:

其中$V_i$ 是分类器前级输出单元的输出。i 表示类别索引,总的类别个数为 C。$S_i$表示的是当前元素的指数与所有元素指数和的比值。 

2)作用:softmax一般用于分类输出层,计算属于每个类别的概率。

也经常用于计算Attention 

7、什么是损失函数,损失函数的作用是什么 

损失函数(Loss Function),也有称之为代价函数(Cost Function),用来度量预测值和实际值之间的差异,从而作为模型性能参考依据。损失函数值越小,说明预测输出和实际结果(也称期望输出)之间的差值就越小,也就说明我们构建的模型越好,反之说明模型越差。 

8. 什么是交叉熵,其作用是什么

交叉熵(Cross Entropy)主要用于度量两个概率分布间的差异性信息,在机器学习中用来作为分类问题的损失函数。当预测概率越接近真实概率,该函数值越小,反之越大。 

9. 解释什么是梯度

梯度是损失函数关于模型参数的偏导数向量,它告诉我们如何调整模型参数以减小损失函数的值,从而优化模型。

梯度是一个向量,这个向量是一个函数f(loss,w)对w求偏导的值组成的向量就是梯度。这个函数描述是模型参数和损失值之间的函数。

梯度(gradient)是一个向量,表示某一函数在该点处的方向导数沿着该方向取得最大值,即函数该点处沿着该方向(此梯度的方向)变化最快,变化率最大。 

10. 什么是梯度下降

梯度下降就是,调整模型参数以减少损失的过程。

梯度下降是一个最优化算法,常用于机器学习和人工智能当中用来递归性地逼近最小偏差模型,核心思想是按照梯度相反的方向,不停地调整函数权值。其步骤为:
1)求损失函数值
2)损失是否足够小?如果不是,计算损失函数的梯度
3)按梯度的反方向走一小步(调整权重,$w_i = w_i + \delta w_i$)
4)循环到第2步,迭代执行

11. 激活函数出现梯度消失会有什么后果

梯度消失(Gradient Vanishing)是指在神经网络的训练过程中,反向传播算法计算梯度时,网络的较深层(深度)权重更新的梯度趋近于零,导致这些层的参数很少或根本没有更新,从而使得网络难以学习或收敛到一个合适的模型。

机器学习中,如果模型的优化依赖于梯度下降,梯度消失会导致模型无法进一步进行优化。

12. 如何解决梯度消失问题

1)更换激活函数:如更换为relu, leakrelu
2)批量规范化处理:通过规范化操作将输出信号x规范化到均值为0,方差为1保证网络的稳定性
3)使用残差结构:通过引入残差结构,能有效避免梯度消失问题 

13. 什么是梯度爆炸,如何解决梯度爆炸问题

1)梯度爆炸。梯度消失是在计算中出现了梯度过小的值,梯度爆炸则相反,梯度计算出现了过大的值。梯度过大,可能使参数更新幅度过大,超出了合理范围。
2)解决梯度爆炸的方法
梯度裁剪:把沿梯度下降方向的步长限制在一个范围之内,计算出来的梯度的步长的范数大于这个阈值的话,就以这个范数为基准做归一化,使这个新的的梯度的范数等于这个阈值权重正则化:通过正则化,可以部分限制梯度爆炸的发生

14. 什么是批量梯度下降、随机梯度下降,分别有何特点

1)批量梯度下降
① 定义:批量梯度下降(Batch Gradient Descent,BGD)是指在每一次迭代时使用所有样本来进行梯度的更新
② 特点
优点:收敛比较稳定
缺点:当样本数目很大时,每迭代一步都需要对所有样本计算,训练过程会很慢
2)随机梯度下降
① 定义:随机梯度下降法(Stochastic Gradient Descent,SGD)每次迭代使用一个样本来对参数进行更新,使得训练速度加快
② 特点
优点:计算量小,每一轮训练更新速度快
缺点:收敛不稳定 

15. 什么是学习率,作用是什么

在梯度下降法中,都是给定的统一的学习率,整个优化过程中都以确定的步长进行更新, 在迭代优化的前期中,学习率较大,则前进的步长就会较长,这时便能以较快的速度进行梯度下降,而在迭代优化的后期,逐步减小学习率的值,减小步长,这样将有助于算法的收敛,更容易接近最优解。

16. 学习率过大或过小会导致什么问题

学习率过大可能导致模型无法收敛,过小导致收敛速度过慢

17、什么是反向传播算法,为什么要使用反向传播算法

1)定义
反向传播(Backpropagation algorithm)全称“误差反向传播”,是在深度神经网络中,根据输出层输出值,来反向调整隐藏层权重的一种方法
2)对于多个隐藏层的神经网络,输出层可以直接求出误差来更新参数,但隐藏层的误差是不存在的,因此不能对它直接应用梯度下降,而是先将误差反向传播至隐藏层,然后再应用梯度下降 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/910193.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

前端开发怎么解决前端安全性的问题? - 易智编译EaseEditing

前端安全性是保护前端应用程序免受恶意攻击和数据泄露的重要方面。以下是一些解决前端安全性问题的关键方法: 输入验证与过滤: 对所有用户输入进行验证和过滤,防止恶意用户通过注入攻击等手段破坏应用程序或获取敏感信息。 跨站点脚本&#…

Android笔记:在原生App中嵌入Flutter

首先有一个可以运行的原生项目 第一步:新建Flutter module Terminal进入到项目根目录,执行flutter create -t module ‘module名字’例如:flutter create -t module flutter-native 执行完毕,就会发现项目目录下生成了一个modu…

【核磁共振成像】单射成像和高速脉冲序列

目录 一、提高成像速度的手段二、平面回波成像(EPI)序列三、常用或基本EPI序列四、EPI变型序列五、渐开平面螺旋(spiral)扫描序列六、RARE序列七、GRASE序列八、STEAM序列 一、提高成像速度的手段 MRI扫描时间可表示为   其中Nex为激发次数,NpE1和NpE2是两个相位…

kubernetes--技术文档-真--集群搭建-三台服务器一主二从(非高可用)附属文档-使用不同运行商服务器-搭建公网集群

!!!!!版本!!!! 使用公网初始化 Kubernetes 需要 Kubernetes 版本 1.19 或更高版本。在早期的版本中,Kubernetes 还不支持公网初始化。因此,请确保…

【C++】visualstudio环境安装

记录了部分安装步骤,可能有点不全,参考下,需要的磁盘空间差不多20GB; 下载 https://visualstudio.microsoft.com/zh-hans/vs/ 下载完成: 双击进入安装状态: 根据自己的需求勾选安装项: 选择…

RNN+LSTM正弦sin信号预测 完整代码数据视频教程

视频讲解:RNN+LSTM正弦sin信号预测_哔哩哔哩_bilibili 效果演示: 数据展示: 完整代码: import torch import torch.nn as nn import torch.optim as optim import numpy as np import matplotlib.pyplot as plt import pandas as pd from sklearn.preprocessing import…

使用Locust进行接口性能测试:安装、命令参数解析与示例解读

“ Locust是一款开源的Python性能测试工具,它可以模拟大量并发用户对网站或者其他接口进行压力测试 一、Locust简介与安装 1. 使用pip安装Locust: pip3 install locust2. 通过GitHub克隆项目并安装(推荐Python 3): …

常见js中判断== true/false总结

常见js中判断为true/false总结 false 0 输出true;因为在做判断的时候,两者中有boolean(布尔类型),会把boolean先转化为number(数字类型),false为0,true是1。也就是等价于…

二、10.文件系统

硬盘是低速设备,其读写单位是扇区,为了避免频繁访问硬盘,操作系统不会有了一扇区数据就去读写一次磁盘,往往等数据积攒到“足够大小”时才一次性访问硬盘,这足够大小的数据就是块,硬盘读写单位是扇区&#…

交叉熵--损失函数

目录 交叉熵(Cross Entropy) 【预备知识】 【信息量】 【信息熵】 【相对熵】 【交叉熵】 交叉熵(Cross Entropy) 是Shannon信息论中一个重要概念, 主要用于度量两个概率分布间的差异性信息。 语言模型的性能…

FlashAttention算法详解

这篇文章的目的是详细的解释Flash Attention,为什么要解释FlashAttention呢?因为FlashAttention 是一种重新排序注意力计算的算法,它无需任何近似即可加速注意力计算并减少内存占用。所以作为目前LLM的模型加速它是一个非常好的解决方案&…

ThreadLocal深度解析

简介 在并发编程中,导致并发bug的问题都会归结于对共享变量的操作不当。多个线程同时读写同一共享变量存在并发问题,我们可以利用写时复制、不变性来突破对原数据的写操作,没有写就没有并发问题,而本篇文章所介绍的技术是突破共享…

基于swing的销售管理系统java仓库库存信息jsp源代码mysql

本项目为前几天收费帮学妹做的一个项目,Java EE JSP项目,在工作环境中基本使用不到,但是很多学校把这个当作编程入门的项目来做,故分享出本项目供初学者参考。 一、项目描述 基于swing的销售管理系统 系统有1权限:管…

spring依赖注入详解(上)

一、Bean销毁的过程 如果bean销毁时会执行的场景 1、设置DestroyMethodName为(inferred) // 先把DestroyMethodName设置为(inferred) Component public class TestBeanPostProcessor implements MergedBeanDefinitionPostProcessor {Overridepublic void postProcessMergedBe…

Hive(一)

一、DDL 1、数据库操作 1)、创建数据库 语法: CREATE DATABASE [IF NOT EXISTS] database_name [COMMENT database_comment] [LOCATION hdfs_path] [WITH DBPROPERTIES (property_nameproperty_value, ...)]; 案例: (1&…

vue element-ui 菜单管理使用图标选择器组件

目录 🌟前言🌟安装🌟main.js配置🌟页面使用🌟效果展示 🌟前言 哈喽小伙伴们,本文为大家介绍一下 VueElementUI 中图标选择器组件的使用方法;一起来看下吧。 🌟安装 np…

RN 尝鲜之旅

React Native 一直没使用过,闲来无事,还是尝鲜了一下下。 目前还没有出新手村,所以写的东西不一定具有任何参考价值,见谅。 关于 RN 的一些说明 RN 与 R RN 与 R 的区别:来自掘金的一篇文章 RN 与 R 不一样&#xf…

报道 | 9月国际运筹优化会议汇总

封面图来源: https://www.pexels.com/zh-cn/photo/1181406/ 九月召开会议汇总: The 96th meeting of the EURO Working Group on Multiple Criteria Decision Aiding (EWG-MCDA) Location: Paris, France Important dates: Conference: September 202…

嵌入式系统常用的开发板

今天,了解一下常用的开发板,像stm32是最近了解的,esp8266系列是之前大三下上物联网导论课程时候接触的,一些树莓派,Arduino听说过,但了解不多。

MySQL索引常见术语(索引下推、索引覆盖、最左匹配等)

一:背景 我们在面试中都知道,对于MySQL索引是必问的。大家也应该都知道MySQL的数据结构,什么是索引。其中在面试中,面试官也经常问,你做过哪些优化?本文主要是介绍MySQL索引的一些常见术语,比如索引下推、索引覆盖、最左匹配等,这些其实也是MySQL优化的一部分,能够熟练…