【机器学习】十大算法之一 “神经网络”

news2024/11/24 16:07:58

作者主页:爱笑的男孩。的博客_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   support

           0       0.94      0.94      0.94        63
           1       0.96      0.96      0.96       108

    accuracy                           0.95       171
   macro avg       0.95      0.95      0.95       171
weighted avg       0.95      0.95      0.95       171

六、总结

        神经网络算法是一种非常强大和广泛应用的算法,其在数据分类、预测、图像处理、自然语言处理等领域都有着非常出色的表现。神经网络算法的发展历程从原始的感知机模型到多层神经网络,再到卷积神经网络,反应了机器学习的发展过程,各个模型优点互补,使神经网络在各个领域得以深入应用。

        在这里需要说明的是,神经网络算法虽然在应用中表现出非常强大的性能和普适性,但是也面临着一些问题,如训练困难、容易出现过拟合等问题。因此在实际应用过程中,需要结合具体问题和数据特点,综合评估算法优劣,在适当的情况下,结合其他机器学习算法来实现更优秀的性能。

 

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

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

相关文章

使用Postman模拟文件上传和下载

介绍 Postman是一款强大的HTTP请求模拟工具,它可以帮我们在没有前端界面的情况下模拟发送HTTP请求,非常适合API开发和测试。在本篇文章中,我将向你展示如何使用Postman进行文件的上传和下载。 文件上传 启动Postman,点击“新建请…

Linux的基础操作

0.前言 您好,这里是limou3434的一篇关于Linux基础操作的博文。感兴趣的话,可以看看我的其他博文系列。本次我给您带来的是Linux下的几个基础命令,学会这些命令您就可以开始在Linux管理和操作一些文件了。 注意:本次演示环境是在…

【HTML】常用标签

文章目录 1.标题字标签h1-h62.段落标签p3.换行标签br4.格式化标签5.图片标签6.超链接标签a7.表格标签单元格合并行合并列合并 8.无序列表9.有序列表10.自定义列表11.表单标签11.1 form标签11.2 表单控件11.2.1 input标签11.2.2 label标签11.2.3 select标签11.2.4 textarea标签 …

2023年为什么你需要学习GPU?

2023年为什么你需要学习GPU?掌握这一绝对重要的技能,开启你的未来之旅! 亲爱的朋友们,时光飞逝,2023年已经悄然而至。在这个充满机遇和挑战的数字时代,学习GPU成为了你无法忽视的重要任务。为什么呢&#x…

《大话设计模式》笔记

1. 简单工厂模式 1.1 面向对象的好处 考虑通过封装、继承、多态把程序的耦合度降低,使用设计模式使得程序更加的灵活,容易修改,并且易于复用。 1.2 复制 Vs 复用 有人说初级程序员的工作就是 CtrlC 和 CtrlV,这其实是非常不好…

通过僵尸扫描判断目标主机端口开放状态

环境准备 使用scapy工具发包 攻击主机IP: 192.168.133.66 僵尸主机IP: 192.168.133.67 ,僵尸主机不主动与任何机器通信,且满足IP数据包ID自增** 注:用nmap 判断主机是否满足僵尸主机条件,一般早期的windwos XP系统IP数据包ID…

MySQL优化--主从同步,分库分表

目录 MySQL主从同步原理 MySQL主从复制的核心就是二进制日志 面试回答 分库分表 分库分表的时机 分库分表的策略 垂直分库 垂直分表 水平分库 水平分表 分库分表的策略 分库之后的问题 面试回答 MySQL主从同步原理 如果项目上线了,通常情况下&#xf…

【Python开发】FastAPI 11:构建多文件应用

以往的文件都是将对外接口写在一个文件里边,而作为应用来说,接口是不可避免分散到多个文件中的,比如某文件负责注册登录模块,某文件负责内管模块,某文件负责业务模块等。FastAPI 也提供了APIRouter 这一工具来进行灵活…

kafka消息队列的初步探索

消息队列的作用就是提高运行速度,防止线程堵塞。 kafka的作用 异步 通过在消息队列发送消息的方式,将对应的业务作为监听者,此时我们只需要考虑发送消息的时间即可,大大提高了运行的速度。 解耦 如果使用原来的直接调用对应业务的…

【libdatachannel】pycharm运行streamer的信令服务及streamer与js客户端联调

启动py服务器 ssl必须额外指定 # Usage: ./server.py [[host:]port] [SSL certificate file]文档给出了服务的启动命令: python3 -m http.server --bind 127.0.0.1 8080 直接运行: python的信令服务 #!/usr/bin/env python # # Python signaling server…

需求分析引言:架构漫谈(二)非功能性需求

上一篇文章,简要介绍了架构的概念和架构设计流程,并简单介绍了需求分析的内容, 并在最后指出:需求分析的产出物,要包括非功能性需求,常见的非功能性需求如下: 完成任务的速度结果的精度操作的安…

MySQL实战解析底层---为什么表数据删掉一半,表文件大小不变

目录 前言 参数innodb_file_per_table 数据删除流程 重建表 Online 和 inplace 前言 数据库占用空间太大,我把一个最大的表删掉了一半的数据,怎么表文件的大小还是没变?这与数据库表的空间回收有关这里还是针对MySQL中应用最广泛的InnoD…

结构型设计模式07-享元模式

🧑‍💻作者:猫十二懿 ❤️‍🔥账号:CSDN 、掘金 、个人博客 、Github 🎉公众号:猫十二懿 享元模式 1、享元模式介绍 享元模式是一种结构型设计模式,旨在**通过共享对象来减少内存使…

CSS弹性布局常用设置

目录 一、单位元素 二、弹性容器 三、常用属性 三、项目实战效果 一、单位元素 vm 1vm 为视口的1% vh 视口高的1% vmin 参照长边 vmax 参照长边 rem 等比缩放 需要设置最外层盒子html设置vw 根字号html的--- font-- 1vm 去适配 初始化 //初始化*{padding: 0;margin: 0}//…

机器学习笔记 - 通过一个例子来快速理解自注意力机制/缩放点积注意力机制

一、一个简单的示例 请看下面的例句:A dog ate the food because it was hungry(一只狗吃了食物,因为它很饿) 例句中的代词it(它)可以指代dog(狗)或者food(食物)。当读这段文字的时候,我们自然而然地认为it指代的是dog,而不是food。但是当计算机模型在面对这两种选…

CVPR首个大模型研讨会顺利召开,吸引超1000支队伍参与文心大模型国际比赛

CVPR 作为计算机视觉和模式识别领域的世界级学术顶会,不仅是学者们展示前沿科技成果的学术会议,也是企业界探索前沿应用的一大平台。近年来,随着大模型技术的爆发式发展,基于大模型技术的创新应用正逐步在产业界释放出巨大价值空间…

网易云信陈丽:做泛娱乐出海新浪潮中的坚实助力者

6 月 16 日下午,在 PAGC 2023 泛娱乐出海论坛上,网易智企副总经理、网易云信总经理陈丽分享了对全球化出海的趋势洞察和未来展望,并介绍了网易云信在帮助泛娱乐出海业务增长方面的探索和实践。 陈丽表示,网易云信志在成为中国开发…

STM32开发——非标协议(DH11+LCD1602)

1.STM32分文件实现代码 编译的总文件夹dh11andlcd,C文件不能跨文件夹查找,新增的分文件,需要都放调用的文件夹下 C文件和H文件理解:H文件是门脸,放在前面给别人的,别人一看就知道有什么东西。C是给内部人用…

记录--新的HTML标签 :search

这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 本文介绍了一种新的HTML元素搜索方法,并提供了一个实用的工具来帮助开发者快速找到所需的元素。这对于那些需要处理大量HTML元素的开发者来说是非常有用的。文章还通过提供一些常见元素的用…

AutoSAR系列讲解(入门篇)1.1-AutoSAR的发展史

一、AutoSAR成员 大体可以分为核心成员、高级成员和发展成员,可以打开AutoSAR官网的成员的介绍界面 所以有兴趣的小伙伴可以稍微了解一下,仅作了解就行,不是什么重要的知识 还有一张大家经常能看见的成员图,如下 二、AutoSAR历史…