【深度学习】核心概念-人工神经网络(Artificial Neural Network, ANN)

news2025/1/13 0:39:57

人工神经网络是一种受生物神经系统启发的机器学习模型,旨在通过连接大量的节点(称为神经元节点)来模拟人脑的学习方式。它是一种在监督学习和非监督学习中广泛应用的深度学习模型。


人工神经网络的基本结构

一个人工神经网络通常由以下三个部分组成:

  1. 输入层(Input Layer):
    接受输入数据,每个神经元代表一个特征。

  2. 隐藏层(Hidden Layers):
    通过权重、偏置和激活函数对输入进行处理,可以有一层或多层,决定了模型的表达能力。

  3. 输出层(Output Layer):
    提供最终的预测结果,输出层的神经元数目取决于任务类型(如分类的类别数)。

神经元

每个神经元的输出由输入的加权和经过激活函数计算得出:

z = \sum_{i=1}^n w_i x_i + b 
a = \sigma(z)

其中:

  • w_i:权重
  • x_i:输入
  • b:偏置
  • \sigma:激活函数
激活函数

常见激活函数包括:

  • Sigmoid: \sigma(x) = \frac{1}{1+e^{-x}}
  • ReLU: f(x) = \max(0, x)
  • Tanh: f(x) = \frac{e^x - e^{-x}}{e^x + e^{-x}}
  • Softmax: 用于多分类任务,输出概率分布。

工作原理

  1. 前向传播(Forward Propagation):
    数据从输入层通过隐藏层到输出层,逐层计算结果。

  2. 损失函数(Loss Function):
    用于评估预测值与实际值之间的差距。例如:

    • 均方误差(MSE):回归问题
    • 交叉熵(Cross Entropy):分类问题
  3. 反向传播(Backpropagation):
    通过链式法则计算损失函数对每个参数的梯度,并用梯度下降算法更新参数,优化模型。


常见类型的人工神经网络

  1. 前馈神经网络(Feedforward Neural Network, FNN):
    数据单向流动,无环路,是最基础的神经网络类型。

  2. 卷积神经网络(Convolutional Neural Network, CNN):
    适合处理图像数据,通过卷积层提取特征。

  3. 循环神经网络(Recurrent Neural Network, RNN):
    适合处理序列数据,能够捕获时间依赖关系。

  4. 生成对抗网络(Generative Adversarial Network, GAN):
    包括生成器和判别器,用于生成与真实数据相似的样本。

  5. 自动编码器(Autoencoder):
    用于降维或去噪,通过学习输入数据的紧凑表示进行重构。


示例代码

以下是一个简单的多层感知器(MLP)在 TensorFlow 中实现的分类示例:

import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
from tensorflow.keras.datasets import mnist
from tensorflow.keras.utils import to_categorical

# 加载 MNIST 数据集
(X_train, y_train), (X_test, y_test) = mnist.load_data()
X_train = X_train.reshape(-1, 28 * 28).astype('float32') / 255.0
X_test = X_test.reshape(-1, 28 * 28).astype('float32') / 255.0
y_train = to_categorical(y_train, 10)
y_test = to_categorical(y_test, 10)

# 构建模型
model = Sequential([
    Dense(128, activation='relu', input_shape=(28*28,)),
    Dense(64, activation='relu'),
    Dense(10, activation='softmax')  # 10 类分类
])

# 编译模型
model.compile(optimizer='adam',
              loss='categorical_crossentropy',
              metrics=['accuracy'])

# 训练模型
model.fit(X_train, y_train, epochs=10, batch_size=32, validation_split=0.2)

# 评估模型
loss, accuracy = model.evaluate(X_test, y_test)
print(f"Test Accuracy: {accuracy:.2f}")

运行结果

Epoch 1/10
1500/1500 [==============================] - 3s 2ms/step - loss: 0.2661 - accuracy: 0.9229 - val_loss: 0.1471 - val_accuracy: 0.9562
Epoch 2/10
1500/1500 [==============================] - 2s 2ms/step - loss: 0.1114 - accuracy: 0.9668 - val_loss: 0.1018 - val_accuracy: 0.9703
Epoch 3/10
1500/1500 [==============================] - 3s 2ms/step - loss: 0.0769 - accuracy: 0.9755 - val_loss: 0.0972 - val_accuracy: 0.9714
Epoch 4/10
1500/1500 [==============================] - 2s 1ms/step - loss: 0.0582 - accuracy: 0.9820 - val_loss: 0.0962 - val_accuracy: 0.9727
Epoch 5/10
1500/1500 [==============================] - 2s 1ms/step - loss: 0.0463 - accuracy: 0.9846 - val_loss: 0.0908 - val_accuracy: 0.9748
Epoch 6/10
1500/1500 [==============================] - 2s 2ms/step - loss: 0.0354 - accuracy: 0.9886 - val_loss: 0.1065 - val_accuracy: 0.9720
Epoch 7/10
1500/1500 [==============================] - 2s 1ms/step - loss: 0.0308 - accuracy: 0.9896 - val_loss: 0.1528 - val_accuracy: 0.9607
Epoch 8/10
1500/1500 [==============================] - 2s 1ms/step - loss: 0.0230 - accuracy: 0.9921 - val_loss: 0.1050 - val_accuracy: 0.9735
Epoch 9/10
1500/1500 [==============================] - 2s 1ms/step - loss: 0.0238 - accuracy: 0.9923 - val_loss: 0.1078 - val_accuracy: 0.9747
Epoch 10/10
1500/1500 [==============================] - 2s 1ms/step - loss: 0.0184 - accuracy: 0.9942 - val_loss: 0.1165 - val_accuracy: 0.9735
313/313 [==============================] - 1s 1ms/step - loss: 0.1037 - accuracy: 0.9741
Test Accuracy: 0.97

人工神经网络的优缺点

优点
  1. 非线性映射能力强:
    适合复杂任务,如图像识别、自然语言处理。

  2. 自动特征提取:
    无需手动设计特征,模型可以学习特征。

  3. 高度可扩展性:
    网络规模可调整,适应不同任务。

缺点
  1. 训练时间长:
    特别是深层网络,需要大量计算资源。

  2. 需要大规模数据:
    对数据量敏感,小数据集易过拟合。

  3. 缺乏可解释性:
    很难解释网络为何得出某一预测结果。


应用领域

  1. 计算机视觉: 图像分类、目标检测、语义分割。
  2. 自然语言处理: 机器翻译、文本生成、情感分析。
  3. 语音处理: 语音识别、语音合成。
  4. 游戏: 深度强化学习在棋类游戏中的应用。
  5. 推荐系统: 个性化内容推荐。

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

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

相关文章

切比雪夫插值

切比雪夫插值是一种基于切比雪夫节点的多项式插值方法,其优势是减少插值误差(特别是龙格现象:表现为高维插值时在边缘处插值误差骤增)。本文对其基本操作进行说明。 1. 切比雪夫节点 切比雪夫插值的核心是使用切比雪夫节点作为插值点。切比雪夫节点是切…

ELK的搭建

ELK elk:elasticsearch logstatsh kibana统一日志收集系统 elasticsearch:分布式的全文索引引擎点非关系型数据库,存储所有的日志信息,主和从,最少需要2台 logstatsh:动态的从各种指定的数据源,获取数据…

【物联网原理与运用】知识点总结(上)

目录 名词解释汇总 第一章 物联网概述 1.1物联网的基本概念及演进 1.2 物联网的内涵 1.3 物联网的特性——泛在性 1.4 物联网的基本特征与属性(五大功能域) 1.5 物联网的体系结构 1.6 物联网的关键技术 1.7 物联网的应用领域 第二章 感知与识别技术 2.1 …

英文字体:复古八十年代优雅品牌邀请函电影标题设计衬线字体 Eighties Nostalgia Font

嘿,大家好,我希望你们一切顺利,考虑到现在世界上发生的一切,你们在生活的各个方面都取得了进步。过去 3 年对我们所有人来说都是过山车,我一直非常怀念美好的时光。怀旧之情将我带到了 Pinterest,自然而然地…

GPT大模型下,如何实现网络自主防御

近年来,随着GPT大模型的出现,安全领域的攻防对抗变得更加激烈。RSAC2023人工智能安全议题重点探讨了人工智能安全的最新发展,包括人工智能合成器安全、安全机器学习以及如何利用渗透测试和强化学习技术来确保人工智能模型的安全性和可靠性。 …

Spring Framework 5.3.x源码构建 (jdk-1.8, gradle 7.5.1, idea2024.3)

1、下载jdk安装并配置环境变量(自行百度) https://www.oracle.com/java/technologies/downloads/#java8 2、下载spring-framework源码,切换分支到5.3.x https://github.com/spring-projects/spring-framework.git 备用地址 https://gitco…

韩顺平老师Linux学习笔记【持续更新...】

1、课程内容 1.1、课程大纲 1.2、Linux使用在哪些地方 Linux运维工程师Linux嵌入式工程师Linux下开发项目:JavaEE、大数据、Python、PHP、C/C、Go 1.3、Linux的应用领域 个人桌面领域服务器领域(最强领域)嵌入式领域 2、Linux入门 2.1、…

代码随想录算法训练营day27

代码随想录算法训练营 —day27 文章目录 代码随想录算法训练营前言一、贪心算法理论基础二、455.分发饼干三、376. 摆动序列53. 最大子数组和总结 前言 今天是算法营的第27天,希望自己能够坚持下来! 今日任务: ● 贪心算法理论基础 ● 455.…

浅谈容灾技术方案详解

一、什么是容灾? 容灾指的是,在异地搭建一套或多套和主生产系统一样的IT系统,用于应对在系统因发生意外(自然灾害、人为灾害、设备系统故障等)造成业务影响的情况,达到尽量让生产业务损失最小的目的。 二…

《框架程序设计》期末复习

目录 Maven 简介 工作机制(★) 依赖配置(★) Maven命令 MyBatis 入门 单参数查询(★) 多参数查询(★★★) 自定义映射关系(★★★) 基本增删改查操…

SDK调用文心一言如何接入,文心一言API接入教程

一、前期准备 注册百度智能云账号: 前往百度智能云官网注册一个账号。这是接入文心一言API的基础。 了解API接口: 在百度智能云开放平台中,找到文心一言API的详情页,了解提供的API接口类型(如云端API、移动端API、离线…

刚体变换矩阵的逆

刚体运动中的变换矩阵为: 求得变换矩阵的逆矩阵为: opencv应用 cv::Mat R; cv::Mat t;R.t(), -R.t()*t

<style lang=“scss“ scoped>: 这是更常见的写法,也是官方文档中推荐的写法

这两种写法在大多数情况下是没有区别的&#xff0c;它们都是 Vue.js 单文件组件 (.vue 文件) 中用来定义组件私有样式的方式。 两种写法&#xff1a; <style lang"scss" scoped>: 这是更常见的写法&#xff0c;也是官方文档中推荐的写法。<style scoped l…

ai,seo,关键词

什么是AI在SEO中的应用 在当今数字化时代&#xff0c;人工智能&#xff08;AI&#xff09;在搜索引擎优化&#xff08;SEO&#xff09;领域的应用正变得愈发重要。AI技术能够处理和分析大量的数据&#xff0c;通过识别用户行为和搜索模式&#xff0c;帮助优化网站内容和结构。…

git - 用SSH方式迁出远端git库

文章目录 git - 用SSH方式迁出远端git库概述笔记以gitee为例产生RSA密钥对 备注githubEND git - 用SSH方式迁出远端git库 概述 最近一段时间&#xff0c;在网络没问题的情况下&#xff0c;用git方式直接迁出git库总是会失败。 失败都是在远端, 显示RPC错误。 但是git服务器端…

slurm部署安装

slurm部署安装 管理节点和计算节点 在所有节点执行 安装系统工具 apt install -y build-essential curl wget munge将hosts文件 vim /etc/hostsxxx.xxx.xxx.xxx xxx分发到其他计算节点创建slurm用户 useradd -m slurm mkdir /var/spool/slurmd /var/spool/slurmctld chow…

初识Java 2

目录 一.方法&#xff08;函数&#xff09; 1.方法的定义 2.方法的调用过程 3.实参与形参的关系 4.方法的重载 5.方法签名&#xff08;了解&#xff09; 6.递归&#xff08;常用于数列&#xff0c;阶乘&#xff09; 二.数组 1.定义方法&#xff1a; 2.初始化&#xff…

react-quill 富文本组件编写和应用

index.tsx文件 import React, { useRef, useState } from react; import { Modal, Button } from antd; import RichEditor from ./RichEditor;const AnchorTouchHistory: React.FC () > {const editorRef useRef<any>(null);const [isModalVisible, setIsModalVis…

关于扫描模型 拓扑 和 传递贴图工作流笔记

关于MAYA拓扑和传递贴图的操作笔记 一、拓扑低模: 1、拓扑工作区位置: 1、准备出 目标 高模。 (高模的状态如上 ↑ )。 2、打开顶点吸附,和建模工具区,选择四边形绘制. 2、拓扑快捷键使…

【Rust自学】11.9. 单元测试

喜欢的话别忘了点赞、收藏加关注哦&#xff08;加关注即可阅读全文&#xff09;&#xff0c;对接下来的教程有兴趣的可以关注专栏。谢谢喵&#xff01;(&#xff65;ω&#xff65;) 11.9.1. 测试的分类 Rust把测试分为两类&#xff0c;一个是单元测试&#xff0c;一个是集成…