神经网络(NPL)-简介

简介: 本分记录了自己学习参考多篇博客后总结的关于神经网络的理解,以供参考学习

1、NPL概念理解

神经网络作为一种机器学习模型,本质是一种 通用函数近似器(Universal Function Approximators),或者说超级复杂函数的拟合器。这意味着他们可以通过有监督学习 无限逼近任意连续函数。而我们可以想到的任何过程几乎都是可以表示为神经网络中的函数计算。神经网络的传播都是形如 $Wx+b$ 的 线性变换运算
每个 NPL的node节点 所作的事情就是 变换[Wx | sgn(x)] :

激活函数

如果整个神经网络都是线性变换的运算,即使叠加很多层,最后产出的不过是复杂的线性组合,只能应对做线性分类任务,就像是用无限条直线去逼近一条曲线。为了给线性变换加入非线性变换,引入了系列激活函数(Sigmoid、tanh、Relu、Leaky Relu、Maxout、ELU),激活函数改变了每个神经元节点的线性输出特点, 最终才使得神经网络可以逼近任何非线性函数。

关于 激活函数的选择:
1、sigmoid 激活函数:除了输出层是一个二分类问题基本不会用它。
2、tanh 激活函数: tanh 是非常优秀的, 几乎适合所有场合。
3、ReLu 激活函数:最常用的默认函数,如果不确定用哪个激活函数,就使用 ReLu 或者 Leaky ReLu。ReLU处理了sigmoid、tanh中常见的梯度消失问题,同时也是计算梯度最快的激励函数。并且它只输出 $Wx + b$ 运算后大于零的值,其到类似神经元激活与否的作用,很好地模拟生物学中神经元激活的原理。
4、对于 回归问题应使用线性激活函数 $f(x) = x$。

损失函数

  • 对于分类模型,常用 交叉熵损失(Cross Entropy Error), 交叉熵损失本质计算的是对数的负数 $-log(p)$,当预测分数接近$1$ 的时候 $ - log(p) = 0$,相比 $1- p$ 的方式,使用交叉熵当损失函数拥有较快的收敛速度。
  • 对于回归模型,常用的还是 $MSE$。

神经网络的神奇之处就在于它可以自动根据损失函数做W和b的优化,在深度学习中,参数的数量有时会上亿,不过其优化的原理和简单神经网络是一样的。

2、NPL.VS.ML Algorithm

对于机器学习算法来说,并不存在一种“完美的”机器学习算法,能够出色地解决任何问题。对于某个问题,有的方法是适合的,有的则反之。神经网络的主要优势在于,它的性能优于几乎其他的机器学习算法。但是就是说的,搭建多层的权重变换网络产生的 多重输出 往往不具有可解释性,也就是神经网络的 "黑箱" 性质。想比起来就不如机器学习算法中的许多算法,比如决策树能更容易知道产生输出的原因。

神经网络对比决策树:
决策树可以理解为神经网络的简化版,基于树的方法沿着不同的特征逐步分割特征空间,以优化信息增益,它对于具有明显特征关联的分类任务表现优秀,而且这类任务并不依赖于概率,是确定性建模。对于复杂特征关联性的任务,考虑到概率计算的细微差别就会影响分类结果的情况,概率建模就比起确定性建模要更准确,像文本处理,文本有太多的信息和太多的异常,是不无法用确定性的特征组合来表示的,这时应用神经网络才能识别出这种复杂关联性。

神经网络的缺点:
与传统的机器学习算法相比,神经网络通常需要更多的数据,至少需要数千甚至数百万个标记样本才能训练出一个完美网络结构(调整出合适的神经元)。通常在计算方面,神经网络比传统算法更昂贵。先进的深度学习算法,若想成功完成训练,可能需要几周的时间。而大多数传统的机器学习只需花费少于几分钟,几个小时或者几天。

对于一般的线性和非线性问题,ML领域的经典算法往往是第一选择,更少的参数,更直观的理解,更高效的求解;只有对于特定领域内一些复杂特征问题的求解上,基于大量训练样本和算力资源的情况下使用神经网络才是个不错的求解方案。


Reference

神经网络的优点和缺点 - 知乎 (zhihu.com)
神经网络15分钟入门
激活函数以及作用
如何用神经网络实现连续型变量的回归预测
机器学习算法终极对比:树模型VS神经网络

目录
相关文章
|
16天前
|
监控 安全 网络安全
|
2月前
|
SQL 机器学习/深度学习 分布式计算
Spark【基础知识 01】【简介】(部分图片来源于网络)
【2月更文挑战第12天】Spark【基础知识 01】【简介】(部分图片来源于网络)
28 2
|
3月前
|
消息中间件 Kubernetes 网络协议
Cilium 系列 -15-7 层网络 CiliumNetworkPolicy 简介
Cilium 系列 -15-7 层网络 CiliumNetworkPolicy 简介
|
4月前
|
消息中间件 NoSQL Linux
workFlow c++异步网络库编译教程与简介
搜狗公司C++服务器引擎,编程范式。支撑搜狗几乎所有后端C++在线服务,包括所有搜索服务,云输入法,在线广告等,每日处理数百亿请求。这是一个设计轻盈优雅的企业级程序引擎,可以满足大多数后端与嵌入式开发需求。 编程范式 结构化并发与任务隐藏回调与内存回收机制
58 0
|
17天前
|
数据可视化 数据挖掘
【视频】复杂网络分析CNA简介与R语言对婚礼数据聚类社区检测和可视化|数据分享
【视频】复杂网络分析CNA简介与R语言对婚礼数据聚类社区检测和可视化|数据分享
|
1月前
|
网络协议 Java API
Python网络编程基础(Socket编程)Twisted框架简介
【4月更文挑战第12天】在网络编程的实践中,除了使用基本的Socket API之外,还有许多高级的网络编程库可以帮助我们更高效地构建复杂和健壮的网络应用。这些库通常提供了异步IO、事件驱动、协议实现等高级功能,使得开发者能够专注于业务逻辑的实现,而不用过多关注底层的网络细节。
|
1月前
|
数据采集 网络协议 API
python中其他网络相关的模块和库简介
【4月更文挑战第4天】Python网络编程有多个流行模块和库,如requests提供简洁的HTTP客户端API,支持多种HTTP方法和自动处理复杂功能;Scrapy是高效的网络爬虫框架,适用于数据挖掘和自动化测试;aiohttp基于asyncio的异步HTTP库,用于构建高性能Web应用;Twisted是事件驱动的网络引擎,支持多种协议和异步编程;Flask和Django分别是轻量级和全栈Web框架,方便构建不同规模的Web应用。这些工具使网络编程更简单和高效。
|
2月前
|
缓存 网络协议 网络虚拟化
网络技术基础(15)——DHCP简介与配置
【3月更文挑战第3天】刚加完班又去南京出差了,实在是太忙了。。。。网络基础笔记(加班了几天,中途耽搁了,预计推迟6天),这篇借鉴了之前师兄的笔记。
|
7月前
|
网络协议 程序员 API
[笔记] Microsoft Windows网络编程《一》WinSock简介(四)
[笔记] Microsoft Windows网络编程《一》WinSock简介(四)
|
3月前
|
网络协议 物联网 Linux
WireGuard 系列文章(五):Netmaker 简介 - 创建和管理 WireGuard 网络的平台
WireGuard 系列文章(五):Netmaker 简介 - 创建和管理 WireGuard 网络的平台