【机器学习】十大算法之一 “神经网络”
作者主页:爱笑的男孩。的博客_CSDN博客-深度学习,活动,python领域博主爱笑的男孩。擅长深度学习,活动,python,等方面的知识,爱笑的男孩。关注算法,python,计算机视觉,图像处理,深度学习,pytorch,神经网络,opencv领域.
https://blog.csdn.net/Code_and516?type=blog个人简介:打工人。
持续分享:机器学习、深度学习、python相关内容、日常BUG解决方法及Windows&Linux实践小技巧。
如发现文章有误,麻烦请指出,我会及时去纠正。有其他需要可以私信我或者发我邮箱:zhilong666@foxmail.com
作为机器学习十大算法之一的神经网络算法,是人工智能发展历程中非常重要的一环,其在很多领域都有应用,如语音识别、图像分类、自然语言处理等等。
本文将详细讲解机器学习十大算法之一“神经网络”
目录
一、简介
二、发展史
1. 原始感知机
2. 多层感知机
3. 反向传播算法
4. 卷积神经网络
三、算法原理
1. 神经元
2. 激活函数
3. 反向传播算法
四、算法功能
1. 数据分类
2. 数据预测
3. 图像处理
4. 自然语言处理
五、示例代码
1. 导入库
2. 数据探索
3. 特征选择与切割数据
4. 模型构建
5. 模型评估
6. 输出结果
六、总结
一、简介
神经网络是一种模拟人脑信息处理方式的算法,其通过神经元之间不断传递信息、调节连接权重等方式进行学习和预测,最终实现数据分类、识别等功能。由于神经网络算法的强大功能和广泛应用,其在过去几十年间经历了多次的发展和变革。
二、发展史
1. 原始感知机
神经网络算法的起源可以追溯到20世纪50年代的原始感知机模型。感知机是一种由美国计算机科学家费兹(Frank Rosenblatt)提出的单层前馈神经网络,其机制类似于神经元,在输入层接收输入数据,通过连接权重,对数据进行加权处理,并通过激活函数进行输出结果。其基本公式如下:
其中,x为输入特征向量,w为连接权重向量,b为偏置,f为激活函数,y为输出结果。
原始感知机模型只能解决线性可分问题,且其训练过程比较复杂,无法适应复杂的数据任务。
2. 多层感知机
为了提高神经网络算法的性能,研究者们提出了多层感知机模型。多层感知机是一种带有隐含层的前馈神经网络,其利用多层神经元对输入向量进行非线性变换,并通过反向传播算法不断调整连接权重,实现分类、预测等果。
多层感知机在实际运用中,特别是在图像识别、自然语言处理等领域,被证明具有很强的优势。
3. 反向传播算法
为了解决多层感知机模型训练过程中的问题,扩大算法的应用范围,研究者们提出了反向传播算法。反向传播算法是一种链式法则,其通过对神经网络进行误差反向传播,不断调整连接权重,使神经网络输出结果与实际标签相差越来越小,并逐渐达到一个稳定的状态。
反向传播算法是多层神经网络的训练核心,也是神经网络成为至今广受欢迎的原因之一。
4. 卷积神经网络
随着计算机视觉和图像处理技术的发展,神经网络中又产生了一类被成为卷积神经网络(CNN)。卷积神经网络是一种特殊的多层神经网络,其特点是在输入层和隐藏层之间插入了卷积层和池化层,对高维数据状态特征进行提取和识别。
卷积神经网络应用很广,不仅在图像分类、目标检测等领域有着非凡表现,在语音识别、自然语言处理等领域也有着很强的应用潜力。
三、算法原理
神经网络算法的核心思想是构建一个由神经元相互连接的网络,类比人类神经系统,通过学习调整连接权重,实现数据分类、预测等功能。
1. 神经元
神经元是神经网络中的基本元素,其特点是能接收其他神经元的输入信号,并通过连接权重进行求和运算,再通过激活函数进行输出结果。神经元的基本公式如下:
其中,w为连接权重向量,x为输入特征向量,b为偏置,f为激活函数,y为输出结果。
2. 激活函数
激活函数是一个非线性的函数,其作用是强调神经元之间的复杂性和非线性关系。在神经网络的训练中,常用的激活函数有sigmoid、ReLU、softmax等。
sigmoid函数是一种S型函数,其公式为:
ReLU函数则在输入值大于0时输出该值,小于0时输出0:
softmax函数则常用于分类问题,将输出结果映射到概率值:
3. 反向传播算法
反向传播算法是多层神经网络的训练核心,其基本原理是对网络中每个神经元的输出结果进行误差分析,然后再通过链式法则,反向传播误差,最终实现对每个连接权重进行调节,使网络输出结果逐渐趋于期望结果。反向传播算法主要分为前向传播和反向传播过程:
(1) 前向传播:将训练数据输入神经网络,进行前向传播计算,获得网络的输出结果。
(2) 反向传播:通过计算输出值与期望值之间的误差,逐层反向传输误差值,并不断调整连接权重,使网络输出结果逐渐靠近正确结果。反向传播具体过程如下:
设网络输出结果为 yy,期望标签为 y_eye,损失函数为 LL,则其误差 EE 可以表示为:
对于每个连接权重 w,将误差 E 对其偏导数表示为 ∂E\∂w,则根据链式法则有:
其中,netnet 表示输入加权和。
通过上式,可以对神经网络中每个连接权重进行调节,从而减小误差并提升网络性能。
四、算法功能
神经网络算法在机器学习领域有着广泛的应用,其主要功能如下:
1. 数据分类
神经网络可以分别用于二元分类和多元分类数据集,如通过图像预测物体种类、通过数据集预测人物情绪等。
2. 数据预测
神经网络可以对任意数据进行预测,如对基于时间序列的数据,预测未来的股票价格、气温变化等。
3. 图像处理
卷积神经网络的出现,极大的推动图片处理领域的发展,在图像分类、目标检测、图像生成等领域得到了广泛的应用。
4. 自然语言处理
自然语言处理领域,神经网络是我们的主力军,如在机器翻译、情感分析、文本摘要等领域都有相当的应用和地位。
五、示例代码
下面以 Python 编程语言为例,简单介绍神经网络在数据分类任务中的应用。
数据集中包含 569 条乳腺癌数据,其中357条良性乳腺癌数据,212条恶性乳腺癌数据,需要使用神经网络模型将两种数据进行分类。
1. 导入库
import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
from sklearn.datasets import load_breast_cancer
from keras.models import Sequential
from keras.layers import Dense
from keras.utils import to_categorical
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score,classification_report,confusion_matrix
2. 数据探索
cancer = load_breast_cancer()
df = pd.DataFrame(np.c_[cancer['data'], cancer['target']], columns = np.append(cancer['feature_names'], ['target']))sns.countplot(df['target'])
plt.title('Class Distribution')
plt.xlabel('Target Class')
plt.ylabel('Count')
plt.show()
3. 特征选择与切割数据
X,y = load_breast_cancer(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=0)
4. 模型构建
model=Sequential()
model.add(Dense(10,input_dim=30,activation='relu'))
model.add(Dense(1,activation='sigmoid'))
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
model.fit(X_train, y_train, epochs=1000, batch_size=10, verbose=0)
5. 模型评估
模型训练完毕后,接下来对模型进行评价。包括准确率,混淆矩阵和分类器报告等相关指标。
y_pred = model.predict(X_test)
y_pred = (y_pred > 0.5)
print('Accuracy:',accuracy_score(y_test,y_pred))
print('Confusion matrix:')
print(confusion_matrix(y_test,y_pred))
print('Classification report:')
print(classification_report(y_test,y_pred))
6. 输出结果
Accuracy: 0.9473684210526315
Confusion matrix:
[[ 59 4]
[ 4 104]]
Classification report:
precision recall f1-score support0 0.94 0.94 0.94 63
1 0.96 0.96 0.96 108accuracy 0.95 171
macro avg 0.95 0.95 0.95 171
weighted avg 0.95 0.95 0.95 171
六、总结
神经网络算法是一种非常强大和广泛应用的算法,其在数据分类、预测、图像处理、自然语言处理等领域都有着非常出色的表现。神经网络算法的发展历程从原始的感知机模型到多层神经网络,再到卷积神经网络,反应了机器学习的发展过程,各个模型优点互补,使神经网络在各个领域得以深入应用。
在这里需要说明的是,神经网络算法虽然在应用中表现出非常强大的性能和普适性,但是也面临着一些问题,如训练困难、容易出现过拟合等问题。因此在实际应用过程中,需要结合具体问题和数据特点,综合评估算法优劣,在适当的情况下,结合其他机器学习算法来实现更优秀的性能。
相关文章:

【机器学习】十大算法之一 “神经网络”
作者主页:爱笑的男孩。的博客_CSDN博客-深度学习,活动,python领域博主爱笑的男孩。擅长深度学习,活动,python,等方面的知识,爱笑的男孩。关注算法,python,计算机视觉,图像处理,深度学习,pytorch,神经网络,opencv领域.https://blog.csdn.net/Code_and516?typeblog个…...
【MarkDown】CSDN Markdown之流程图graphflowchart详解
基本语法 flowchart/graph 流程图(Flowcharts/Graphs)是由节点 (几何形状) 和连接线 (箭头或线条)组成的. Mermaid代码定义了节点和连线的编码方式,并支持不同的箭头类型、多向箭头以及子图之间的任意链接。 警告 如果在流程图的节点使用e…...

Git下:Git命令使用-详细解读
目录 一、Git 安装 二、Git 配置 三、Git 工作流程 四、Git 工作区、暂存区和版本库 五、常用 Git 命令清单 1. 创建仓库 2. 增加/删除文件 3. 代码提交 4. 分支管理 5. 标签 6. 查看历史提交 7. 远程仓库同步 8. 撤销操作 六、Git 常用命令速查表 七、Git 电子…...

一条SQL语句的前世今生
文章目录 MySQL 基础架构分析语句分析查询语句更新语句 总结 本篇文章会分析下一个 SQL 语句在 MySQL 中的执行流程,包括 SQL 的查询在 MySQL 内部会怎么流转,SQL 语句的更新是怎么完成的。 MySQL 基础架构分析 下图是 MySQL 的一个简要架构图ÿ…...
各种架构比较
架构特点适用领域x86- 市场份额大,广泛支持和应用<br>- 成熟稳定,软件生态丰富<br>- 相对较低的功耗<br>- 适用于桌面、服务器和嵌入式系统等桌面应用、服务器、嵌入式系统x86-64- 支持 64 位操作系统和应用程序<br>- 更大的内存…...

scapy定制数据包探测主机
kali 输入scapy 进入界面 scapy定制ARP协议 输入ARP().display()显示ARP包的详细信息 输入sr1(ARP(pdst"192.168.133.2")),向网关发送arp请求数据包 scapy定制PING包 输入IP().display()显示IP包的详细信息 输入ICMP().display()显示ICMP包的详细信息…...

【Java】Java核心要点总结70
文章目录 1. volatile 如何保证变量的可⻅性?2. volatile 可以保证原⼦性么?3. synchronized 关键字4. synchronized 和 volatile 的区别5. synchronized 和 ReentrantLock 的区别 1. volatile 如何保证变量的可⻅性? 在Java中,使…...

如何把一个 Git 仓库的分支加入另一个无关的 Git 仓库
文章目录 笔者需要将两个无关的 Git 仓库合并,也就是把一个 Git 仓库的分支加入另一个无关的 Git 仓库。笔者琢磨了一下之后就实现了。方法如下。 笔者的运行环境: git version 2.37.0.windows.1 TortoiseGit 2.11.0.0 IntelliJ IDEA 2023.1.1 (Ultima…...

深蓝学院C++基础与深度解析笔记 第 4 章 表达式
第 4 章 表达式 一、表达式基础 A、表达式: 由一到多个操作数组成,可以求值并 ( 通常会 ) 返回求值结果: #include <iostream> int main(){int x;x 3; }最基本的表达式:变量、字面值通常来说,表达式会包含操作符(运算符…...
CLION开发STM32之W5500系列(一)
开篇说明 本系列适用于需要使单片机通过网口进行通信的开发。针对的是刚入门的同学们,也是个人的经验分享。本次使用到的芯片为stm32f103vet6(其他的也可以)本次使用的网口模块为W5500,其网关有示例程序均可以参考.本次使用Clion+OpenOCD+ARM-GCC 进行开发、烧录、编译.建议熟…...

Web3通过ganache运行起一个本地虚拟区块链
通过文章 Web3开发准备工作 手把手带你创建自己的 MetaMask 账号大家简单的对网络 有了个比较模糊的概念 不同的网络连接这不同的区块链 那么 我们就要搞清楚 我们切换不同的网络 我们的数字资产是不一样的 在这里 我们需要先安装一个插件工具 ganache 我们先在本地创建一个文…...
01 背包问题解析与代码 python 实现
01 背包问题解析与代码 问题定义 给定一堆具有不同重量 { w 1 , w 2 , ⋯ , w n } \{ w_1,w_2, \cdots,w_n \} {w1,w2,⋯,wn}与价值 { v 1 , v 2 , ⋯ , v n } \{ v_1,v_2, \cdots,v_n \} {v1,v2,⋯,vn}的背包(knapsack),在总重…...
Vue实现前端视频展示列表及特征提取、笔记、删除、文件夹组织功能
Vue实现前端视频展示列表及特征提取、笔记、删除、文件夹组织功能 在前端展示上传的视频列表时,我们可以使用Element-UI中的Card组件来实现。同时,我们还可以添加一些功能,如缓存播放的视频、选择视频文本特征提取处理、写笔记、删除视频、组…...

多传感器时频信号处理:多通道非平稳数据的分析工具(Matlab代码实现)
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...

数据结构算法 -分而治之算法
引言 坤坤是一个养鸡场的员工,他非常热爱他的工作,并且总是努力提高他的专业技能。有一天,养鸡场接到了一项任务:在短时间内处理一批大量的鸡。 这批鸡数量非常大,比普通的数量要多得多,坤坤意识到他们需…...
涉密信息系统口令管理制度
第一条 口令是涉密信息系统身份认证的基本防护措施,为保障 涉密信息系统的安全运行,规范网络用户及系统口令,特制定本制度。 第二条 具有口令功能的计算机、网络设备等计算机信息系统设 备,必须使用口令对用户的身份进行验证…...
UML与流程图
UML简介 UML(Unified Modeling Language,统一建模语言)是一种用于软件系统分析与设计的标准化建模语言。它提供了一套丰富的图形符号和规则,可用于描述系统的结构、行为和交互,帮助开发人员、设计师和利益相关者之间进…...

音视频开发Level0: 入门级20~25k的工作
今天给大家分享一个音视频开发领域,入门级别的工作,要求不高。 主要做什么呢,行车记录仪,运动相机,各种拍摄器材包括医疗领域的喉镜啊,等等。 这种产品,招人的公司深圳最多,因为深…...

Git第一章、Git的原理与使用
目录 一、Git安装 1.1Linux Centos安装 二、Git基本操作 2.1创建 Git 本地仓库 2.2配置Git 三、认识工作区、暂存区、版本库 3.1添加文件(场景一) 3.2修改文件 3.3版本回退 四、撤销修改 4.1情况一:对于工作区的代码,还…...

软件开发流程
目录 软件软件开发流程的演变 瀑布模型敏捷模型 XPSCRUMDevOps 1.软件 与计算机系统操作有关的计算机程序、可能有的文件、文档及数据。 软件可以分为两种主要类型: 独立软件:独立软件是一种完整的应用程序,可以直接在计算机或移动设备上…...

SCAU期末笔记 - 数据分析与数据挖掘题库解析
这门怎么题库答案不全啊日 来简单学一下子来 一、选择题(可多选) 将原始数据进行集成、变换、维度规约、数值规约是在以下哪个步骤的任务?(C) A. 频繁模式挖掘 B.分类和预测 C.数据预处理 D.数据流挖掘 A. 频繁模式挖掘:专注于发现数据中…...

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility
Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility 1. 实验室环境1.1 实验室环境1.2 小测试 2. The Endor System2.1 部署应用2.2 检查现有策略 3. Cilium 策略实体3.1 创建 allow-all 网络策略3.2 在 Hubble CLI 中验证网络策略源3.3 …...

页面渲染流程与性能优化
页面渲染流程与性能优化详解(完整版) 一、现代浏览器渲染流程(详细说明) 1. 构建DOM树 浏览器接收到HTML文档后,会逐步解析并构建DOM(Document Object Model)树。具体过程如下: (…...
【论文笔记】若干矿井粉尘检测算法概述
总的来说,传统机器学习、传统机器学习与深度学习的结合、LSTM等算法所需要的数据集来源于矿井传感器测量的粉尘浓度,通过建立回归模型来预测未来矿井的粉尘浓度。传统机器学习算法性能易受数据中极端值的影响。YOLO等计算机视觉算法所需要的数据集来源于…...

零基础设计模式——行为型模式 - 责任链模式
第四部分:行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习!行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想:使多个对象都有机会处…...

CMake 从 GitHub 下载第三方库并使用
有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...

RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程
本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。 本文全面剖析RNN核心原理,深入讲解梯度消失/爆炸问题,并通过LSTM/GRU结构实现解决方案,提供时间序列预测和文本生成…...
AGain DB和倍数增益的关系
我在设置一款索尼CMOS芯片时,Again增益0db变化为6DB,画面的变化只有2倍DN的增益,比如10变为20。 这与dB和线性增益的关系以及传感器处理流程有关。以下是具体原因分析: 1. dB与线性增益的换算关系 6dB对应的理论线性增益应为&…...

使用LangGraph和LangSmith构建多智能体人工智能系统
现在,通过组合几个较小的子智能体来创建一个强大的人工智能智能体正成为一种趋势。但这也带来了一些挑战,比如减少幻觉、管理对话流程、在测试期间留意智能体的工作方式、允许人工介入以及评估其性能。你需要进行大量的反复试验。 在这篇博客〔原作者&a…...
08. C#入门系列【类的基本概念】:开启编程世界的奇妙冒险
C#入门系列【类的基本概念】:开启编程世界的奇妙冒险 嘿,各位编程小白探险家!欢迎来到 C# 的奇幻大陆!今天咱们要深入探索这片大陆上至关重要的 “建筑”—— 类!别害怕,跟着我,保准让你轻松搞…...