当前位置:首页 > 生活 > 正文

AI入门那么简单-1人工智能简介(《ai人工智能》)

入门介绍

什么是人工智能?

当我们说到人工智能时,指的是让计算机或机器具备类似于人类思维和行为的能力。简单来说,就是让机器变得更聪明,拥有像人类一样的感知、理解、推理和决策等能力。

人工智能从理论上来看,主要关注如何通过计算机程序实现自动化地学习、推理和规划。这些程序使用复杂的数学模型和算法来模拟认知过程,从而使机器可以智能地处理各种不同类型的信息,如图像、声音、文字和数据等。


人工智能历史回顾

人工智能在计算机科学领域是一个相对较新的学科。它的历史可以追溯到20世纪50年代。

首先是人工智能领域的先驱者,他们试图将人类思维过程和行为复制到计算机中。那时候还没有GPU或者现在流行的TensorFlow等深度学习框架,但已经有了一些最简单的计算机程序,如“逻辑神经元”,它使用基本的逻辑运算展示出了人工智能研究的可能性。

在20世纪60年代之后,人工智能开始越来越受到重视,并且越来越多地投入到研究中。这个时期出现了很多重要的人物(如约翰·麦卡锡、美国前总统奥巴马曾经的顾问李斯特、艾伦·图灵等),同时也涌现了很多重要的技术,包括“专家系统”、“知识表示”等。

1980年代是人工智能发展的低谷时期。许多理论和技术不再具有先进性并不再得到支持。出现了所谓的AI寒冬。21世纪以来,人工智能又重新迎来了发展的高潮。现在的人工智能技术式样繁多,涉及到许多不同的领域,如自然语言处理、计算机视觉、深度学习等。

当代人工智能应用场景

人工智能常被应用于语音识别、图像识别、自然语言处理以及决策和控制等领域,其中最为典型的包括手机的语音助手、自动驾驶、智能家居设备等。即使在医疗保健领域,也可以利用人工智能技术帮助检测疾病、预测症状和制定治疗方案。

当然还有我们最近大火的chatgpt等,可以和用户对话的聊天AI.


人工智能的核心技术

机器学习

监督学习

监督学习是机器学习中一种常用的方式,也是最为基本和广泛应用的方法之一。在监督学习中,算法需要从现有的标记数据中以统计学习的方法,进行学习,并以此预测新的未来数据的标签。

监督学习通常包含两个主要部分:输入数据和相应的输出标签。这些数据被称为训练数据集,用于构建模型。监督学习的目标是,通过已知的数据集,找到一个函数将其映射到合适的输出值上。

监督学习通常分为两类:回归和分类。当输出变量是连续的数量时,我们通常使用回归模型,例如使用线性回归等模型预测房价。而分类模型则是当输出变量是离散的集合时,比如图片识别就是一个分类问题。


非监督学习

非监督学习是机器学习领域的一种常见方法,与监督学习相比,它不需要输入-输出数据对来进行模型训练。非监督学习主要从数据本身中发掘关系和特征。

非监督学习的目标是在没有标签或类别信息的情况下对数据进行分组,并且尽可能找到隐藏在数据背后的结构。大多数情况下,这种形式的学习用于聚类问题,即将相似的数据点群集在一起。

常见的非监督学习算法包括K-means聚类、PCA主成分分析以及随机模型生成等。在非监督学习中,我们通常希望获得一组学习到的特征,表示数据之间的共性和变化。

虽然相对于监督学习,非监督学习更加无监督,但也可以在某些应用领域下取得更好的结果。例如,在推荐系统中,根据用户的行为数据使用聚类算法帮助事先未知的新客户建立基础模型,有助于将他们归类到不同的兴趣组,提高商品推荐的个性化程度。


强化学习

非监督学习是机器学习领域的一种常见方法,与监督学习相比,它不需要输入-输出数据对来进行模型训练。非监督学习主要从数据本身中发掘关系和特征。

非监督学习的目标是在没有标签或类别信息的情况下对数据进行分组,并且尽可能找到隐藏在数据背后的结构。大多数情况下,这种形式的学习用于聚类问题,即将相似的数据点群集在一起。

常见的非监督学习算法包括K-means聚类、PCA主成分分析以及随机模型生成等。在非监督学习中,我们通常希望获得一组学习到的特征,表示数据之间的共性和变化。

虽然相对于监督学习,非监督学习更加无监督,但也可以在某些应用领域下取得更好的结果。例如,在推荐系统中,根据用户的行为数据使用聚类算法帮助事先未知的新客户建立基础模型,有助于将他们归类到不同的兴趣组,提高商品推荐的个性化程度。


评估模型性能

评估机器学习模型的性能是判定模型效果好坏的一个重要指标。常见的评估模型性能的方法有以下几种:

  1. 精度(Accuracy):精度是最基本和最直接的衡量标准。它用于比较分类模型的预测结果与实际数据之间的差距。
  2. 混淆矩阵(Confusion Matrix):混淆矩阵是一种非常有用的工具,可以可视化不同类别的样本在分类中的表现情况。将真阳性、假阳性、真阴性和假阴性等统计信息呈现出来,以便进行误差分析和调整。
  3. ROC曲线(Receiver Operating Characteristic Curve):ROC曲线绘制了真阳率和假阳率之间的关系,一种很好的评价分类问题的方法。随着真阳率增加,假阳率也会上升,因此在折线图上看到的是一条自右下角向左上方弯曲的曲线。


深度学习

深度学习是一种基于人工神经网络的机器学习方法,通过多层次的计算模型来学习数据的高级抽象特征和表示。它利用多层神经网络推断出输入数据与输出类别之间关系的同时,克服了传统机器学习中的许多限制。

基于TensorFlow搭建深度学习网络

使用TensorFlow搭建深度学习网络主要包括以下几个步骤:

  1. 安装和导入TensorFlow:首先需要安装并导入TensorFlow库,这可以通过pip install tensorflow命令来实现。
  2. 准备数据集和预处理数据:在进行模型训练之前,需要准备数据集并进行数据预处理。通常,数据集是以numpy数组的形式存储的,因此需要对其进行处理来满足特定神经网络的需求。
  3. 构建深度学习模型:使用Tensorflow API构建所需几何结构。TensorFlow 提供了丰富多样的神经网络层次化结构(layers API),比如卷积层、池化层等等,使得构建模型更加简洁方便。
  4. 编译模型:使用model.compile()函数,根据您要解决的任务类型,选择合适的损失函数、评估函数和优化器等进行设置。
  5. 模型训练:使用model.fit()函数将数据集输入到模型中进行训练。在此过程中,在每个训练迭代周期(epoch)结束时计算并输出一些指标,如训练集准确度等。
  6. 模型评估:用测试集对模型进行评估,以了解其泛化能力。使用model.evaluate函数评估模型性能。
  7. 模型预测:使用model.predict函数进行验证并发现我们想要推断(predict)用例的输出。


以下是基于TensorFlow搭建简单的全连接神经网络的示例代码:

import tensorflow as tffrom tensorflow.keras.layers import Dense, Flattenfrom tensorflow.keras.models import Sequential# 准备数据集和预处理数据,这里使用MNIST手写数字数据集(x_train, y_train), (x_test, y_test) = tf.keras.datasets.mnist.load_data()x_train, x_test = x_train / 255.0, x_test / 255.0# 构建深度学习模型model = Sequential([Flatten(input_shape=(28, 28)),Dense(128, activation='relu'),Dense(10)])# 编译模型,设置损失函数、优化器和评估指标model.compile(optimizer='adam',loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),metrics=['accuracy'])# 模型训练model.fit(x_train, y_train, epochs=5, validation_data=(x_test, y_test))# 模型评估model.evaluate(x_test,  y_test, verbose=2)# 模型预测probability_model = tf.keras.Sequential([model,tf.keras.layers.Softmax()])predictions = probability_model.predict(x_test)

通过以上代码,我们可以构建包含两个全连接层的神经网络,输入为28x28像素的图像。在编译模型时,我们为该模型选择了Adam优化器,并指定SparseCategoricalCrossentropy作为损失函数和accuracy作为评估指标。在进行5个epoch的训练后,我们对模型进行了评估和预测。


整个网络如何进行前向传递和反向传递

神经网络中的前向传递和反向传递是两个重要的过程。前向传递指的是从输入层开始,沿着神经网络的层进行计算并最终预测输出;而反向传递则是根据预测结果和真实数据之间的差异,通过计算梯度来更新神经网络参数,以便更好地拟合训练数据。

下面是前向传递和反向传递的详细步骤:

  1. 前向传递 第一步,将图像或数据输入到输入层中,然后通过各级神经元逐层处理。在每层处理过后,都会输出一个激活值。这些值继续流动到下一层,直到达到输出层。当输入数据通过整个神经网络后,则得到该网络的输出预测值。
  2. 反向传递 在反向传递时,我们需要比较输出值与目标值之间的差异,并计算每个权重对误差的贡献程度。接着,我们通过损失函数、优化器和学习率等参数来控制权重的更新。深度神经网络是非常大的模型,削减易感于消失(vanishing),或者梯度爆炸(exploding),因此梯度截断(gradient clipping)的方法也常用于防止梯度过大而不能更新。

整个反向传递的具体步骤如下:

(1)首先,使用目标值和模型输出值之间的差异来计算损失函数。

(2)计算此时参数矩阵的偏导数。可以通过分析网络结构并采用链式规则获得每个神经元执行这个权重变化的误差贡献。

(3)通过计算出每个神经元的误差,我们就可以相对地调整每个参数值,以使整个神经网络产生更精确的结果。

因此,前向传递和反向传递都是构建深度学习模型时非常关键的一部分,可以帮助提高神经网络的准确性和泛化能力。



总结

本章介绍了人工智能的基本概念,历史。介绍了机器学习和强化学习这两个核心技术,便于大家全面简单的理解人工智能。


各位还想看人工智能的那些内容,可以关注作者并留言!