深度学习入门笔记4 深度神经网络

简介: 深度学习入门笔记4 深度神经网络

多层感知器

在之前的课程中,我们了解到,感知器(指单层感知器)具有一定的局限——无法解决异或问题,即线性不可分的问题。

将多个单层感知器进行组合,就可以得到一个多层感知器(MLP——Multi-Layer Perceptron)结构。 多层感知器包含输入层,一个或多个隐藏层以及一个输出层。每层的神经元与下一层进行完全连接。

如果网络中包含一个以上的隐层,则称其为深度人工神经网络

说明:

  • 通常我们说的神经网络的层,指具有计算的层,因为输入层没有计算,因此,通常输入层不计入神经网络的层次。
  • 多层感知器(深度神经网络)可以解决线性不可分问题。

激活函数

激活函数概念

在神经网络中,激活函数用来为每一个结点(神经元)定义输出,该输出可以作为下一个结点(神经元)的输入。

激活函数的作用

激活函数提供网络的非线性建模能力。如果不使用激活函数,即使是多层神经网络,也无法解决线性不可分的问题。

激活函数的特征

激活函数的一些属性:

  • 非线性 可以解决非线性可分问题。当激活函数是线性时,多层神经网络相当于单层神经网络。
  • 范围性 当激活函数是有限范围时,基于梯度的训练方法往往更稳定,因为模式呈现仅显着影响有限的权重。当范围无限时,训练通常更有效,因为模式呈现显着影响大多数权重。在后一种情况下,通常需要较小的学习率。
  • 可微性 该属性用来实现基于梯度的优化方法。
  • 单调性 当激活函数是单调的时,与单层模型相关联的误差表面保证是凸的。
  • 平滑性并且具有单调导数 在某些情况下,这些函数已被证明更为普遍。
  • 原点中心化 当激活函数具有此属性时,使用较小的随机值初始化权重,可以让神经网络学习更加有效(更有利于权重的更新)。否则,在初始化权重时必须特别小心。如果函数f满足以下条件,则表明函数是原点中心化的。
  • f(0)=0
  • f(0)=1
  • 导函数在0点处连续

常见激活函数

常见的激活函数如下:

  • 阶跃函数
  • sigmoid函数
  • tanh函数
  • relu函数

练习

画出各种激活函数在[-10, 10]区间的图像。

import matplotlib.pyplot as plt
import numpy as np
x = np.arange(-10, 10, 0.1)
y = np.where(x >= 0, 1, 0)
plt.plot(x, y)
x = np.arange(-10, 10, 0.1)
y = 1 / (1 + np.exp(-x))
plt.plot(x, y)
x = np.arange(-10, 10, 0.1)
y = (np.exp(x) - np.exp(-x)) /(np.exp(x) + np.exp(-x))
plt.plot(x, y)
x = np.arange(-10, 10, 0.1)
y = np.where(x >= 0, x, 0)
plt.plot(x, y)
## 学习步骤
多层感知器(深度神经网络DNN)的学习过程步骤如下:
1. 从输入层开始,通过网络进行正向传播(forward propagation),并计算输出。
2. 根据输出与真实值,计算误差。
3. 反向传播(back propagation)误差,根据误差值,更新每层的权重。

人工神经网络学习过程

前向传播

计算误差

反向传播

权重的初始化

注意,在深度神经网络中,权重一定不能全部初始化为0,否则,在正向传播时,所有的神经元都会得到相同的值,同时,在反向传播时,权重也会更新相同的值。这会使得神经网络拥有不同权重的意义不复存在。


相关文章
|
8月前
|
机器学习/深度学习 人工智能 PyTorch
PyTorch深度学习 ? 带你从入门到精通!!!
🌟 蒋星熠Jaxonic,深度学习探索者。三年深耕PyTorch,从基础到部署,分享模型构建、GPU加速、TorchScript优化及PyTorch 2.0新特性,助力AI开发者高效进阶。
PyTorch深度学习 ? 带你从入门到精通!!!
|
机器学习/深度学习 人工智能 运维
网管不再抓头发:深度学习教你提前发现网络事故
网管不再抓头发:深度学习教你提前发现网络事故
292 2
|
11月前
|
机器学习/深度学习 人工智能 算法
Wi-Fi老是卡?不如试试让“深度学习”来当网络管家!
Wi-Fi老是卡?不如试试让“深度学习”来当网络管家!
458 68
|
8月前
|
机器学习/深度学习 数据采集 人工智能
深度学习实战指南:从神经网络基础到模型优化的完整攻略
🌟 蒋星熠Jaxonic,AI探索者。深耕深度学习,从神经网络到Transformer,用代码践行智能革命。分享实战经验,助你构建CV、NLP模型,共赴二进制星辰大海。
|
机器学习/深度学习 数据可视化 算法
PyTorch生态系统中的连续深度学习:使用Torchdyn实现连续时间神经网络
神经常微分方程(Neural ODEs)是深度学习领域的创新模型,将神经网络的离散变换扩展为连续时间动力系统。本文基于Torchdyn库介绍Neural ODE的实现与训练方法,涵盖数据集构建、模型构建、基于PyTorch Lightning的训练及实验结果可视化等内容。Torchdyn支持多种数值求解算法和高级特性,适用于生成模型、时间序列分析等领域。
766 77
PyTorch生态系统中的连续深度学习:使用Torchdyn实现连续时间神经网络
|
10月前
|
机器学习/深度学习 算法 数据库
基于GoogleNet深度学习网络和GEI步态能量提取的步态识别算法matlab仿真,数据库采用CASIA库
本项目基于GoogleNet深度学习网络与GEI步态能量图提取技术,实现高精度步态识别。采用CASI库训练模型,结合Inception模块多尺度特征提取与GEI图像能量整合,提升识别稳定性与准确率,适用于智能安防、身份验证等领域。
|
机器学习/深度学习 人工智能 运维
AI“捕风捉影”:深度学习如何让网络事件检测更智能?
AI“捕风捉影”:深度学习如何让网络事件检测更智能?
561 8
|
机器学习/深度学习 人工智能 算法
基于Python深度学习的【害虫识别】系统~卷积神经网络+TensorFlow+图像识别+人工智能
害虫识别系统,本系统使用Python作为主要开发语言,基于TensorFlow搭建卷积神经网络算法,并收集了12种常见的害虫种类数据集【"蚂蚁(ants)", "蜜蜂(bees)", "甲虫(beetle)", "毛虫(catterpillar)", "蚯蚓(earthworms)", "蜚蠊(earwig)", "蚱蜢(grasshopper)", "飞蛾(moth)", "鼻涕虫(slug)", "蜗牛(snail)", "黄蜂(wasp)", "象鼻虫(weevil)"】 再使用通过搭建的算法模型对数据集进行训练得到一个识别精度较高的模型,然后保存为为本地h5格式文件。最后使用Djan
842 1
基于Python深度学习的【害虫识别】系统~卷积神经网络+TensorFlow+图像识别+人工智能
|
机器学习/深度学习 数据采集 算法
基于MobileNet深度学习网络的MQAM调制类型识别matlab仿真
本项目基于Matlab2022a实现MQAM调制类型识别,使用MobileNet深度学习网络。完整程序运行效果无水印,核心代码含详细中文注释和操作视频。MQAM调制在无线通信中至关重要,MobileNet以其轻量化、高效性适合资源受限环境。通过数据预处理、网络训练与优化,确保高识别准确率并降低计算复杂度,为频谱监测、信号解调等提供支持。
|
机器学习/深度学习 人工智能 算法
基于Python深度学习的【蘑菇识别】系统~卷积神经网络+TensorFlow+图像识别+人工智能
蘑菇识别系统,本系统使用Python作为主要开发语言,基于TensorFlow搭建卷积神经网络算法,并收集了9种常见的蘑菇种类数据集【"香菇(Agaricus)", "毒鹅膏菌(Amanita)", "牛肝菌(Boletus)", "网状菌(Cortinarius)", "毒镰孢(Entoloma)", "湿孢菌(Hygrocybe)", "乳菇(Lactarius)", "红菇(Russula)", "松茸(Suillus)"】 再使用通过搭建的算法模型对数据集进行训练得到一个识别精度较高的模型,然后保存为为本地h5格式文件。最后使用Django框架搭建了一个Web网页平台可视化操作界面,
1415 11
基于Python深度学习的【蘑菇识别】系统~卷积神经网络+TensorFlow+图像识别+人工智能