学习人工神经网络(算法)

人工神经网络(英语:artificial neural network,ANNs)简称神经网络(neural network,NNs)或类神经网络,在机器学习认知科学领域,是一种模仿生物神经网络(动物的中枢神经系统,特别是大脑)的结构和功能的数学模型计算模型,用于对函数进行估计或近似。神经网络由大量的人工神经元联结进行计算。大多数情况下人工神经网络能在外界信息的基础上改变内部结构,是一种自适应系统,通俗地讲就是具备学习功能。现代神经网络是一种非线性统计性数据建模工具,神经网络通常是通过一个基于数学统计学类型的学习方法(learning method)得以优化,所以也是数学统计学方法的一种实际应用,通过统计学的标准数学方法我们能够得到大量的可以用函数来表达的局部结构空间,另一方面在人工智能学的人工感知领域,我们通过数学统计学的应用可以来做人工感知方面的决定问题(也就是说通过统计学的方法,人工神经网络能够类似人一样具有简单的决定能力和简单的判断能力),这种方法比起正式的逻辑学推理演算更具有优势。

和其他机器学习方法一样,神经网络已经被用于解决各种各样的问题,例如机器视觉语音识别。这些问题都是很难被传统基于规则的编程所解决的。

历史:

沃伦·麦卡洛克沃尔特·皮茨(1943)[2]基于数学和一种称为阈值逻辑算法创造了一种神经网络的计算模型。这种模型使得神经网络的研究分裂为两种不同研究思路。一种主要关注大脑中的生物学过程,另一种主要关注神经网络在人工智能里的应用。

神经元示意图:

基本神经网络架构

一种常见的多层结构的前馈网络(Multilayer Feedforward Network)由三部分组成,

  • 输入层(Input layer),众多神经元(Neuron)接受大量非线形输入消息。输入的消息称为输入向量。
  • 输出层(Output layer),消息在神经元链接中传输、分析、权衡,形成输出结果。输出的消息称为输出向量。
  • 隐藏层(Hidden layer),简称“隐层”,是输入层和输出层之间众多神经元和链接组成的各个层面。隐层可以有一层或多层。隐层的节点(神经元)数目不定,但数目越多神经网络的非线性越显著,从而神经网络的强健性(控制系统在一定结构、大小等的参数摄动下,维持某些性能的特性)更显著。习惯上会选输入节点1.2至1.5倍的节点。

这种网络一般称为感知器(对单隐藏层)或多层感知器(对多隐藏层),神经网络的类型已经演变出很多种,这种分层的结构也并不是对所有的神经网络都适用。

深度神经网络架构

深度神经网络又名深度学习网络,拥有多个隐藏层,包含数百万个链接在一起的人工神经元。名为权重的数字代表节点之间的连接。如果节点之间相互激励,则该权重为正值,如果节点之间相互压制,则该权重为负值。节点的权重值越高,对其他节点的影响力就越大。
从理论上讲,深度神经网络可将任何输入类型映射到任何输出类型。但与其他机器学习方法相比,它们也需要更多大量的训练。它们需要数百万个训练数据示例,而不像较简单的网络那样,可能只需数百或数千个训练数据示例。

一、机器学习算法的本质

机器学习算法的定义:用于使计算机系统通过数据学习并提高性能的数学模型和统计算法。

机器学习算法的定义机器学习算法Top10定义如下:

  1. 朴素贝叶斯 (Naive Bayes):一种基于贝叶斯定理的监督学习算法,适用于分类问题,它假设特征之间相互独立。
  2. K-means:一种无监督学习算法,用于数据聚类,通过迭代过程将数据点分配到K个簇中,每个簇由其质心代表。
  3. 支持向量机 (SVM):一种强大的监督学习算法,用于分类和回归问题,通过找到最优的决策边界(超平面)来最大化样本间的间隔。
  4. Apriori:一种无监督学习算法,用于关联规则学习,特别是在市场篮子分析中,找出频繁出现在一起的物品集合。
  5. 线性回归 (Linear Regression):一种监督学习算法,用于预测连续数值,如房价或销售额。它尝试找到一条直线(在二维空间中)或一个平面(在三维空间中),最好地拟合数据点。
  6. 逻辑回归 (Logistic Regression):一种用于二分类问题的监督学习算法,它预测一个事件发生的概率,通常用于确定输入属于特定类别的可能性。
  7. 决策树 (Decision Tree):一种直观的监督学习算法,通过树状结构来表示决策过程,用于分类和预测建模。
  8. 随机森林 (Random Forest):一种集成学习算法,由多个决策树组成,通过组合多个决策树的预测结果来提高模型的性能。
  9. K最近邻 (K-Nearest Neighbors, KNN):一种监督学习算法,根据一个数据点的K个最近邻居的类别,通过投票的方式来预测该数据点的类别。
  10. 人工神经网络 (Artificial Neural Networks, ANN):一种受人脑结构和功能启发的算法,由相互连接的节点(神经元)组成,用于各种任务,包括图像和语音识别、自然语言处理等。

机器学习算法Top10

机器学习算法的本质:让计算机从数据中自动地学习和获取经验,以改进其性能。

具体来说,机器学习算法通过分析输入的数据集(可能包含标签或无标签),寻找其中的规律和模式,并利用这些规律和模式来对新数据进行预测、分类、聚类等操作。

机器学习算法的本质

从数学角度来看,机器学习算法的本质可以看作是一个求解优化问题的过程。它假设存在一个函数f(x),使得输入数据x通过f这个函数的映射处理,能够得到想要的结果y。机器学习算法的目标就是找到这个函数f,使得对于给定的输入数据x,能够尽可能准确地预测出对应的输出y。

训练过程:已知若干x和y求f,推理过程:已知f和新的x求y。

机器学习算法的本质

二、机器学习算法的原理

机器学习算法的分类:分为四大类,监督学习预测带标签数据,无监督学习发现数据模式,半监督学习结合两者,强化学习通过交互学习行为。

机器学习算法的分类

  1. 监督学习 (Supervised Learning):监督学习算法通过分析带有标签的数据集来学习,即每个训练样本都有一个与之相关的输出标签。算法的目标是学习出一个模型,能够对新的、未见过的数据做出准确的预测或分类。监督学习通常用于回归和分类任务。

例子: 线性回归、逻辑回归、决策树、随机森林、支持向量机 (SVM)。

  1. 无监督学习 (Unsupervised Learning):无监督学习算法处理没有标签的数据,目的是在数据中发现模式、结构或分布。这类算法常用于聚类和关联规则学习。

例子: K-means 聚类、层次聚类、主成分分析 (PCA)、t-分布随机邻域嵌入 (t-SNE)。

  1. 半监督学习 (Semi-supervised Learning):半监督学习是监督学习和无监督学习之间的一种混合方法。它使用少量标记数据和大量未标记数据进行训练,利用未标记数据提供额外的上下文信息,以提高学习模型的性能。

应用场景: 当标记数据难以获得或成本高昂时,半监督学习特别有用。

  1. 强化学习 (Reinforcement Learning):强化学习算法通过与环境的交互来学习,目标是最大化累积奖励。算法中的代理(Agent)通过试错来学习最佳策略,以在给定环境中实现特定的目标。

例子: Q学习、SARSA、深度Q网络 (DQN)、策略梯度方法。

机器学习算法的四大分类

回归算法 (Regression Algorithms):

  • 线性回归 (Linear Regression): 用于预测连续数值,如房价或销售额。
  • 支持向量机 (SVM): 虽然主要用于分类,但SVM也可以用于回归问题,称为支持向量回归 (SVR)。

SVM用于分类和回归问题

分类算法 (Classification Algorithms):

KNN的原理

K最近邻

  • 朴素贝叶斯 (Naive Bayes): 适用于分类问题,基于贝叶斯定理。
  • 逻辑回归 (Logistic Regression): 主要用于二分类问题,但可以扩展到多分类。
  • 决策树 (Decision Tree): 用于分类和预测建模。
  • 支持向量机 (SVM): 主要用于分类问题。
  • 随机森林 (Random Forest): 用于分类和预测建模。
  • K最近邻 (K-Nearest Neighbors, KNN): 用于分类问题。

朴素贝叶斯

详细了解朴素贝叶斯:人工智能数学基础 - 贝叶斯统计(Bayesian Statistics)

决策树和随机深林

聚类算法 (Clustering Algorithms):

  • K-means: 一种无监督学习算法,用于数据聚类。

K-means

K-means

关联规则学习算法 (Association Rule Learning Algorithms):

  • Apriori: 一种无监督学习算法,特别适用于市场篮子分析,用于发现不同商品之间的购买关系。

Apriori

Apriori

用于构建智能体算法 (Agent Algorithms):

  • 人工神经网络 (Artificial Neural Networks, ANN): 可以用于构建能够执行复杂任务的智能代理,如图像和语音识别、自然语言处理等。

神经网络算法 - ANN(人工神经网络)

  • 10
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
以下是一个简单的神经网络算法的 Python 代码示例: ``` import numpy as np # 定义激活函数 def sigmoid(x): return 1/(1+np.exp(-x)) # 定义神经网络类 class NeuralNetwork: def __init__(self, input_dim, hidden_dim, output_dim): # 初始化权重矩阵 self.weights1 = np.random.randn(input_dim, hidden_dim) self.weights2 = np.random.randn(hidden_dim, output_dim) def forward(self, X): # 前向传播 self.z2 = np.dot(X, self.weights1) self.a2 = sigmoid(self.z2) self.z3 = np.dot(self.a2, self.weights2) y_hat = sigmoid(self.z3) return y_hat def backward(self, X, y, y_hat, learning_rate): # 反向传播 delta3 = (y_hat - y) * sigmoid(self.z3) * (1 - sigmoid(self.z3)) d_weights2 = np.dot(self.a2.T, delta3) delta2 = np.dot(delta3, self.weights2.T) * sigmoid(self.z2) * (1 - sigmoid(self.z2)) d_weights1 = np.dot(X.T, delta2) # 更新权重矩阵 self.weights2 -= learning_rate * d_weights2 self.weights1 -= learning_rate * d_weights1 def train(self, X, y, learning_rate, epochs): for i in range(epochs): y_hat = self.forward(X) self.backward(X, y, y_hat, learning_rate) # 测试 X = np.array([[0,0],[0,1],[1,0],[1,1]]) y = np.array([[0],[1],[1],[0]]) nn = NeuralNetwork(input_dim=2, hidden_dim=4, output_dim=1) nn.train(X, y, learning_rate=0.1, epochs=10000) # 预测 y_pred = nn.forward(X) print(y_pred) ``` 这是一个简单的三层神经网络,使用 sigmoid 作为激活函数,采用随机梯度下降法更新权重矩阵。你可以根据具体需求修改代码,例如更改激活函数、优化算法等等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值