深度学习入门笔记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,否则,在正向传播时,所有的神经元都会得到相同的值,同时,在反向传播时,权重也会更新相同的值。这会使得神经网络拥有不同权重的意义不复存在。


相关文章
|
1天前
|
机器学习/深度学习 人工智能 自然语言处理
使用TensorFlow进行深度学习入门
【5月更文挑战第11天】本文引导读者入门TensorFlow深度学习,介绍TensorFlow——Google的开源机器学习框架,用于处理各种机器学习问题。内容包括TensorFlow安装(使用pip)、核心概念(张量、计算图和会话)以及构建和训练简单线性回归模型的示例。通过这个例子,读者可掌握TensorFlow的基本操作,包括定义模型、损失函数、优化器以及运行会话。
|
1天前
|
数据采集 机器学习/深度学习 前端开发
【好书推荐3】Python网络爬虫入门到实战
【好书推荐3】Python网络爬虫入门到实战
10 0
|
1天前
|
网络协议 安全 Linux
网络入门基础
网络入门基础
4 0
|
2天前
|
机器学习/深度学习 编解码 算法
深度学习之解构基础网络结构
本文和大家梳理分享一下大师们的探索成果,即经典的基础网络(backbone)以及关键思想,附带实现过程。5月更文挑战第6天
24 3
|
2天前
|
机器学习/深度学习 算法 TensorFlow
Python深度学习基于Tensorflow(6)神经网络基础
Python深度学习基于Tensorflow(6)神经网络基础
16 2
Python深度学习基于Tensorflow(6)神经网络基础
|
6天前
|
机器学习/深度学习 存储 算法
m基于Yolov2深度学习网络的螺丝检测系统matlab仿真,带GUI界面
MATLAB 2022a中展示了YOLOv2算法的螺丝检测仿真结果,该系统基于深度学习的YOLOv2网络,有效检测和定位图像中的螺丝。YOLOv2通过批标准化、高分辨率分类器等优化实现速度和精度提升。核心代码部分涉及设置训练和测试数据,调整图像大小,加载预训练模型,构建YOLOv2网络并进行训练,最终保存检测器模型。
23 3
|
7天前
|
机器学习/深度学习 算法 数据可视化
基于深度学习网络的鞋子种类识别matlab仿真
使用GoogLeNet深度学习模型在matlab2022a中进行鞋子种类识别,利用Inception模块捕捉多尺度特征,提升分类精度。程序加载预训练模型`gnet.mat`,计算验证集的准确性并随机显示32个样本的预测结果及置信度。
|
8天前
|
机器学习/深度学习 算法
基于深度学习网络的十二生肖图像分类matlab仿真
该内容是关于使用GoogLeNet算法进行十二生肖图像分类的总结。在MATLAB2022a环境下,GoogLeNet通过Inception模块学习高层语义特征,处理不同尺寸的输入。核心程序展示了验证集上部分图像的预测标签和置信度,以4x4网格显示16张图像,每张附带预测类别和概率。
|
8天前
|
运维 监控 安全
网络安全预习课程笔记(四到八节)
网络安全领域的岗位多样化,包括应急响应、代码审计、安全研究、工具编写、报告撰写、渗透测试和驻场服务等。其中,应急响应处理系统故障和安全事件,代码审计涉及源码漏洞查找,安全研究侧重漏洞挖掘,工具编写则要开发自动化工具,报告撰写需要良好的写作能力。渗透测试涵盖Web漏洞和内网渗透。岗位选择受公司、部门和领导的影响。此外,还可以参与CTF比赛或兼职安全事件挖掘。了解不同岗位职责和技能需求,如安全运维工程师需要熟悉Web安全技术、系统加固、安全产品和日志分析等。同时,渗透测试包括信息收集、威胁建模、漏洞分析、攻击实施和报告撰写等步骤。学习网络安全相关术语,如漏洞、木马、后门等,有助于深入理解和学习。
|
10天前
|
机器学习/深度学习 自然语言处理 搜索推荐