【大厂AI课学习笔记】【1.6 人工智能基础知识】(3)神经网络

深度学习是机器学习中一种基于对数据进行表征学习的算法。观测值(例如一幅草莓照片)可以使用

多种方式来表示,如每个像素强度值的向量,或者更抽象地表示成一系列边、特定形状的区域等。

深度学习的最主要特征是使用神经网络作为计算模型。神经网络模型 得名于其对于动物神经元传递信息方式的模拟。

实际上,现在的神经网络模型,和神经,已经没有特别大的关系了。

深度学习的深度,一般指神经网络的层数。一般有2-3个隐藏层;深层神经网络,隐藏层可能有150层;

背景知识梳理:

神经网络的定义

神经网络(Neural Networks)是一种模拟人脑神经元连接方式的计算模型,用于处理信息、学习和识别模式。它由大量相互连接的神经元(或称为节点、单元)组成,每个神经元接收来自其他神经元的输入信号,并根据这些信号产生输出。神经网络通过调整神经元之间的连接权重来学习和适应新数据。

发展脉络

  1. 起源:神经网络的灵感来源于生物学中的神经系统。1943年,心理学家Warren McCulloch和数学家Walter Pitts提出了第一个基于生物神经系统的计算模型。
  2. 感知机:1957年,Frank Rosenblatt发明了感知机(Perceptron),这是一种简单的二元线性分类器,可以学习并解决一些基本问题。然而,它不能处理异或(XOR)等非线性问题。
  3. 反向传播算法:1986年,Rumelhart、Hinton和Williams提出了反向传播(Backpropagation)算法,这是训练多层神经网络的关键技术。它允许网络学习更复杂的非线性模式。
  4. 深度学习:2006年,Hinton等人提出了“深度学习”的概念,并展示了如何使用无监督预训练和有监督微调来训练深度置信网络(DBN)。这标志着深度学习时代的开始。
  5. 卷积神经网络(CNN):Yann LeCun等人在1998年提出了卷积神经网络(Convolutional Neural Networks, CNN),用于图像识别。CNN在图像处理任务中表现出色。
  6. 循环神经网络(RNN):RNN是为了处理序列数据而设计的,它能够捕捉序列中的时间依赖性。RNN在自然语言处理(NLP)和语音识别等领域有广泛应用。
  7. 生成对抗网络(GAN):2014年,Goodfellow等人提出了生成对抗网络(Generative Adversarial Networks, GAN),它由生成器和判别器两个神经网络组成,用于生成逼真的新数据。
  8. Transformer架构:2017年,Vaswani等人提出了Transformer架构,它完全基于自注意力机制(self-attention),并在自然语言处理任务中取得了巨大成功,如BERT、GPT等模型。

神经网络的类型与关键技术构成

  1. 前馈神经网络:信息从输入层单向传递到输出层,没有循环或反馈连接。关键技术包括激活函数(如ReLU、sigmoid、tanh等)、权重初始化和正则化(如L1、L2正则化)。
  2. 卷积神经网络(CNN):专门用于处理图像数据。关键技术包括卷积层、池化层、全连接层和激活函数。CNN通过卷积层提取图像特征,并通过池化层降低数据维度。
  3. 循环神经网络(RNN):处理序列数据,如文本或时间序列数据。关键技术包括循环连接、长短时记忆单元(LSTM)和门控循环单元(GRU),用于捕捉序列中的长期依赖性。
  4. 生成对抗网络(GAN):由生成器和判别器组成,通过对抗性训练生成新数据。关键技术包括生成器和判别器的设计、损失函数的选择以及训练策略。
  5. 自编码器:用于无监督学习,尝试复制其输入到输出。关键技术包括编码器和解码器的设计,以及损失函数(如均方误差)的选择。
  6. Transformer架构:基于自注意力机制处理序列数据。关键技术包括多头自注意力机制、位置编码和前馈神经网络层。

如何构建神经网络

构建神经网络通常涉及以下步骤:

  1. 定义网络结构:确定输入层、隐藏层和输出层的神经元数量以及层与层之间的连接方式。
  2. 初始化权重和偏置:随机初始化神经元的权重和偏置值。
  3. 选择激活函数:为神经网络的每一层选择一个激活函数。
  4. 定义损失函数:根据任务类型(分类、回归等)选择合适的损失函数。
  5. 选择优化器:如梯度下降、随机梯度下降(SGD)、Adam等,用于更新权重和偏置以最小化损失函数。
  6. 训练网络:使用训练数据集进行前向传播计算损失,然后通过反向传播算法计算梯度并更新权重和偏置。
  7. 评估网络性能:使用验证数据集评估网络的性能,并根据需要进行调整(如超参数调优)。
  8. 应用网络:使用测试数据集评估网络的最终性能,并将其应用于实际任务中。

示例

使用TensorFlow构建简单的神经网络进行MNIST手写数字分类
 

import tensorflow as tf  
from tensorflow.keras.datasets import mnist  
from tensorflow.keras.models import Sequential  
from tensorflow.keras.layers import Dense, Flatten  
from tensorflow.keras.losses import SparseCategoricalCrossentropy  
from tensorflow.keras.optimizers import Adam  
  
# 加载MNIST数据集  
(train_images, train_labels), (test_images, test_labels) = mnist.load_data()  
  
# 数据预处理:归一化和展平  
train_images = train_images.reshape((60000, 28 * 28)) / 255.0  
test_images = test_images.reshape((10000, 28 * 28)) / 255.0  
  
# 构建神经网络模型  
model = Sequential([  
    Dense(128, activation='relu', input_shape=(28 * 28,)),  # 输入层与第一个隐藏层  
    Dense(64, activation='relu'),  # 第二个隐藏层  
    Dense(10, activation='softmax')  # 输出层,10个类别(0-9)  
])  
  
# 编译模型:指定损失函数、优化器和评估指标  
model.compile(optimizer=Adam(),  
              loss=SparseCategoricalCrossentropy(),  
              metrics=['accuracy'])  
  
# 训练模型  
model.fit(train_images, train_labels, epochs=5, batch_size=32)  
  
# 评估模型性能  
test_loss, test_acc = model.evaluate(test_images, test_labels)  
print(f'Test accuracy: {test_acc}')

这段代码使用TensorFlow库构建了一个简单的三层神经网络(包括输入层、两个隐藏层和一个输出层),用于对MNIST手写数字数据集进行分类。通过调整网络结构、激活函数、损失函数和优化器等组件,可以进一步优化模型的性能。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

FAST角点检测算法

FAST(Features from Accelerated Segment Test)角点检测算法是一种快速且高效的角点检测方法。它通过检测每个像素周围的连续像素集合,确定是否为角点。以下是 FAST 角点检测算法的基本流程: FAST 角点检测算法的基本过程主要包括…

C++ //练习 5.12 修改统计元音字母的程序,使其能统计以下含有两个字符的字符序列的数量:ff、fl和fi。

C Primer(第5版) 练习 5.12 练习 5.12 修改统计元音字母的程序,使其能统计以下含有两个字符的字符序列的数量:ff、fl和fi。 环境:Linux Ubuntu(云服务器) 工具:vim 代码块 /****…

【Spring学习】Spring Data Redis:RedisTemplate、Repository、Cache注解

1,spring-data-redis官网 1)特点 提供了对不同Redis客户端的整合(Lettuce和Jedis)提供了RedisTemplate统一API来操作Redis支持Redis的发布订阅模型支持Redis哨兵和Redis集群支持基于Lettuce的响应式编程支持基于JDK、JSON、字符…

【Android】使用Android Studio运行Hello World项目

文章目录 1. JDK的安装与配置2. Android Studio的安装3. 运行Hello World项目3.1 新建项目3.2 修改项目配置3.2.1 修改UI界面3.2.2 配置 Android SDK 3.3 添加并运行虚拟设备3.4 运行项目 1. JDK的安装与配置 想要使用Android Studio,必须先配置Java环境&#xff0…

ArcGIS学习(七)图片数据矢量化

ArcGIS学习(七)图片数据矢量化 通过上面几个任务的学习,大家应该已经掌握了ArcGIS的基础操作,并且学习了坐标系和地理数据库这两个非常重要且稍微难一些的专题。从这一任务开始,让我们进入到实战案例板块。 首先进入第一个案例一一图片数据矢量化。 我们在平时的工作学…

自然语言处理(NLP)—— 基本概念

自然语言处理(Natural Language Processing,简称NLP)是人工智能和语言学领域的一个分支,它涉及到计算机和人类(自然)语言之间的相互作用。它的主要目标是让计算机能够理解、解释和生成人类语言的数据。NLP结…

Solidworks:平面草图练习

继续练习平面草图,感觉基本入门了。

如何在 Windows 上恢复已删除的 Excel 文件

许多公司和个人在 Excel 电子表格中保存有价值的信息。当会议需要某个重要的 Excel 文件时,突然意识到您已删除或丢失该文件可能会造成严重问题。不用担心。我们将向您展示在 Windows 计算机上恢复已删除的 Excel 文件的多种方法。 如何在 Windows 上恢复已删除的 E…

腾讯云4核8G服务器可以用来干嘛?怎么收费?

腾讯云4核8G服务器适合做什么?搭建网站博客、企业官网、小程序、小游戏后端服务器、电商应用、云盘和图床等均可以,腾讯云4核8G服务器可以选择轻量应用服务器4核8G12M或云服务器CVM,轻量服务器和标准型CVM服务器性能是差不多的,轻…

bert-vits2本地部署报错疑难问题汇总

环境: bert-vits2.3 win 和wsl 问题描述: bert-vits2本地部署报错疑难问题汇总 解决方案: 问题1: Conda安装requirements里面依赖出现ERROR: No matching distribution found for opencc1.1.6 解决方法 需要在 Python 3.11 上使用 Op…

Acwing---839. 模拟堆

模拟堆 1.题目2.基本思想3.代码实现 1.题目 维护一个集合,初始时集合为空,支持如下几种操作: I x,插入一个数 x;PM,输出当前集合中的最小值;DM,删除当前集合中的最小值&#xff08…

sheng的学习笔记-docker部署springboot

部署文章目录:目录 docker部署,原理,命令,可以参考:docker原理图,部署,命令 目录 将springboot部署到docker中 遇到过的问题: pom配置 操作步骤 生成jar 构建镜像 查看镜像d…

UUID算法:独一无二的标识符解决方案

引言 在分布式系统和大数据环境下,唯一标识符的生成和管理是一项关键任务。UUID(Universally Unique Identifier)算法应运而生,成为了解决重复数据和标识符冲突的有效工具。本文将探讨UUID算法的优势和劣势,分析其在分…

上个月刚跟男朋友一起买了个三百万的房子,准备明年结婚,这个月他突然被裁了...

职场变动,尤其是裁员,已经成为我们无法忽视的现实。不管你是互联网大佬,还是刚入行的新人,这个问题都可能突如其来,影响到你的生活和计划。 想象一下,你和你的另一半刚刚为了将来的幸福生活,拼尽…

第三节 zookeeper基础应用与实战2

目录 1. Watch事件监听 1.1 一次性监听方式:Watcher 1.2 Curator事件监听机制 2. 事务&异步操作演示 2.1 事务演示 2.2 异步操作 3. Zookeeper权限控制 3.1 zk权限控制介绍 3.2 Scheme 权限模式 3.3 ID 授权对象 3.4 Permission权限类型 3.5 在控制台…

电商小程序04实现登录逻辑

目录 1 创建自定义方法2 获取用户名和密码3 验证用户是否同意协议4 验证用户名和密码总结 上一篇我们实现了登录功能的前端界面,这一篇实现一下登录的具体逻辑。 1 创建自定义方法 一般如果页面点击按钮需要有事件响应的,我们用自定义方法来实现。打开我…

CrossOver虚拟机软件功能相似的软件

与 CrossOver 功能相似的软件有: Wine:Wine 是一款在 Unix 和 Unix-like 系统(如 Linux、macOS)上运行 Windows 应用程序的兼容层。与 CrossOver 类似,Wine 通过模拟 Windows 的 API 来实现应用程序的兼容性。它支持大…

零售行业供应商数据分发,怎样提高安全性和效率?

零售行业是我国经济发展的重要组成,零售行业包罗万象,如包括汽车零售、日化零售、快消品零售等,不同细分行业的运营模式各不相同,但大体来说,零售行业都具备最基础的供应商和零售商,供应商将商品或服务卖给…

【蓝桥杯Python】试题 算法训练 数组移动

资源限制 内存限制:256.0MB C/C时间限制:1.0s Java时间限制:3.0s Python时间限制:5.0s 问题描述 初始数组A[N]中为1,2,..,N,N个数字,现要进行M次操作,每次操作给定一个数字i,记…

Centos7安装nginx yum报错

Centos7安装nginx yum报错,yum源报错解决办法: 1、更新epel源后,出现yum报错 [roothacker117 ~]# yum install epel-release(安装成功) [roothacker117 ~]# yum install nginx(安装失败,提示如…