深度学习基础知识神经网络

神经网络

1. 感知机

感知机(Perceptron)是 Frank Rosenblatt 在1957年提出的概念,其结构与MP模型类似,一般被视为最简单的人工神经网络,也作为二元线性分类器被广泛使用。通常情况下指单层的人工神经网络,以区别于多层感知机(Multilayer Perceptron)。尽管感知机结构简单,但能够学习并解决较复杂问题

感知机结构与MP模型类似,一般被视为最简单的人工神经网络,也作为二元线性分类器被广泛使用。通常情况下指单层的人工神经网络,以区别于多层感知机。尽管感知机结构简单,但能够学习并解决较复杂问题。

单层感知器类似一个逻辑回归模型,可以做线性分类任务,但是不能做更复杂的任务。

卷积神经网络

1. 全连接神经网络的2大缺陷

首先是原理上的缺陷:BP神经网络仍然是有监督的传统机器学习方法,遵循着以下思路。

不过是在最后面将SVM或者其他分类器换成神经网络,在大部分情况下其实没有什么优势,甚至增加了问题的复杂度。

提取的特征虽然是研究者们经过反复实验证明有效的特征,但仍然会一定程度上丢失了图像中的结构信息,从而丢失了一些对旋转扭曲等的不变性。而且要求输入的大小是固定的。为了学习到如偏移等微小的变化,需要有足够多的参数和足够多丰富的样本,最终学习到的权重,很可能在不同的位置处还会有非常相似的权重。

再一个就是结构上的缺陷:参数巨多,丢失空间信息。

如果一个隐藏层特征图像大小为100×100,输入层的特征图像大小为100×100,这意味着学习这一层需要100×100×100×100=108108的参数。如果以32位的浮点数进行存储,就需要4×1084×108的字节的存储量,约等于400MB的参数量。仅仅这样的一个网络层,其模型参数量已经超过了AlexNet网络的参数量,而100×100的特征图像分辨率,已经低于很多任务能够成功解决的下限。除了计算过程中需要存储的海量的参数,还有海量的计算,这些都超过了当时硬件的能力,因此大大限制了网络的大小,尤其是对于一些大的图像输入。

卷积神经网络的基本网络层

卷积神经网络:Convolutional Neural Networks、简称:CNN

CNN 主要包含卷积层、池化层和全连接层

  • 卷积层:用于对图像进行特征提取操作,其卷积核权重是共享权值的,对应的相关概念还包括步长,填充。
  • 池化层:用于降低特征图大小,降低后续操作的计算量和参数量
  • 全连接层:最终进行分类输出使用,本质就是多层感知机

卷积

卷积在工程和数学上有非常多的应用,在信号处理领域中,任意一个线性系统的输出,就是输入信号和系统激励函数的卷积。放到数字图像处理领域,卷积操作一般指图像领域的二维卷积。

一个二维卷积的案例如上,在图像上滑动,取与卷积核大小相等的区域,逐像素做乘法然后相加。 例如原始图像大小是5×5,卷积核大小是3×3。首先卷积核与原始图像左上角3×3对应位置的元素相乘求和,得到的数值作为结果矩阵第一行第一列的元素值,然后卷积核向右移动一个单位(即步长stride为1),与原始图像前三行第2、3、4列所对应位置的元素分别相乘并求和,得到的数值作为结果矩阵第一行第二列的元素值,以此类推。

卷积:一个核矩阵在一个原始矩阵上从上往下、从左往右扫描,每次扫描都得到一个结果,将所有结果组合到一起得到一个新的结果矩阵。它们的区别只在于权重算子是否进行了翻转。

python 复制代码
import torch 
from torch import nn

def corr2d(X, K):  # X 是输入,K是卷积核
    h, w = K.shape  # 获取卷积核的大小
    Y = torch.zeros((X.shape[0] - h + 1, X.shape[1] - w + 1))
    for i in range(Y.shape[0]):
        for j in range(Y.shape[1]):
            Y[i, j] = (X[i: i + h, j: j + w] * K).sum()  # 累加
    return Y

X = torch.tensor([[0, 1, 2], [3, 4, 5], [6, 7, 8]]) # 模拟一个输入
K = torch.tensor([[0, 1], [2, 3]])                  # 模拟一个卷积核
corr2d(X, K)

填充

使卷积后图像分辨率不变,方便计算特征图尺寸的变化

弥补边界信息"丢失"

填充是指在输入高和宽的两侧填充元素。我们在原输入高和宽的两侧分别添加了值为0的元素,使得输入高和宽从3变成了5,并导致输出高和宽由2增加到4。下图阴影部分为第一个输出元素及其计算所使用的输入和核数组元素:0×0+0×1+0×2+0×3=0。

步长

卷积窗口从输入数组的最左上方开始,按从左往右、从上往下的顺序,依次在输入数组上滑动。我们将每次滑动的行数和列数称为步幅或步长。

卷积神经网络不再是有监督学习了,不需要从图像中提取特征,而是直接从原始图像数据进行学习,这样可以最大程度的防止信息在还没有进入网络之前就丢失。

相关推荐
冬奇Lab几秒前
开源项目第222期:security-audit — Cloudflare 的安全审计 Skill,把 Coding Agent 变成六阶段安全审计器
人工智能·开源·资讯
卤煮最下饭8 分钟前
在眼镜上背单词:一个 AIUI 对话式智能体的诞生
人工智能
Java后端的Ai之路15 分钟前
Python进阶探索17 - Python中的深拷贝与浅拷贝
人工智能·python·ai·浅拷贝·深拷贝
知识分享小能手31 分钟前
深度学习学习教程,从入门到精通,深度生成模型 —— 知识点详解与代码实现(20)
人工智能·深度学习·学习
hzxxxz43 分钟前
26%的研发交给AI之后-人的位置换到了哪里
人工智能
m0_587383001 小时前
深圳24小时自助健身房系统软件开发实战:架构设计与部署指南
人工智能·数据挖掘·系统架构·需求分析
Joy T1 小时前
Spring AI 2.0 Agent 进阶:Memory、State 与 Context Engineering 常见技术全景
java·人工智能·后端·spring·agent入门·agent state
估值探索者1 小时前
【Python量化系统工程化 #08】关了 SSH 就停?systemd 让脚本开机自启 + 异常自动拉起
java·c++·人工智能·分类·数据挖掘
西柚研究生1234561 小时前
论文分析17:YOLOv11_UAVNet:无人机航拍图像专用目标检测算法
人工智能·python·深度学习·算法·目标检测
m4Rk_1 小时前
【论文阅读】Agent 记忆机制(74):CompassMem——从相似度检索走向事件图上的记忆导航
论文阅读·人工智能·学习·开源·github