由浅入深了解机器学习和GPT原理

这篇具有很好参考价值的文章主要介绍了由浅入深了解机器学习和GPT原理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

由浅入深了解机器学习和GPT原理

目前看到的最通俗易懂、由浅入深的图解机器学习和GPT原理的系列文章,这是第一篇,由我和 GPT-4共同翻译完成,分享给大家。

我不是一个机器学习专家,本来是一名软件工程师,与人工智能的互动很少。我一直渴望深入了解机器学习,但一直没有找到适合自己的入门方式。这就是为什么,当谷歌在2015年11月开源TensorFlow时,我非常兴奋,知道是时候开始学习之旅了。不想过于夸张,但对我来说,这就像是普罗米修斯从机器学习的奥林匹斯山上将火种赠予人类。在我脑海中,整个大数据领域,以及像Hadoop这样的技术,都得到了极大的加速,当谷歌研究人员发布他们的Map Reduce论文时。这一次不仅是论文,而是实际的软件,是他们在多年的发展之后所使用的内部工具。

因此,我开始学习机器学习基础知识,发现初学者需要更通俗易懂的资源。这是我尝试提供的。

从这里开始

让我们从一个简单的例子开始。假设你正在帮助一个想买房子的朋友。她被报价40万美元购买一个2000平方英尺(185平方米)的房子。这个价格合适吗?在没有参照物的情况下,这很难判断。所以你询问了在同一个社区购买过房子的朋友们,最后得到了三个数据点:

面积(平方英尺)(x) 价格(y)

2,104                            399,900

1,600                            329,900

2,400                            369,000

就我个人而言,我的第一反应是计算每平方英尺的平均价格。这个价格是每平方英尺180美元。

欢迎来到你的第一个神经网络!虽然它还没有达到Siri的水平,但现在你已经了解了基本的构建模块。它看起来是这样的:

由浅入深了解机器学习和GPT原理

这样的图表展示了网络的结构以及如何计算预测。计算从左侧的输入节点开始。输入值向右流动。它乘以权重,结果就成为我们的输出。将2,000平方英尺乘以180,我们得到360,000美元。在这个层面上,计算预测就是简单的乘法。但在此之前,我们需要考虑我们将要乘以的权重。这里我们从平均值开始,稍后我们将研究更好的算法,以便在获得更多输入和更复杂模型时进行扩展。找到权重就是我们的“训练”阶段。所以,每当你听到有人在“训练”神经网络时,它只是指找到我们用来计算预测的权重。

由浅入深了解机器学习和GPT原理

这是一个简单的预测模型,它接受输入,进行计算,并给出输出(由于输出可以是连续值,我们所拥有的技术名称是“回归模型”)

注:回归模型是一种用于预测因果关系的统计模型,它通常用于研究与某些因素有关的连续变量。它基于已知数据的线性或非线性方程,通过最小化误差或损失函数来拟合数据,并通过该方程对未知数据进行预测。回归模型可以用于分析多种因素对某一变量的影响,例如在经济学、社会学、医学、工程学等领域中,它经常被用于探索因果关系和预测未来趋势。常见的回归模型包括线性回归、多项式回归、逻辑回归等。

让我们将这个过程可视化(为了简化,让我们将价格单位从1美元换成1000美元。现在我们的权重是0.180而不是180):

由浅入深了解机器学习和GPT原理

更难、更好、更快、更强

我们能否在估计价格方面做得比基于数据点平均值更好呢?让我们试试。首先,让我们定义在这种情况下更好的意义。如果我们将模型应用于我们拥有的三个数据点,它会做得多好?

由浅入深了解机器学习和GPT原理

如图所示,黄线是误差值,黄线长是不好的,我们希望尽可能减小黄线的长度。

面积 (x) 价格 ($1000) (y_) 预测值 (y) y_-y (y_-y)²

2,104     399.9             379                 21      449

1,600     329.9             288                 42     1756

2,400     369                432                 -63    3969

平均值:2,058

在这里,我们可以看到实际价格值、预测价格值以及它们之间的差异。然后我们需要对这些差异求平均,以便得到一个表示预测模型中有多少错误的数字。问题是,第3行的值为-63。如果我们想用预测值和价格之间的差异作为衡量误差的标准,我们必须处理这个负值。这就是为什么我们引入了一个额外的列,显示误差的平方,从而消除了负值。这就是我们定义更好模型的标准 - 更好的模型是误差较小的模型。误差是数据集中每个点误差的平均值。对于每个点,误差是实际值和预测值之间的差异的平方。这称为均方误差。将其作为指导来训练我们的模型使其成为我们的损失函数(也称为成本函数)。

由浅入深了解机器学习和GPT原理

现在我们已经定义了衡量更好模型的标准,让我们尝试一些其它权重值,并将它们与我们的平均值进行比较:

通过改变权重,我们无法在模型上做出太多改进。但是,如果我们添加一个偏置值,我们可以找到改进模型的值。现在我们添加了这个b值到线性公式中,我们的预测值可以更好地逼近我们的实际值。在这种情境下,我们称之为“偏置”。这使得我们的神经网络看起来像这样:

由浅入深了解机器学习和GPT原理

我们可以概括地说,一个具有一个输入和一个输出的神经网络(剧透警告:没有隐藏层)看起来像这样:

由浅入深了解机器学习和GPT原理

在这个图中,W 和 b 是我们在训练过程中找到的值,X 是我们输入到公式中的值(例如,我们的示例中的房屋面积(平方英尺))。Y 是预测的价格。现在,计算预测使用这个公式:

由浅入深了解机器学习和GPT原理

因此,我们当前的模型通过将房屋面积作为 x 插入,使用这个公式来计算预测:

由浅入深了解机器学习和GPT原理

训练你的龙  你想尝试训练我们的玩具神经网络吗?通过调整权重和偏置来最小化损失函数。你能让误差值低于799吗?

由浅入深了解机器学习和GPT原理

自动化 恭喜你手动训练了你的第一个神经网络!让我们看看如何自动化这个训练过程。下面是另一个带有自动驾驶功能的示例。这些是 GD Step 按钮。它们使用一种称为“梯度下降”的算法,尝试向正确的权重和偏置值迈进,以最小化损失函数。

由浅入深了解机器学习和GPT原理
由浅入深了解机器学习和GPT原理

这两个新图表可以帮助你在调整模型参数(权重和偏置)时跟踪误差值。跟踪误差非常重要,因为训练过程就是尽可能减少这个误差。梯度下降如何知道它的下一步应该在哪里?可以利用微积分。你看,我们知道我们要最小化的函数(损失函数,所有数据点的(y_ - y)²的平均值),也知道当前输入的值(当前的权重和偏置),损失函数的导数告诉我们应该如何调整 W 和 b 以最小化误差。想了解更多关于梯度下降以及如何使用它来计算新的权重和偏置的信息,请观看 Coursera 机器学习课程的第一讲。

引入第二变量

房子的大小是决定房价的唯一变量吗?显然还有很多其他因素。让我们添加另一个变量,看看我们如何调整神经网络来适应它。假设你的朋友做了更多的研究,找到了更多的数据点。她还发现了每个房子有多少个浴室:

面积(平方英尺)浴室数量 价格

2,104                   3            399,900

1,600                   3            329,900

2,400                   3            369,000

1,416                   2            232,000

3,000                   4            539,900

1,985                   4            299,900

1,534                   3            314,900

1,427                   3            198,999

1,380                   3            212,000

1,494                   3            242,500

我们的两变量神经网络如下所示:

由浅入深了解机器学习和GPT原理

现在我们需要找到两个权重(每个输入一个)和一个偏置来创建我们的新模型。计算Y的公式如下:

由浅入深了解机器学习和GPT原理

但是我们如何找到w1和w2呢?这比我们只需要考虑一个权重值时要复杂一些。多一个浴室对我们预测房价的影响有多大呢?尝试找到合适的权重和偏置。从这里开始,你会看到随着输入数量的增加,我们面临的复杂性也在增加。我们开始失去创建简单二维形状的能力,这使得我们不能一眼就能看出模型的特点。相反,我们主要依赖于在调整模型参数时,误差值是如何变化的。

由浅入深了解机器学习和GPT原理

我们再次依靠可靠的梯度下降法来帮助我们找到合适的权重和偏置。

特征

现在你已经了解了具有一个和两个特征的神经网络,你可以尝试添加更多特征并使用它们来计算预测值。权重的数量将继续增长,当我们添加每个新特征时,我们需要调整梯度下降的实现,以便它能够更新与新特征相关的新权重。这里需要注意的是,我们不能盲目地将我们所知道的所有信息都输入到网络中。我们必须在输入模型的特征上有所选择。特征选择/处理是一个拥有自己一套最佳实践和注意事项的独立学科。如果你想看一个关于检查数据集以选择输入预测模型的特征的过程的例子,请查看《泰坦尼克号之旅》。这是一个笔记本,Omar EL Gabry在其中讲述了他解决Kaggle泰坦尼克挑战的过程。Kaggle提供了泰坦尼克号上乘客的名单,包括姓名、性别、年龄、船舱以及该人是否幸存等数据。挑战的目标是建立一个模型,根据其他信息预测一个人是否幸存。

分类

让我们继续调整我们的例子。假设你的朋友给你一份房子清单。这次,她标注了哪些房子在她看来具有合适的大小和浴室数量:

面积(平方英尺)浴室数量 标签

2,104                   3            Good

1,600                   3            Good

2,400                   3            Good

1,416                   2            Bad

3,000                   4            Bad

1,985                   4            Good

1,534                   3            Bad

1,427                   3            Good

1,380                   3            Good

1,494                   3            Good

她需要你使用这个方法来创建一个模型,根据房子的大小和浴室数量来预测她是否会喜欢这个房子。你将使用上面的列表来构建模型,然后她将使用这个模型来对许多其他房子进行分类。在这个过程中还有一个额外的改变,那就是她还有另一个包含10个房子的列表,她已经对这些房子进行了标记,但她没有告诉你。这个另外的列表将在你训练模型后用来评估你的模型,从而确保你的模型能够把握她实际喜欢的房子特征。我们迄今为止所尝试的神经网络都是进行“回归”操作的,它们计算并输出一个“连续”的值(输出可以是4,或100.6,或2143.342343)。然而,在实践中,神经网络更常用于“分类”类型的问题。在这些问题中,神经网络的输出必须是一组离散值(或“类别”),如“好”或“坏”。实践中的工作原理是,我们将会得到一个模型,该模型会表明某个房屋是“好”的可能性为75%,而不仅是简单地输出“好”或“坏”。

由浅入深了解机器学习和GPT原理

在实践中,我们可以将我们已经看到的网络转换成一个分类网络,让它输出两个值——一个值代表某个个类别(我们现在的类别是“好”和“坏”)。然后我们将这些值通过一个叫做“softmax”的操作。softmax的输出是每个类别的概率。例如,假设网络的这一层输出“好”为2,“坏”为4,如果我们将[2, 4]输入到softmax中,它将返回[0.11, 0.88]作为输出。这意味着网络有88%的把握认为输入的值是“坏”的,我们的朋友可能不喜欢那个房子。

Softmax函数接受一个数组作为输入,并输出一个相同长度的数组。注意到它的输出都是正数,并且总和为1,这在输出概率值时非常有用。另外,尽管4是2的两倍,但它的概率不仅是2的两倍,而且是2的八倍。这是一个有用的特性,它可以夸大输出之间的差异,从而改善我们的训练过程。

由浅入深了解机器学习和GPT原理

如您在最后两行中所看到的,softmax可以扩展到任意数量的输入。所以现在如果我们的朋友添加了第三个标签(比如说“不错,但我得把一间房子租给airbnb”),softmax可以扩展以适应这种变化。花点时间探索一下网络的形状,看看当您改变特征数量(x1、x2、x3等)(可以是面积、浴室数量、价格、靠近学校/工作的距离等)和类别数量(y1、y2、y3等)(可以是“太贵了”、“性价比高”、“如果我把一间房子租给airbnb就好了”、“太小了”)时,网络是如何变化的。

由浅入深了解机器学习和GPT原理

您可以在我为本文创建的这个笔记本中看到如何使用 TensorFlow 创建和训练这个网络的示例。真正的动力 如果您已经读到这里了,我必须向您揭示我写这篇文章的另一个动力。这篇文章旨在作为一个更加温和的 TensorFlow 教程入门。如果您现在开始学习《MNIST 机器学习初学者》,并遇到了这张图:

由浅入深了解机器学习和GPT原理

我写这篇文章是为了让没有机器学习经验的人们为 TensorFlow 入门教程中的这张图做好准备。这就是为什么我模拟了它的视觉风格。我希望您会觉得准备充分,并且了解这个系统以及它的工作原理。如果您想开始尝试编写代码,请随时从入门教程开始,它教一个神经网络如何识别手写数字。您还应该通过学习我们在这里讨论的概念的理论和数学基础来继续您的学习。现在可以提出的好问题包括:

  1. 其他类型的损失函数有哪些?
  2. 哪些损失函数更适用于哪些应用?
  3. 使用梯度下降实际计算新权重的算法是什么?
  4. 在您已经了解的领域中,机器学习的应用有哪些?
  5. 通过将这个技能与您技能库中的其他技能相结合,您可以创造出什么新奇的魔法?
  • 以下是一些很好的学习资源:
  1. Coursera上的机器学习课程,由Andrew Ng主讲。这是我开始学习的课程。从回归开始,然后转向分类和神经网络。
  2. Coursera上的神经网络与机器学习课程,由Geoffrey Hinton主讲。更侧重于神经网络及其视觉应用。
  3. 斯坦福大学的CS231n课程:卷积神经网络与视觉识别,由Andrej Karpathy主讲。了解一些高级概念以及使用深度神经网络进行视觉识别的最新技术。
  4. 神经网络社区是一个很好的资源,可以了解不同类型的神经网络。

致谢:

感谢Yasmine Alfouzan、Ammar Alammar、Khalid Alnuaim、Fahad Alhazmi、Mazen Melibari和Hadeel Al-Negheimish在审查本文的早期版本时提供的帮助。如有任何更正或反馈,请在Twitter上联系我。

原文地址: https://jalammar.github.io/visual-interactive-guide-basics-neural-networks/

最后,越研究越感觉GPT是一个宝库,还有很多东西需要挖掘,而GPT本身也在不断迭代发展,大家有兴趣持续关注,和我一起走这条强人工智能学习实践之路的话,可以关注下公众号“强人工智能之路”,目前支持免费的GPT3.5对话。

 

原作者:@JayAlammar 翻译:成江东文章来源地址https://www.toymoban.com/news/detail-485954.html

到了这里,关于由浅入深了解机器学习和GPT原理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 【由浅入深学习MySQL】之索引进阶

    【由浅入深学习MySQL】之索引进阶

    本系列为:MySQL数据库详解,为千锋资深教学老师独家创作 致力于为大家讲解清晰MySQL数据库相关知识点,含有丰富的代码案例及讲解。如果感觉对大家有帮助的话,可以【关注】持续追更~ 文末有本文重点总结,技术类问题,也欢迎大家和我们沟通交流! 从今天开始本系列

    2024年02月05日
    浏览(10)
  • 互联网基石:TCP/IP 四层模型,由浅入深直击原理!

    互联网基石:TCP/IP 四层模型,由浅入深直击原理!

    TCP/IP 是迄今为止最常用的网络互联协议套件,在全球互联网运营方面发挥了巨大作用,可以这样说 TCP/IP 在互联网世界无处不在! TCP/IP 最初由 DARPA(美国国防高级研究计划局)的两位科学家于 1970 年代开发,这两位科学家分为是 Vint Cerf 和 Bob Kahn,被称为 Internet 之父 。 当时

    2024年02月04日
    浏览(10)
  • 由浅入深理解latent diffusion/stable diffusion(2):扩散生成模型的工作原理

    Diffusion Models专栏文章汇总:入门与实战 前言: 关于如何使用stable diffusion的文章已经够多了,但是由浅入深探索stable diffusion models背后原理,如何在自己的科研中运用stable diffusion预训练模型的博客少之又少。本系列计划写5篇文章,和读者一起遨游diffusion models的世界!本文主

    2024年02月08日
    浏览(10)
  • Docker由浅入深(一)

    容器化技术介绍 介绍容器化之前,我们得先知道,为什么会出现容器化,容器化之前都经历了什么 物理机时代 部署非常慢 成功很高 浪费资源 难于扩展与迁移 受制于硬件 虚拟化时代 在同一个物理机上安装多个虚拟机,每个虚拟机安装操作系统和应用, 虚拟机之间物理资源

    2024年02月03日
    浏览(14)
  • 《由浅入深学习SAP财务》:第2章 总账模块 - 2.6 定期处理 - 2.6.4 月末操作:货币折算

    《由浅入深学习SAP财务》:第2章 总账模块 - 2.6 定期处理 - 2.6.4 月末操作:货币折算

             如果一个公司代码启用了多个本位币,如下表所示,则在平时记账时,系统会在凭证行项目中同时体现出多个本位币的金额 。 图2.6.4-1          两个本位币的金额都会实时更新到科目余额中 。因此,在月末可以直接提取两种本位币下的报表结果。       

    2024年04月15日
    浏览(12)
  • React - redux 使用(由浅入深)

    React - redux 使用(由浅入深)

    中文文档: http://www.redux.org.cn/ 英文文档: https://redux.js.org/ Github: https://github.com/reactjs/redux 可直接参照 目录十 进行使用 react-redux redux 是一个专门用于做状态管理的JS库(不是react插件库)。 它可以用在 react, angular, vue 等项目中, 但基本与 react 配合使用。 作用: 集中式管理 re

    2024年02月07日
    浏览(16)
  • 【个人笔记】由浅入深分析 ClickHouse

    项目中不少地方使用到ClickHouse,就对它做了一个相对深入一点的了解和研究。并对各种知识点及整理过程中的一些理解心得进行了汇总并分享出来,希望对其他同学能有帮助。 本文主要讲解ClickHouse的特点、读写过程、存储形式、索引、引擎、物化视图等特性。 适合 入门和

    2024年01月20日
    浏览(15)
  • 由浅入深Netty代码调优

    由浅入深Netty代码调优

    序列化,反序列化主要用在消息正文的转换上 序列化时,需要将 Java 对象变为要传输的数据(可以是 byte[],或 json 等,最终都需要变成 byte[]) 反序列化时,需要将传入的正文数据还原成 Java 对象,便于处理 目前的代码仅支持 Java 自带的序列化,反序列化机制,核心代码如

    2024年02月05日
    浏览(13)
  • 由浅入深介绍 Python Websocket 编程

    由浅入深介绍 Python Websocket 编程

    1.1 websocket 协议简介 Websocket协议是对http的改进,可以实现client 与 server之间的双向通信; websocket连接一旦建立就始终保持,直到client或server 中断连接,弥补了http无法保持长连接的不足,方便了客户端应用与服务器之间实时通信。 适用场景 html页面实时更新, 客户端的html页面

    2024年02月03日
    浏览(14)
  • 手拉手Vue组件由浅入深

    手拉手Vue组件由浅入深

    组件 (Component) 是 Vue.js 最强大的功能之一,它是html、css、js等的一个聚合体,封装性和隔离性非常强。 组件化开发:     1、将一个具备完整功能的项目的一部分分割多处使用     2、加快项目的进度     3、可以进行项目的复用 组件注册分为:全局注册和局部注册 目录

    2024年01月18日
    浏览(11)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包