当前位置: 首页 > news >正文

【大厂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手写数字数据集进行分类。通过调整网络结构、激活函数、损失函数和优化器等组件,可以进一步优化模型的性能。

相关文章:

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

深度学习是机器学习中一种基于对数据进行表征学习的算法。观测值(例如一幅草莓照片)可以使用 多种方式来表示,如每个像素强度值的向量,或者更抽象地表示成一系列边、特定形状的区域等。 深度学习的最主要特征是使用神经网络作为计算模型。神经网络模型 …...

指针的基本含义及其用法

1.前言 在学习C语言的时候,我们会经常接触一个概念,指针和地址,关于这两个概念很多人并不能理解地十分透彻,接下来我将详细介绍一下这两者的概念 2.地址 我们知道计算机的上CPU(中央处理器)在处理数据的时…...

黄金交易策略(Nerve Nnife.mql4):趋势做单

完整EA:Nerve Knife.ex4黄金交易策略_黄金趋势ea-CSDN博客 当大小趋势相同行情走向也相同,就会开仓做顺势单,并会顺势追单,以达到快速止盈平仓的效果。大趋势追求稳定,小趋势追求敏捷,行情走向比小趋势更敏…...

HiveSQL——条件判断语句嵌套windows子句的应用

注:参考文章: SQL条件判断语句嵌套window子句的应用【易错点】--HiveSql面试题25_sql剁成嵌套判断-CSDN博客文章浏览阅读920次,点赞4次,收藏4次。0 需求分析需求:表如下user_idgood_namegoods_typerk1hadoop1011hive1…...

ClickHouse--01--简介

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 1. ClickHouse 简介官网: [https://clickhouse.com/docs/zh](https://clickhouse.com/docs/zh) 1.1 大数据处理场景1.2 什么是 ClickHouse1.3 OLAP 场景…...

【Django-ninja】在django ninja中处理异常

1. 直接抛内置异常 Django ninja内置了一些常用异常类。 from ninja.errors import HttpErrorapi.get("/some/resource") def some_operation(request):if True:raise HttpError(503, "Service Unavailable. Please retry later.")2. 覆写异常类 可以覆…...

【并发编程】原子累加器

📝个人主页:五敷有你 🔥系列专栏:并发编程 ⛺️稳重求进,晒太阳 JDK8之后有专门做累加的类,效率比自己做快数倍以上 累加器性能比较 参数是方法 // supplier 提供者 无中生有 ()->结果// func…...

Java 基于微信小程序的电子商城购物系统

博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝12W、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇…...

Git Push -f 命令详解

直接看原文: Git Push -f 命令详解 - 玩转Linux - SegmentFault 思否 -------------------------------------------------------------------------------------------------------------------------------- git push -f 这个命令的作用是将自己本地仓库的代码直接推送至仓…...

【LeetCode每日一题】前缀和的例题1248. 统计「优美子数组」974. 和可被 K 整除的子数组

leetcode 724. 寻找数组的中心索引 题目描述 给定一个整数类型的数组 nums,请编写一个能够返回数组 “中心索引” 的方法。 我们是这样定义数组 中心索引 的:数组中心索引的左侧所有元素相加的和等于右侧所有元素相加的和。 如果数组不存在中心索引&…...

备战蓝桥杯---数学基础3

本专题主要围绕同余来讲&#xff1a; 下面介绍一下基本概念与定理&#xff1a; 下面给出解这方程的一个例子&#xff1a; 下面是用代码实现扩展欧几里得算法&#xff1a; #include<bits/stdc.h> using namespace std; int gcd(int a,int b,int &x,int &y){if(b…...

[算法学习] 逆元与欧拉降幂

费马小定理 两个条件&#xff1a; p为质数a与p互质 逆元 如果要求 x^-1 mod p &#xff0c;用快速幂求 qmi(x,p-2) 就好 欧拉函数 思路&#xff1a;找到因数 i&#xff0c;phi / i * (i-1)&#xff0c;除干净&#xff0c;判断最后的n 欧拉降幂 欧拉定理 应用示例 m! 是一个…...

【Chrono Engine学习总结】4-vehicle-4.1-vehicle的基本概念

由于Chrono的官方教程在一些细节方面解释的并不清楚&#xff0c;自己做了一些尝试&#xff0c;做学习总结。 1、基本介绍 Vehicle Overview Vehicle Mannel Vehicle的官方demo 1.1 Vehicle的构型 一个车辆由许多子系统构成&#xff1a;悬挂、转向、轮子/履带、刹车/油门、动…...

腾讯云4核8G服务器多少钱?2024精准报价

腾讯云4核8G服务器S5和轻量应用服务器优惠价格表&#xff0c;轻量应用服务器和CVM云服务器均有活动&#xff0c;云服务器CVM标准型S5实例4核8G配置价格15个月1437.3元&#xff0c;5年6490.44元&#xff0c;标准型SA2服务器1444.8元一年&#xff0c;轻量应用服务器4核8G12M带宽一…...

汽车出租管理系统

文章目录 汽车出租管理系统一、系统演示二、项目介绍三、系统部分功能截图四、部分代码展示五、底部获取项目源码&#xff08;9.9&#xffe5;带走&#xff09; 汽车出租管理系统 一、系统演示 汽车租赁系统 二、项目介绍 语言&#xff1a;java 框架&#xff1a;SpringBoot、…...

使用SM4国密加密算法对Spring Boot项目数据库连接信息以及yaml文件配置属性进行加密配置(读取时自动解密)

一、前言 在业务系统开发过程中,我们必不可少的会使用数据库,在应用开发过程中,数据库连接信息往往都是以明文的方式配置到yaml配置文件中的,这样有密码泄露的风险,那么有没有什么方式可以避免呢?方案当然是有的,就是对数据库密码配置的时候进行加密,然后读取的时候再…...

【LeetCode每日一题】二维前缀和基本概念与案例

二维前缀和 根据某个块块 的 左上角坐标&#xff0c;和右下角坐标 求出 块块的累加和。 304. 二维区域和检索 - 矩阵不可变 /*** param {number[][]} matrix*/ var NumMatrix function(matrix) {let row matrix.length;let col matrix[0].length;// 初始化一个二维数组&am…...

计算机网络——网络安全

计算机网络——网络安全 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家&#xff0c; [跳转到网站](https://www.captainbed.cn/qianqiu) 小程一言专栏链接: [link](http://t.csdnimg.cn/ZUTXU) 网络安全何…...

SQl 注入 - 利用报错函数updatexml及extracevalue

环境准备:构建完善的安全渗透测试环境:推荐工具、资源和下载链接_渗透测试靶机下载-CSDN博客 一、updatexml() 函数 1. 使用前提: 在 MySQL 高版本中(大于5.1版本)添加了对 XML 文档进行查询和修改的函数,包括 updatexml() 和 extractvalue()。 2. 显示错误处理: 在…...

ChatGPT高效提问—prompt实践(生成VBA)

ChatGPT高效提问—prompt实践(生成VBA) 2. 生成VBA函数操作Excel ​ 当前Excel表格数据无背景颜色,区分不明显。假如我们想美化数据展示效果,把标题行设置为浅蓝色,其余奇数行设置为橙色,该怎么操作呢?这次我们基于ChatGPT写一个prompt来创建VBA函数。 ​ 输入prompt…...

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …...

挑战杯推荐项目

“人工智能”创意赛 - 智能艺术创作助手&#xff1a;借助大模型技术&#xff0c;开发能根据用户输入的主题、风格等要求&#xff0c;生成绘画、音乐、文学作品等多种形式艺术创作灵感或初稿的应用&#xff0c;帮助艺术家和创意爱好者激发创意、提高创作效率。 ​ - 个性化梦境…...

【机器视觉】单目测距——运动结构恢复

ps&#xff1a;图是随便找的&#xff0c;为了凑个封面 前言 在前面对光流法进行进一步改进&#xff0c;希望将2D光流推广至3D场景流时&#xff0c;发现2D转3D过程中存在尺度歧义问题&#xff0c;需要补全摄像头拍摄图像中缺失的深度信息&#xff0c;否则解空间不收敛&#xf…...

聊一聊接口测试的意义有哪些?

目录 一、隔离性 & 早期测试 二、保障系统集成质量 三、验证业务逻辑的核心层 四、提升测试效率与覆盖度 五、系统稳定性的守护者 六、驱动团队协作与契约管理 七、性能与扩展性的前置评估 八、持续交付的核心支撑 接口测试的意义可以从四个维度展开&#xff0c;首…...

2023赣州旅游投资集团

单选题 1.“不登高山&#xff0c;不知天之高也&#xff1b;不临深溪&#xff0c;不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...

推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材)

推荐 github 项目:GeminiImageApp(图片生成方向&#xff0c;可以做一定的素材) 这个项目能干嘛? 使用 gemini 2.0 的 api 和 google 其他的 api 来做衍生处理 简化和优化了文生图和图生图的行为(我的最主要) 并且有一些目标检测和切割(我用不到) 视频和 imagefx 因为没 a…...

【无标题】路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论

路径问题的革命性重构&#xff1a;基于二维拓扑收缩色动力学模型的零点隧穿理论 一、传统路径模型的根本缺陷 在经典正方形路径问题中&#xff08;图1&#xff09;&#xff1a; mermaid graph LR A((A)) --- B((B)) B --- C((C)) C --- D((D)) D --- A A -.- C[无直接路径] B -…...

C++课设:简易日历程序(支持传统节假日 + 二十四节气 + 个人纪念日管理)

名人说:路漫漫其修远兮,吾将上下而求索。—— 屈原《离骚》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 专栏介绍:《编程项目实战》 目录 一、为什么要开发一个日历程序?1. 深入理解时间算法2. 练习面向对象设计3. 学习数据结构应用二、核心算法深度解析…...

前端中slice和splic的区别

1. slice slice 用于从数组中提取一部分元素&#xff0c;返回一个新的数组。 特点&#xff1a; 不修改原数组&#xff1a;slice 不会改变原数组&#xff0c;而是返回一个新的数组。提取数组的部分&#xff1a;slice 会根据指定的开始索引和结束索引提取数组的一部分。不包含…...

【UE5 C++】通过文件对话框获取选择文件的路径

目录 效果 步骤 源码 效果 步骤 1. 在“xxx.Build.cs”中添加需要使用的模块 &#xff0c;这里主要使用“DesktopPlatform”模块 2. 添加后闭UE编辑器&#xff0c;右键点击 .uproject 文件&#xff0c;选择 "Generate Visual Studio project files"&#xff0c;重…...