吴恩达教授AI课程:LangChain扩散模型,用ChatGPT API搭建系统

Posted BOTAI

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了吴恩达教授AI课程:LangChain扩散模型,用ChatGPT API搭建系统相关的知识,希望对你有一定的参考价值。

家人们,吴恩达教授的AI课程时隔一个月终于又更新了!

这次一口气直接推出了三门课,主题包括LangChain、扩散模型,以及用ChatGPT API搭建系统。

依旧是限时免费,除了扩散模型需要一定知识储备之外,另外两门课新手也能听。

有网友为了看完这些课程,直接连觉都不睡了。

课程内容

这三门课的时长均在一个小时左右,都配有案例方便深入理解。

其中,ChatGPT API和LangChain由吴恩达与开发人员合作讲解。

他们分别是OpenAI的Isa Fulford和LangChain团队的Harrison Chase。

扩散模型课程则由吴恩达的学生Sharon Zhou进行讲授,吴出镜进行了推荐。

用ChatGPT API搭建系统

在这门课当中,你将学习如何使用思维链方式调用LLM来实现复杂工作流程的自动化。

从新手到高级玩家都可以听这门课,但需要一些Python基础知识。

学了这门课,你将掌握提示链的建立方式,并了解Python代码与提示内容交互的系统。

这门课还从实际出发,结合所有讲授的理论知识,介绍了如何建立一个自己的客服聊天机器人。

如果你对这些内容感兴趣,那么这门课程值得一看!

传送门:
https://www.deeplearning.ai/short-courses/building-systems-with-chatgpt/

通过LangChain使用LLM开发应用

LangChain是一款通过LLM搭建应用的开源工具。

学习这门课程同样需要有一些Python基础知识。

课程首先介绍了模型、提示和解析器等基础概念,然后从模型的记忆方式展开。

之后便是LangChain的核心,也就是逻辑链。

介绍完这些理论知识,课程又以一个根据文档生成问题和答案的程序为例介绍了具体的开发过程。

此外,课程还介绍了如何对应用进行评估,以及一些嵌入式LangChain工具的使用方式。

学完这门课,你将可以在几个小时内使用LangChain创建令强大的应用程序。

还不快来试试?

传送门:
https://www.deeplearning.ai/short-courses/langchain-for-llm-application-development/

扩散模型如何工作

我们熟知的绘画工具Midjourney和Stable Diffusion,都是由扩散模型驱动的。

这门课对扩散过程和模型进行了深入讲解,难度略高于前两门。

除了工作原理和训练过程等内容,课程还介绍了如何从头开始建立一个扩散模型。

结合具体实例,课程讲授了包括采样、训练扩散模型、建立噪音预测的神经网络等内容,以及一些实用的编码技能。

通过这门课,你可以了解扩散型生成式人工智能的最新知识,并创建自己的扩散模型,甚至超越已有模型和API。

对扩散模型感兴趣的读者,可千万不要错过了!

传送门:
https://www.deeplearning.ai/short-courses/how-diffusion-models-work/

参考链接:
https://twitter.com/AndrewYNg/status/1663984377918001153

吴恩达 DeepLearning.ai 课程提炼笔记(4-2)卷积神经网络 --- 深度卷积模型

1. 经典的卷积网络

介绍几种经典的卷积神经网络结构,分别是LeNet、AlexNet、VGGNet。

LeNet-5:

LeNet-5主要是针对灰度设计的,所以其输入较小,为 技术分享 ,其结构如下:

技术分享

在LetNet中,存在的经典模式:

  • 随着网络的深度增加,图像的大小在缩小,与此同时,通道的数量却在增加;
  • 每个卷积层后面接一个池化层。

 

AlexNet:

AlexNet直接对彩色的大图片进行处理,其结构如下:

技术分享

  • 与LeNet相似,但网络结构更大,参数更多,表现更加出色;
  • 使用了Relu;
  • 使用了多个GPUs;
  • LRN(后来发现用处不大,丢弃了)

AlexNet使得深度学习在计算机视觉方面受到极大的重视。

 

VGG-16:

VGG卷积层和池化层均具有相同的卷积核大小,都使用 技术分享 的卷积和 技术分享 的池化。其结构如下:

技术分享

 

2. ResNet

ResNet是由残差块所构建。

残差块:

下面是一个普通的神经网络块的传输:

技术分享

其前向传播的计算步骤为:

  • Linear: 技术分享
  • Relu: 技术分享
  • Linear: 技术分享
  • Relu: 技术分享

而ResNet块则将其传播过程增加了一个从 技术分享 直接到 技术分享 的连接,将其称之为“short cut”或者“skip connection”:

技术分享

也就是前向传播公式的最后一个步骤变为: 技术分享

增加“short cut”后,成为残差块的网络结构:

技术分享

注意这里是连接在Relu激活函数之前。

 

Residual Network:

多个残差块堆积起来构成ResNet网络结构,其结构如下:

技术分享

没有“short cut”的普通神经网络和ResNet的误差曲线:

技术分享

  • 在没有残差的普通神经网络中,训练的误差实际上是随着网络层数的加深,先减小再增加;
  • 在有残差的ResNet中,即使网络再深,训练误差都会随着网络层数的加深逐渐减小。

ResNet对于中间的激活函数来说,有助于能够达到更深的网络,解决梯度消失和梯度爆炸的问题。

 

3. ResNet表现好的原因

假设有个比较大的神经网络,输入为 技术分享 ,输出为 技术分享 。如果我们想增加网络的深度,这里再给网络增加一个残差块:

技术分享

假设网络中均使用Relu激活函数,所以最后的输出 技术分享 。这里我们给出 技术分享 的值:

技术分享

如果使用L2正则化或者权重衰减,会压缩W和b的值。如果 技术分享 同时 技术分享,那么上式就变成:

技术分享

所以从上面的结果我们可以看出,对于残差块来学习上面这个恒等函数是很容易的。所以在增加了残差块后更深的网络的性能也并不逊色于没有增加残差块简单的网络。所以尽管增加了网络的深度,但是并不会影响网络的性能。同时如果增加的网络结构能够学习到一些有用的信息,那么就会提升网络的性能。

同时由于结构 技术分享 ,ResNet在设计中使用了很多相同的卷积,以保持 技术分享 和 技术分享 的维度相同。

将普通深度神经网络变为ResNet:

技术分享

在两个相同的卷积层之间增加“skip connection”。

 

4. 1x1卷积

1x1卷积:

在二维上的卷积相当于图片的每个元素和一个卷积核数字相乘。

但是在三维上,与 技术分享 卷积核进行卷积,相当于三维图像上的 技术分享 的切片,也就是 技术分享 个点乘以卷积数值权重,通过Relu函数后,输出对应的结果。而不同的卷积核则相当于不同的隐层神经元结点与切片上的点进行一一连接。

所以根本上 技术分享 卷积核相当于对一个切片上的 技术分享 个单元都应用了一个全连接的神经网络。

技术分享

最终三维的图形应用 技术分享 的卷积核得到一个相同长宽但第三维度变为卷积核个数的图片。

 

1x1卷积应用:

  • 维度压缩:使用目标维度的 技术分享 的卷积核个数。
  • 增加非线性:保持与原维度相同的 技术分享 的卷积核个数。

技术分享

 

5. Inception Network

Inception Network 的作用就是使我们无需去考虑在构建深度卷积神经网络时,使用多大的卷积核以及是否添加池化层等问题。

Inception主要结构:

技术分享

在上面的Inception结构中,应用了不同的卷积核,以及带padding的池化层。在保持输入图片大小不变的情况下,通过不同运算结果的叠加,增加了通道的数量。

 

计算成本的问题:

对于上面的 技术分享 大小卷积核的计算成本:

技术分享

  • 1 filters: 技术分享 ;
  • 32 个 filters;
  • 总的计算成本: 技术分享

 

对于 技术分享 大小卷积核用作过渡的计算成本,也将下面的中间的层叫做“bottleneck layer”:

技术分享

  • 技术分享 卷积层计算成本: 技术分享
  • 技术分享 卷积层计算成本: 技术分享
  • 总的计算成本: 技术分享

所以 技术分享 卷积核作为“bottleneck layer”的过渡层能够有效减小卷积神经网的计算成本。事实证明,只要合理地设置“bottleneck layer”,既可以显著减小上层的规模,同时又能降低计算成本,从而不会影响网络的性能。

 

Inception 模块:

将上面说介绍的两种主要思想和模式结合到一起构成 Inception 模块,如下:

技术分享

 

Inception Network:

多个Inception 模块的堆叠构成Inception Network,下面是GoogleNet的结构:

技术分享

 

6. 迁移学习

小数据集:

如今在深度学习领域,许多研究者都会将他们的工作共享到网络上。在我们实施自己的工作的时候,比如说做某种物体的识别分类,但是只有少量的数据集,对于从头开始训练一个深度网络结构是远远不够的。

但是我们可以应用迁移学习,应用其他研究者建立的模型和参数,用少量的数据仅训练最后自定义的softmax网络。从而能够在小数据集上达到很好的效果。

技术分享

 

大数据集:

如果我们在自己的问题上也拥有大量的数据集,我们可以多训练后面的几层。总之随着数据集的增加,我们需要“ freeze”的层数越来越少。最后如果我们有十分庞大的数据集,那么我们可以训练网络模型的所有参数,将其他研究者训练的模型参数作为参数的初始化来替代随机初始化,来加速我们模型的训练。

技术分享

 

7. 数据扩充

与其他机器学习问题相比,在计算机视觉领域当下最主要的问题是没有办法得到充足的数据。所以在我们训练计算机数据模型的时候,数据的扩充就是会非常有用。

数据扩充的方法:

  • 镜像翻转(Mirroring);
  • 随机剪裁(Random Cropping);
  • 色彩转换(Color shifting):

为图片的RGB三个色彩通道进行增减值,如(R:+20,G:-20,B:+20);PCA颜色增强:对图片的主色的变化较大,图片的次色变化较小,使总体的颜色保持一致。

 

训练过程中的数据扩充:

技术分享

为了节省时间,数据扩充的过程和训练过程可以多CPU多线程来并行的实现。

 

8. 计算机视觉现状

数据和手工工程:

不同问题当前的数据集大小:

技术分享

在有大量数据的时候,我们更倾向于使用简单的算法和更少的手工工程。因为此时有大量的数据,我们不需要为这个问题来精心设计特征,我们使用一个大的网络结果或者更简单的模型就能够解决。

相反,在有少量数据的时候,我们从事更多的是手工工程。因为数据量太少,较大的网络结构或者模型很难从这些少量的数据中获取足够的特征,而手工工程实际上是获得良好表现的最佳方式。

对于机器学习应用:

  • 标记数据,(x,y);
  • 手工特征工程/网络结构/其他构建。

 

Tips for doing well:

在基准研究和比赛中,下面的tips可能会有较好的表现:

  • Ensembling:独立地训练多个网络模型,输出平均结果或加权平均结果;
  • 测试时的 Multi-crop:在测试图片的多种版本上运行分类器,输出平均结果。

以上是关于吴恩达教授AI课程:LangChain扩散模型,用ChatGPT API搭建系统的主要内容,如果未能解决你的问题,请参考以下文章

吴恩达 DeepLearning.ai 课程提炼笔记(4-2)卷积神经网络 --- 深度卷积模型

RNN 卷积神经网络- 吴恩达Andrew Ng 论文等资料汇总

吴恩达 DeepLearning.ai课程笔记(1-3)神经网络和深度学习 --- 浅层神经网络

斯坦福吴恩达教授机器学习公开课第四讲笔记——牛顿方法/广义线性模型

吴恩达的视频课程做成了文字版 ~~~

吴恩达,新冠阳性!