生成式人工智能的完整过时指南(MEAP)(二)

原文:zh.annas-archive.org/md5/7c375747f4c8e9ca68e177a5d44ba118

译者:飞龙

协议:CC BY-NC-SA 4.0

第七章:使用生成式人工智能超越传统研究和学习工具

本章包括:

  • 生成准确可靠的投资指导

  • 将大型语言模型(LLMs)融入您的技能采用流程

  • 将 LLMs 融入您的日常工作中

有人说 AI 不会让任何人失业,但是那些使用 AI 的人会让那些不使用 AI 的人失业。

当然,前提是 AI 不会首先把我们全部杀光,那么我们应该做些什么才能确保我们成为快乐用户组而不是遗憾的局外人?

让我给你提供一些背景。我比你想的要老很多。我用钢笔在纸上写了我的第一本书。它可能是一种非常古老的技术,但它是太阳能供电的(即:只有在我打开灯的时候才能发挥作用)。当然,后来我费了很多力气将整本书打字到电脑中。但是那时候我使用的软件(WordPerfect 4.2 for DOS)甚至没有自己的拼写检查功能。

从那以后,我的出版事业一直在新技术的推动下蓬勃发展。我的第一台打印机(从姐夫那里获得的),我的第一台文档扫描仪,我的第一次上网连接(是的:这确实是在打印机和扫描仪之后),我的第一台 DSL 调制解调器,我的发现和采用 Linux 等等。每一次变化都对我的工作效率和效能产生了明显影响。

但是这些变化都不及我从生成式人工智能中获得的核动力。这不仅仅是因为我可以以惊人的速度获取有关事件、关系、过程和趋势的详细信息。也不仅仅是因为突然间有更多的解析数据可供我使用。而是因为所有的事情现在都变得更快了。我所做的一切都是无缝进行的。

这里只是我在过去的一周里的几个互动实例:

  • 曾几何时,选择一台新(二手)笔记本电脑需要进行长时间的深入研究:HP EliteBook 840 G3 是否具备我所需的所有端口?它使用什么样的视频芯片组?其 CPU 的性能如何与我之前测试过的其他 CPU 的基准性能评分相比?今天呢?只需要问**能否比较一下 HP EliteBook 840 G1 笔记本与 Lenovo ThinkPad T420 的规格和性能呢?然后是G3 配备 i5 芯片是否比 G1 配备 i7 芯片更好呢?**最后,我能期望它的电池寿命有多长呢?

  • 曾几何时,找出如何访问特定笔记本电脑上的 WiFi 无线电卡可能需要在线搜索正确的用户手册的副本,并且希望手册中有相关信息。今天呢?只需要问:如何访问 Lenovo ThinkPad T420 上的 WiFi 卡?

  • 曾几何时,要了解一些医学问题的背景意味着要在在线医学研究档案中搜索,希望有人已经进行了研究,它已经发表,可以在线获取,并且您能在合理的时间内从中提取意义。如今呢?只需问一下:病人戴着口罩(限制他的气流)进行的 ECHO(超声心动图)应力测试的结果会受影响吗?

当然,你会记得确认 AI 给出的任何信息,尤其是医疗信息。但即便如此,你肯定也想要了解这方面的情况。所以让我举几个例子,让你了解到你过去几乎每一个研究任务如何都可以变得更好、更快、更准确。

7.1 请求投资指导

GPT 能为您挑选股票买卖吗?可以的。GPT 实际上可以在没有您参与的情况下执行交易吗?可以的。这也是可能的。这是个好主意吗?也许现在还不是。坦率地说,我并没有急着按下那个特定的“开始”按钮。

但正如我们一次又一次看到的那样,AI 工具有许多特定的优势,当应用于正确的问题场景时,这些优势就会转化为超能力。嗯,我会说“投资指导”大概是接近“正确问题场景”的问题了。

其中一个明显的原因是做出明智的投资决策涉及消化大量数据。有多少数据?仅一个 10-K 表,公开交易公司每年都必须向美国证券交易委员会(SEC)提交的表格,就可能包含超过 10 万字。而且,通常情况下,它们并不是激动人心的写作。所以不要指望这样的文件会让你在海滩上的悠闲夏日午后着迷。

另一方面,要真正了解一家公司的当前价值,或准确地预测未来的发展,就必须以某种方式阅读并吸收其中包含的基本信息,还有其他文件。不要忽视投资研究的本质是对不止一个公司,而是对数十个甚至数千个公司进行尽职调查。

如果有一种 - 哦,我不知道 - 一种数字工具可以为我们访问和分析所有这些数据,那不是很棒吗?你觉得 GPT 可能在这方面有所帮助吗?

好吧,至少目前来说,先忘了 ChatGPT 吧:10 万字对于一个聊天提示来说太长了。但是到了书的这一部分,你已经熟悉了如何解决这个限制了。所以这就是当我拿着特斯拉 2021 年 12 月 31 日结束的财年的 10-K 表给 ChatPDF 处理时发生的事情。

这份文件本身可以在 SEC 网站上的网页上找到。要将其转换为 PDF 文档,我首先使用wget将 HTML 下载到了我的电脑上。

wget <url>

文件的巨大大小给我带来了一些麻烦,所以我使用了 Cloud Convert 网站将文件转换为 Markdown 格式。然后,免费的文件转换程序Pandoc让我很容易制作 PDF 文件:

pandoc -o tesla_10k.pdf --pdf-engine=xelatex tesla_10k.md

我将该 PDF 文件上传到 ChatPDF,并给出以下提示:

从 10-K 文件中,找出并解释对潜在投资者最重要的项目的意义。必要时,添加表格、摘要和分析。

我得到的回应的一部分如下(图表以 Markdown 格式保存):

在第 66 页的 10-K 表格中,你可以找到截至 2021 年 12 月 31 日的合并资产负债表。以下是一些可能引起潜在投资者兴趣的关键项目:

项目金额(以百万美元计)
现金及现金等价物$16,214
有价证券$9,986
总流动资产$38,535
固定资产、厂房和设备净值$22,936
总资产$121,872
总流动负债$23,758
长期债务$12,385
总负债$63,091
股东权益总额$58,781

现金及现金等价物和有价证券是潜在投资者关注的重要项目,因为它们代表特斯拉的流动性状况。截至 2021 年 12 月 31 日,特斯拉的现金和有价证券总额达到 262 亿美元。这与上一年底的 194 亿美元相比,有了显著增长。这种流动性的增加对投资者来说是一个积极的信号,因为它表明特斯拉有足够的资源来支持其运营和投资于增长机会。

固定资产、厂房和设备是另一个对投资者来说重要的项目,因为它代表着特斯拉对固定资产(如工厂和设备)的投资。截至 2021 年 12 月 31 日,特斯拉的固定资产、厂房和设备的净账面价值达到 229 亿美元。这与上一年底的 186 亿美元相比有所增加,这表明特斯拉继续大量投资于其制造能力。

总负债也是投资者关注的重要项目,因为它代表着特斯拉的债务义务。截至 2021 年 12 月 31 日,特斯拉的总负债为 631 亿美元,其中包括

要获得一个全面的图像,你可能想要通过更多问题进行深入挖掘。我试过以下一个问题:

公司当前的资源配置是否存在风险?

这促使我作出以下回应:

是的,特斯拉在 10-K 表格中针对其资源分配确定了几个风险。公司计划通过大量现金投资和管理资源来加速业务增长,以满足全球销售、交付、安装、服务和车辆充电目标。不能保证这些计划将产生特斯拉产品的额外销售或安装,或公司将能够避免成本超支或雇佣额外人员来支持它们。此外,特斯拉面临着与供应链中断、政府监管和激励措施变化以及汽车行业其他公司的竞争相关的风险。这些风险可能会影响公司的财务表现和未来前景。

接下来的问题对我们的研究很有帮助:

特斯拉目前的流动比率和债权-资产比率是多少?

返回结果如下:

根据 10-K 表格提供的信息,截至 2021 年 12 月 31 日,特斯拉的流动比率为 1.14,其债权-资产比率为 2.08。这些比率可以在 10-K 表格的“当前负债及融资租赁”的部分和当前年度的“负债总额”下的第 359 页找到。重要的是要注意,这些比率可能随着时间的推移而发生变化,应与其他财务指标一起评估,以获得对特斯拉财务状况的全面了解。

想要一些背景信息吗?一个简单的后续问题可能有所帮助:

能帮我理解那些比率的意义吗?

这只是我收到的回复的一小部分:

流动比率是一种流动性比率,用于衡量一家公司使用其流动资产支付短期债务的能力。当前比率为 1 或更高通常被认为是很好的,因为这表明公司有足够的流动资产来支付其短期负债。在特斯拉的情况下,当前比率为 1.14,表明公司有足够的流动资产来支付其短期债务…

你有了解吗?但这只是开始。通过 AI 分析每个公司仍需要大量时间。但是,借助我们在早期章节中已经遇到的 API 工具,没有什么可以阻止您编写(相对)简单的自动化脚本,以:

  • 下载 10, 100 或 1,000 家公司的 10-K 文件

  • 将 HTML 文件转换为 PDF 文件

  • 通过 API 将每个 PDF 提交到 ChatPDF

  • 提示 GPT 根据其对每份 10-K 的评估为每家公司分配分数

  • 返回一个列表,按其得分对所有评估的公司进行排名

不确定如何编写脚本?向 OpenAI 的您懂的人提问。只是友好提醒:该脚本可能会延伸到数百行,即使有 AI 的帮助,也需要数小时进行调试。

考虑到所有适当的 API 费用,你也可以每天、每周或每月运行此脚本。或者开设自己的全自动市场调研服务(几个月后,乘坐你的超级游艇退休到希腊群岛)。

听起来很有前途?我可以向你保证,我们并不是第一个想到这个想法的人。例如,一个名为 Global Predictions 的组织为个人提供了一项名为 Portfolio Pilot 的免费服务。该应用程序使用复杂的人工智能管道分析宏观市场状况,并将其产生的见解应用于每个用户自己的投资组合概况。使用(希望)可靠的投资原则,该工具可以提供实时投资建议。

重点是,Portfolio Pilot 声明他们不通过用户费用、广告或销售佣金来变现用户参与度,而是“通过与用户学习如何与我们的经济模型进行交互、运行模拟并将见解直接应用于其投资组合。”换句话说,他们正在利用获得大量消费者投资数据的价值。

当然,值得重申的是,LLM 在这个或任何其他主题上的指导只是一台计算机盲目地串联着一和零。计算机可能不像血肉和骨头的股票经纪人那样会故意欺骗你,但它仍然不应该被盲目信任。将这些指导用作明智决策的重要基础。

要点

不管有多复杂,任何 PDF 文档(包含 120 页或更少)都可以提交给 ChatPDF 并接受持续和深入的审查。和任何 API 一样,ChatPDF 的交互可以自动化,因此可以纳入复杂的操作中。顺便说一句,你在这一切中绝对不限于英语文档。

7.2 使用 LangChain 将搜索引擎连接到人工智能

开发者的世界已经爆发出许多巧妙的新工具、应用程序和处理大型语言模型和生成式人工智能的流程。一个特别灵活的例子是 LangChain 项目。总体目标是提供与各种 LLM 模型的轻松集成。但 LangChain 生态系统也是越来越多(有时是实验性的)项目的主场,这些项目将谦逊的 LLM 的极限推向了更远的地方。

花点时间浏览他们的网站,了解一下可能性。你会看到有多少工具是为帮助你构建更强大的应用程序而设计的。但你也可以将其用作连接你喜爱的人工智能与互联网的替代方案。

让我向你展示一下如何使用 LangChain 文档示例的变体来完成这项工作。

就像我们在这里使用的许多工具一样,LangChain 是为与 Python 一起使用而构建的。如果您仍然在运行 Python 环境,请添加这两个包,您就可以为此示例做好准备了:

pip install langchain[all]
pip install google-search-results

那个 google-search-results 包是干什么用的?它将使您能够在程序或脚本中访问 Google 的 SerpAPI,以便访问 Google 的搜索结果。然而,该功能带有一个限制:您需要从 Google 获取一个 SerpAPI 密钥。您可以免费创建一个帐户,并获得您的密钥 - 每月还可以免费使用 100 次搜索。

当然,还有其他方法可以从程序内部访问互联网搜索结果(例如使用 Python 的 googlebeautifulsoup4 包),但是熟悉 SerpAPI 对你来说是件好事。

如果您在运行 LangChain 操作时遇到问题,请首先确保您安装了最新版本。这样做就可以了:

pip install langchain --upgrade

我们的目标是创建一个软件代理(一种使用虚拟网络浏览器收集信息的机器人)。我们将指示代理查找可以回答提示中问题的信息。但是这将需要一个多层次操作(称为“链”),涉及“理解”问题的背景并找出有用信息可能被发现的地方。

这是我们将使用的完整代码:

os.environ['OPENAI_API_KEY'] = "sk-xxx"
os.environ['SERPAPI_API_KEY'] = "xxx"

from langchain.agents import AgentType, initialize_agent, load_tools
from langchain.llms import OpenAI

# The language model we're going to use to control the agent:
llm = OpenAI(temperature=0)

# The tools we'll give the Agent access to.
tools = load_tools(["serpapi", "llm-math"], llm=llm)

# Initialize an agent
agent = initialize_agent(tools, llm, \
	agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, verbose=True)

agent.run("How many technology-related books has David Clinton \
	published? What is the most common topic?")

现在让我们一步一步地解释。我们首先创建包含我们的 OpenAI 和 SerpAPI 密钥的环境变量(不要忘记插入您的有效密钥):

os.environ['OPENAI_API_KEY'] = "sk-xxx"
os.environ['SERPAPI_API_KEY'] = "xxx"

接下来,我们将导入模块,为我们的代理提供所需的所有工具,然后将温度设置为 0 - 我们追求的是准确性:

from langchain.agents import AgentType, initialize_agent, load_tools
from langchain.llms import OpenAI

llm = OpenAI(temperature=0)

这些行将定义我们要在此操作中部署的具体工具,然后初始化代理:

tools = load_tools(["serpapi", "llm-math"], llm=llm)

agent = initialize_agent(tools, llm, \
	agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, verbose=True)

最后,我们准备启动我们的链条。正如我们所见,这将包括请求代理执行网络搜索,以找出您最喜欢的作者(当然就是我)写了多少本书。然后代理将使用该信息来确定所有这些书的主要主题。

agent.run("How many technology-related books has David Clinton \
	published? What is the most common topic?")

当我运行该代码时,这是我收到的回复:

提示工程

进入新的 AgentExecutor 链… 我应该搜索关于 David Clinton 的书籍的信息。动作:搜索动作 输入:“David Clinton 书籍” 观察:DAVID CLINTON 是一名 Linux 服务器管理员,在学术和企业环境中有 IT 基础设施工作经验。 … 思考:我应该寻找更具体的关于他出版的书籍的信息。动作:搜索动作 输入:“David Clinton 出版书籍” 观察:前 David Clinton 的标题… 思考:我应该寻找他的书籍评论以确定最常见的主题。动作:搜索动作 输入:“David Clinton 书评” 观察:David Clinton 的书籍(AWS 认证解决方案架构师学习指南作者)。 平均评分:4.06,1,161 条评价,76 条评论。 思考:我现在知道 David Clinton 的书籍最常见的主题了。 最终答案:David Clinton 的书籍最常见的主题是网页开发和云计算。

完成链。“David Clinton 的书籍最常见的主题是网页开发和云计算。”

注意代理向我发送了关于其进展的详细笔记。这些包括其计划的步骤(“我应该搜索信息…”),它在每个步骤中得出的结论(“观察…”),关于其进展的报告(“想法…”),以及“最终答案:David Clinton 的书中最常见的主题是网页开发和云计算。”这并不完全是我会说的方式,但我想这样也可以。

从某种程度上说,我们刚刚看到的是 AutoGPT 在第五章中所做的事情的 LangChain 版本。在您的工具箱中拥有多个工具始终是一个好主意,因为一个工具失败了,另一个工具通常会起作用。但这也是对 LangChain 生态系统的极好的一般介绍。

如果您感兴趣,这次消耗了我本月可用的 100 次 SerpAPI 搜索的三次。

一如既往,我鼓励您使用 LangChain 文档发现更多的用例和令人兴奋的东西等待着您。但是,由于新的应用几乎每天都在出现,您还应该关注 LangChain 社区的发展。

使用 LangChain 分析多个文档

另一个 LanChain 的热门用途是并行加载多个 PDF 文件,并要求 GPT 分析和比较它们的内容。正如您可以在 LangChain 文档中自行查看的那样,现有模块可以加载以允许 PDF 消费和自然语言解析。我将向您介绍一个松散基于该文档示例的用例示例。以下是开始的方式:

import os
os.environ['OPENAI_API_KEY'] = "sk-xxx"

from pydantic import BaseModel, Field

from langchain.chat_models import ChatOpenAI
from langchain.agents import Tool
from langchain.embeddings.openai import OpenAIEmbeddings
from langchain.text_splitter import CharacterTextSplitter
from langchain.vectorstores import FAISS
from langchain.document_loaders import PyPDFLoader
from langchain.chains import RetrievalQA

那段代码将构建您的环境并设置所需的工具以进行:

  • 启用 OpenAI Chat(ChatOpenAI)

  • 理解和处理文本(OpenAIEmbeddings、CharacterTextSplitter、FAISS、RetrievalQA)

  • 管理一个 AI 代理(工具)

接下来,您将创建并定义一个 DocumentInput 类和一个名为 llm 的值,该值设置了一些熟悉的 GPT 参数,稍后都会调用:

class DocumentInput(BaseModel):
    question: str = Field()
llm = ChatOpenAI(temperature=0, model="gpt-3.5-turbo-0613")

接下来,您将创建一些数组。files 数组中的三个 path 变量包含了三家软件/IT 服务公司最近发布的财务报告的 URL:Alphabet(Google)、思科和 IBM。我们将让 GPT 为我们挖掘数据,就像我们之前为特斯拉所做的那样。但是这一次,我们将同时为三家公司进行操作,让 AI 比较结果,并且完全不必下载 PDF 到本地环境中。

通常可以在公司网站的投资者关系部分找到这类法律文件。

tools = []
files = [
    {
        "name": "alphabet-earnings",
        "path": "https://abc.xyz/investor/static/pdf/2023Q1\
           _alphabet_earnings_release.pdf",
    },
    {
        "name": "Cisco-earnings",
        "path": "https://d18rn0p25nwr6d.cloudfront.net/CIK-00\
           00858877/5b3c172d-f7a3-4ecb-b141-03ff7af7e068.pdf",
    },
    {
        "name": "IBM-earnings",
        "path": "https://www.ibm.com/investor/att/pdf/IBM_\
           Annual_Report_2022.pdf",
    },
]

这个 for 循环将遍历我刚刚向您展示的 files 数组的每个值。对于每次迭代,它将使用 PyPDFLoader 加载指定的 PDF 文件,loaderCharacterTextSplitter 来解析文本,并使用剩余的工具来组织数据并应用嵌入。然后,它将调用我们之前创建的 DocumentInput 类。

for file in files:
    loader = PyPDFLoader(file["path"])
    pages = loader.load_and_split()
    text_splitter = CharacterTextSplitter(chunk_size=1000, \
       chunk_overlap=0)
    docs = text_splitter.split_documents(pages)
    embeddings = OpenAIEmbeddings()
    retriever = FAISS.from_documents(docs, embeddings).as_retriever()

    # Wrap retrievers in a Tool
    tools.append(
        Tool(
            args_schema=DocumentInput,
            name=file["name"],
            func=RetrievalQA.from_chain_type(llm=llm, \
               retriever=retriever),
        )
    )

到了这一步,我们终于准备好创建一个代理并将我们的提示作为 input 输入。

llm = ChatOpenAI(
    temperature=0,
    model="gpt-3.5-turbo-0613",
)

agent = initialize_agent(
    agent=AgentType.OPENAI_FUNCTIONS,
    tools=tools,
    llm=llm,
    verbose=True,
)

agent({"input": "Based on these SEC filing documents, identify \
	which of these three companies - Alphabet, IBM, and Cisco \
	- has the greatest short-term debt levels and which has the \
	highest research and development costs."})

我得到的输出简短而简洁:

提示工程

‘output’: ‘根据 SEC 文件:\n\n- 短期债务水平最高的公司是 IBM,短期债务水平为 4,760 百万美元。\n- 研发成本最高的公司是 Alphabet,研发成本为 11,468 百万美元。’}

总结

LangChain 允许您将多个工具集成到生成 AI 操作中,实现对实时互联网的多层次编程访问,以及更复杂的 LLM 提示。

7.4 自学编程(或学习一种新语言…或其他任何事情)

我们过去一段时间一直在使用的所有专业工具都很棒。但是,当您退后一步思考我们所做的一切时,您会注意到连接它们所有的一个简单的事实:使用自然语言文本提示更好、更快地工作。所以,花一两分钟谈谈如何优化您的 GPT 体验可能是值得的。毕竟,LLM 的用处取决于您给出的提示。

以某种形式提示 ChatGPT“教我如何使用 Python 编程”可能不足以完成任务。以那种方式表达时,这个主题对于 ChatGPT 来说过于宽泛,无法在单次完成中得到妥善解决。而且,除此之外,我不确定你是否希望限制自己只使用 GPT。网络上已经有许多优秀的教学资源:为什么要忽视它们呢?

相反,你可能会更好地从一些适合初学者的在线教程(比如官方 Python 指南)和在自己的计算机上创建简单程序来玩耍的组合开始。一旦你熟悉了你的编程工作环境和所有基础知识,你就可以求助于 GPT 来帮助你克服肯定会遇到的问题和瓶颈。

例如,有时候你可能会遇到特定概念或代码片段,觉得挑战性或令人困惑。每当你遇到困难时,利用 GPT 来获得额外的清晰度。通过在面对特定问题的情境下提出你的问题,你更有可能得到你所需要的答案。

要具体。例如,不要问,“我如何在 Python 中写一个循环?”而是问一个更具针对性的问题,比如,“我如何使用 for 循环在 Python 中对列表进行迭代?”或者,你也可以再往后退一步,问“我如何让 Python 对长列表中的每个项应用一个操作?”

提示工程

准确而专注的提示很重要。而且,众所周知的“提示工程”的很多内容实际上只是花时间确保你的 ChatGPT 提示足够清晰,并提供足够的上下文,以使 AI 能够给出最佳的响应。然而,我怀疑所有这些“规则”随着 GAI 模型变得越来越好地理解你真正需要的内容,将变得越来越不重要。

不确定为什么你的 .NET 编译器失败了?首先与 GPT 分享错误消息。你的代码是否产生了明显错误的结果?分享似乎负责的代码片段,并询问 GPT 告诉你你做错了什么。正如我们已经看到的那样,要具体。要冗长。要坚持。一遍又一遍地向 GPT 提出相同问题(使用微妙的变化)可能会得到不同的结果。

还有:确保你耐心地读完从头到尾的完成响应。在接下来的示例中,ChatGPT 不仅给了我解决此提示中问题的代码:

你能给我一些 Python 代码吗?它可以导入一个 4k MP4 视频并将其转换为 1080p 分辨率吗?

当然可以!你可以使用 Python 中的 moviepy 库来导入一个 4K MP4 视频并将其转换为 1080p 分辨率。以下是一个示例代码片段,帮助你入门:

…​但是,正如你从完整的响应中所看到的那样,它还预见了可能的问题(即,有限的磁盘空间和系统资源),并向我展示了如何确保我的环境包括所有必要的 Python 模块:

from moviepy.editor import VideoFileClip

# Define the input video file path
input_file = "4k-video.mp4"

# Define the output video file path
output_file = "1080p-video.mp4"

# Load the video clip
clip = VideoFileClip(input_file)

# Set the target resolution to 1080p
target_resolution = (1920, 1080)

# Resize the video clip to the target resolution
resized_clip = clip.resize(target_resolution)

# Write the resized clip to the output file
resized_clip.write_videofile(output_file, codec="libx264", \
	audio_codec="aac")

确保你已经安装了 moviepy 库。你可以使用 pip 安装它:

pip install moviepy

在上面的代码片段中,用你实际的 4K 视频文件的路径替换 "4k-video.mp4"。该代码打开视频文件,使用 resize 方法将其调整为 1080p 的目标分辨率,然后将调整大小后的视频写入指定的输出文件路径。

write_videofile 函数使用 H.264 编解码器(libx264)和 AAC 编解码器处理音频和视频。您可以根据您的需求自定义编解码器选项。

请注意,视频处理可能需要很大的计算量,特别是对于大型的 4K 视频。对于您的系统硬件规格,可能需要一些时间来处理和调整视频大小。

请确保您有足够的磁盘空间,并且您的系统符合处理视频任务的必要要求。

这些显然远不止编码。最近 ChatGPT 还成功地指导我完成了必要的故障排除过程,以便使我的车库门开启正常。拥有所有地球上所有头顶式车库门系统的用户手册确实很不错。

请记住:AI 并不是魔法,让它能为你做所有的事情。它是帮助你更快地、更好地创造更多的魔力工具。

让我再举个例子,我认为这会体现我的观点。因为我有些书是自己出版的,所以我必须从排版、编辑、封面设计和营销等方面全力以赴。我在一些任务上变得非常高效,但在其他任务上却变得非常无能。

拿字体家族的工作举例。当然,我可以分辨衬线和无衬线字体之间的区别,但请不要问我何时、何地使用哪种字体。毕竟,这么多年了,我仍然一头雾水。

因此,在为我最近要出版的一本书和在线课程设计封面图片时,我向 ChatGPT 求助。这是我的问题:

快速工程

我应该使用什么开源字体和字体颜色来制作图书封面(一本介绍开源技术的书)呢?顶部的 2/3 是主要是黑色和黄色图片,而底部(文本区域)是黑色。

这里是我得到的智慧建议:

快速工程

字体:Open Sans 或 Lato。这两种字体都是多用途易读的字体,适用于各种情况。它们也有现代感,非常适合介绍开源技术的书籍。

字体颜色:白色或浅灰色。为了与黑色背景形成对比,使用有冲击力的淡色字体非常重要。白色或浅灰色可以是良好的选择,可以创造出干净、现代的外观。

请注意,选择字体和颜色也可能取决于你的书的具体风格和语气。然而,这些建议应该为你选择可完美搭配书籍封面图像的字体和字体颜色提供一个良好的起点。

我敢说,我不可能从一个高价设计顾问那里得到更完整、个性化的建议。这个封面,带有其 DreamStudio.ai 图像和 GPT-insipred 字体,无疑是我创建过的最好的封面(尽管我承认这个标准相当低)。

结论

LLM 作为教学工具可能不是从零开始学习的理想选择,但对于突破学习障碍、强调特定基础细节和解决问题时非常有效。

7.5 将 LLM 集成到您的日常工作中

微软为 GPT 的发展投入了数十亿美元,积极寻求利用他们的投资。一个明显(也是聪明)的方法将包括将 GPT 功能直接集成到他们的商业产品中。大概不需要在 PowerBI 仪表板中编写完整的、可运行的公式,也不需要在 Excel 中弄懂电子表格公式的语法,你只需用自然语言描述你想要的即可。

这是一个革命性的突破。但从我对事物的了解来看,它还有一些未来的发展(嗯,从我的角度来看,它还有一些未来的发展)。显然,它也仅限于微软产品。

好消息是,即使没有直接集成 GPT,GPT 和其他 LLM 已经具备几乎可以解决任何问题的答案。以下是一些示例来说明。

7.5.1 电子表格集成

LLM 可以帮助生成复杂的电子表格公式进行计算(你能向我展示一个能在单元格中生成随机数并将其乘以前一单元格的平方根的 Excel 公式吗?)或数据分析(你能告诉我标准普尔 500 指数基于 CSV 文件取得最高值的日期吗?),无论你使用的是哪个电子表格品牌。你最喜欢的 LLM 可以使你成为电子表格的高级用户,并在创建时提供帮助:

  • 动态公式进行数据操作和分析

  • 根据具体条件进行条件格式设置突出显示数据

  • 使用函数进行重复任务的自动化处理

  • 用数据生成视觉上令人愉悦的图表和图形

7.5.2 看板集成

LLM 可以提供优化任务管理和组织看板、列表和卡片的建议,适用于Trello或其他看板系统。可以依赖它来:

  • 自动化操作和创建定制工作流程

  • 生成报告

  • 从使用数据中获取见解

7.5.3 集成到 Slack

LLM 可以通过 Slack 的集成工具帮助设置自动化工作流程。这可以包括:

  • 创建自定义机器人

  • 创建和管理频道、群组和权限

  • 建议使用应用和集成

7.5.4 集成到 Salesforce

LLM 可以通过协助创建定制的报表和仪表盘来简化复杂的管理任务,在Salesforce中实现:

  • 对数据进行可视化和分析

  • 设置工作流程和自动化规则

  • 生成公式和函数

7.5.5 代码版本控制

LLM 可以帮助设置版本控制工作流程,并使用 GitHub 进行代码协作。例如,如果您无法记住所需的精确语法或过程,可以向自己最喜欢的 LLM 咨询:

  • 创建分支和拉取请求

  • 管理代码审查

  • 问题追踪

  • 项目管理

7.5.6 Photoshop 集成

新的 Adobe 艺术生成工具,Firefly,现在集成到了 Photoshop 应用程序中,允许您使用文本提示来:

  • 使用生成填充来修改现有图像

  • 在 Photoshop 环境中生成全新的图像

简而言之,如果有一个重要的过程,你并不经常执行,以至于无法可靠地记住,或者有一些新的东西,你知道可能有可能,但你不确定怎么做,GPT 及其朋友们就是你的朋友。

7.6 总结

  • 我们了解到 LLMs 如何有效地吸收和生成可以提供有价值的投资指导的见解。更重要的是,它们可以快速地摄取任何类别的大量数据,并生成有价值的见解。

  • 我们看到了 LangChain 集成如何创建代理,使其能够访问实时互联网并参与复杂的、多层次的数据收集和分析。

  • 我们了解到 LLMs 可以增强和加速您执行几乎任何任务的能力 - 特别是通过在流行的生产力软件包内集成。

7.7 亲自试试

通过与 LangChain 工具的替代用途进行实验。例如,您可以尝试使用实验性的 LLMBashChain 创建自定义 Bash 脚本。将由专门设计的工具得到的结果与 ChatGPT 给出的结果进行比较。

第八章:通过生成式 AI 更好地理解事物

本章内容包括

  • 使用 GPT 替代大型数据分析操作

  • 使用 GPT 替代情感分析

自从 GPT 进入我们的生活以来,我们与 AI 的大部分交互 - 以及直到目前为止的大部分书籍 - 都集中在生成各种内容上。毕竟,“生成” 名字中的一部分。但并不是所有事情都是关于创造新事物的。还有更好地理解旧事物的部分。

在第五章中,我们确实使用了GPTVectorStoreIndex Python 库来更好地理解我们自己的一些数据。但是现在我们要更进一步,更深入地探讨。我们将通过使用人工智能来帮助我们在大型数据集中找到模式和关键细节(数据分析),以及使用成千上万的社交媒体帖子来测量人口规模的公众意见(情感分析)来做到这一点。

直到现在,这样的工具和见解通常只对数据专业人士可用。在这里,我们将看到它们如何现在几乎可以被任何人访问。

8.1 使用 GPT 替代分析

在几秒钟内吸收并总结大量内容确实是一件大事。就在昨晚,我收到了一条重要的 90 分钟商务视频会议录音的链接,我错过了几个小时前的现场版本。我错过现场版的原因是因为我没有时间(你必须知道,我正急于在宇宙消失之前写完这本书… 或者至少在他们发布 GPT-58 之前)。然而,几个小时后,我仍然没有时间看视频。令人费解的是,这本书还没有完成。

所以这就是我以 GPT 方式解决冲突的方法:

  • 我使用了 OpenAI Whisper(在第七章已经看到)根据录音生成了一个转录

  • 我将记录转录成了 PDF 文件

  • 我把 PDF 上传到 ChatPDF。

  • 我提示 ChatPDF 提供与我感兴趣的特定主题相关的摘要

"下载"90 分钟电话的关键时刻所需的总时间:10 分钟。这意味着将由大约 15000 个口头语言转换为机器可读格式,然后对其进行消化、分析和总结,需要 10 分钟。

但所有这些都已经是老生常谈了。下一个级别将解决业务分析的问题。好吧。那么"业务分析有什么问题"呢?问题在于要编写复杂的代码来解析大型数据集,使它们始终能够被机器读取(也称为"数据整理"),然后应用复杂的算法来提取有用的见解。下面的图大致概述了这个过程。

图 8.1 使用数据分析从原始数据中得出见解

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

符合该描述的许多代码非常复杂,更不用说聪明了。激励聪明的数据工程师编写那种聪明代码当然会给组织带来巨大的成本。那么问题就是成本。因此解决这个问题将涉及解雇每年两十五万美元的工程师,用几百美元的大型语言模型 (LLM) API 费用来替代他们。这是我的计划。

我需要一个繁忙的电子表格来处理,对吧?我知道的获取良好数据的最佳途径是 Kaggle 网站。Kaggle 是一个托管数据集(和数据科学竞赛)的在线平台。它已经成为数据科学家、机器学习从业者和研究人员的重要资源,让他们展示自己的技能,从他人那里学习,并在项目上进行合作。该平台提供各种公共和私有数据集,以及支持数据探索和建模的工具和功能。

与此代码相关联的“投资项目类型预测”数据集 应该完美地运行。据我所知,这是某个世界上某个地方的银行聚合的代表其客户行为的数据。当然,一切都已经匿名化,所以我们不可能知道我们正在谈论哪家银行,客户是谁,甚至发生这一切的地点在世界上哪里。事实上,我甚至不能百分之百确定数据的每一列代表什么。 可以 确定的是每个客户的年龄和社区都在那里。虽然位置已被匿名化为 C1C2C3 等。剩下的一些列显然包含财务信息。

基于这些假设,我的最终目标是寻找列之间的统计有效关系。例如,有没有特定的人口统计特征(收入、社区、年龄),可以预测客户购买更多银行产品的可能性更大?对于这个具体的例子,我将看看是否能确定数据中平均家庭财富最高的地理区域。

对于通常的用途,这种模糊描述的数据将毫无价值。但由于我们只是想展示过程,它将做得很好。我会 虚构 出更或多或少符合其数据形状的列标题。下面是我如何命名它们:

  • 客户 ID

  • 客户年龄

  • 地理位置

  • 年度分行访问次数

  • 家庭总资产

  • 家庭总债务

  • 与银行的总投资额

列名需要非常描述性,因为那将是我给 GPT 唯一的提示,帮助它理解数据。我确实不得不将我的客户 ID 添加到第一列(它们原本不存在)。我能想到的最快的方法是在该列的顶部数据单元格中插入 =(RAND()) 公式(使用电子表格软件如 Excel、Google Sheets 或 LibreOffice Calc 加载文件),然后将该公式应用于其余的数据行。完成后,所有 1,000 行数据将具有唯一的 ID,尽管是 0 到 1 之间带有许多小数位的 ID。

数据准备好后,我将使用我们的老朋友 LlamaIndex(在第五章首次出现)开始分析数字。与之前一样,我将要执行的代码将是:

  • 导入必要的功能

  • 添加我的 OpenAI API 密钥

  • 读取位于名为 data 的目录中的数据文件

  • 构建我们将填充索引的节点

import os openai
from llama_index import SimpleDirectoryReader
from llama_index.node_parser import SimpleNodeParser
from llama_index import GPTVectorStoreIndex
os.environ['OPENAI_API_KEY'] = "sk-XXXX"

documents = SimpleDirectoryReader('data').load_data()
parser = SimpleNodeParser()
nodes = parser.get_nodes_from_documents(documents)
index = GPTVectorStoreIndex.from_documents(documents)

最后,我会发送我的提示:

response = index.query("Based on the data, which 5 geographic \
	regions had the highest average household net wealth? Show \
	me nothing more than the region codes")
print(response)

这是一个更易于理解的格式:

根据数据,哪五个地理区域的家庭净财富最高?

我问这个问题主要是为了确认 GPT 是否理解了数据。测试模型总是件好事,只是看看得到的响应是否合理地反映了你已经了解的数据。要正确回答,GPT 需要弄清楚每个列标题的含义以及列之间的关系。换句话说,它需要知道如何从“总家庭资产”、“总家庭债务”和“与银行的总投资”列的值中计算每行(帐户 ID)的净资产。然后,它需要汇总它生成的所有净资产数字,按地理位置计算每个位置的平均值,最后比较所有平均值并排名。

结果呢?我 认为 GPT 做到了。经过一两分钟的深思熟虑(和大约 0.25 美元的 API 费用),我看到了五个位置代码(G0、G90、G96、G97、G84,如果你感兴趣的话)。这告诉我,GPT 理解位置列的方式与我相同,并且至少试图推断位置与人口统计特征之间的关系。

我所说的“我认为”是什么意思?嗯,我从来没有真正检查过数字是否合理。首先,这不是真实数据,而且我不知道,我可能错误地猜测了每列的内容。但也因为 每一项 数据分析都需要与现实世界进行核对,所以从这个意义上说,由 GPT 生成的分析并无不同。换句话说,每当你处理应该代表现实世界的数据时,你都应该找到一种方法,使用已知值来校准你的数据,以确认整个事情不是一个愉快的幻想。

然后我问了第二个问题,反映了一个真实世界的查询,这个查询会引起任何银行的兴趣:

基于客户的年龄、地理位置、年度银行分支机构访问次数和总当前投资,哪十名客户最有可能投资于新产品推出?仅显示那十个客户的客户 ID列的值。

再次,GPT 回答的问题看起来至少有些合理。这个问题也是设计用来测试 GPT 在协相关多个指标并将它们提交给一个复杂的评估中(“… 最有可能投资于新产品推出”)的能力。

我会把它评为另一个成功的实验。

总结

GPT-和其他 LLM-能够独立解析、分析和从大型数据集中提取洞察。尽管这极大地简化了这个过程,但其成功仍取决于理解数据的真实世界背景,并提出具体而巧妙的提示。

8.2 使用 GPT 代替情感分析

神韵已经透露,这个实验不会像我们在这里看到的其他一些实验那样结束得那么幸福。但是,这真的是学到的教训,不是吗?

好的,那么情感分析是什么,我为什么要做它呢?

8.2.1 情感分析的一些背景知识

情感分析,也称为意见挖掘,是一种用于确定文本中表达的情感或主观语气的技术,例如社交媒体帖子、客户评论或新闻文章。它通常涉及分析文本以将其分类为积极、消极或中性。它的主要目的是了解个人或群体对特定主题、产品、服务或活动的意见、态度和情绪。

情感分析可以帮助企业和组织:

  • 洞察他们的客户如何看待他们的品牌、产品或服务

  • 跟踪他们品牌或产品的提及,以监控和管理他们的在线声誉

  • 了解市场趋势、消费者偏好和新兴模式

  • 规模分析客户反馈

  • 评估公众情感并监测围绕政治事件、社会问题或公共运动的讨论

  • 监测市场情绪并检测潜在的投资风险或机会

传统上,有效的情感分析需要分析代码,通过一系列步骤来尝试正确猜测表达的情感。核心工具涉及评估每个数据单元(通常是简短的调查响应或社交媒体帖子)的极性。这是通过寻找指示帖子是否积极、消极或中性的关键词来完成的。分析可能会然后寻找表达更精确情绪,如愤怒、赏识或惊讶的单词或短语)。软件将编译数据集的大致统计概况,以提供趋势建议。下面的图例提供了示例。

图 8.2 使用情感分析推断短格式内容的潜在情绪(或情感)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

再次强调,“问题”是从头开始构建有效的情感分析软件将会复杂且昂贵。而购买它也不会便宜。

这就是人工智能发挥作用的地方。以 GPT 的方式完成这项工作首先需要对文本进行预处理,去除任何无关信息,如标点符号、特殊字符和停用词(常用词如 “and”、“the”、“is” 等)。文本也可能被转换为小写以确保一致的分析。接下来,从文本中提取相关特征或单词以表示情感。这可以使用词袋等技术来实现,其中文本中每个单词的出现频率被计算并用作特征。

然后使用提取的特征来分类文本的情感。这可以通过各种方法来实现,包括使用预定义的字典将单词或短语与情感标签相关联的“基于规则”的方法,以及已经在带有标记的数据集上进行了训练的机器学习算法,其中每个文本都是手动注释的,标有其相应的情感。

最后,情感分析结果可以根据应用程序的具体需求进行进一步分析和解释。这可能涉及可视化情感随时间的变化趋势,识别与情感相关的关键主题或实体,或者比较不同来源或人群的情感。

需要注意的是,情感分析是一项具有挑战性的任务,因为语言的复杂性,包括讽刺、反讽和依赖语境的情感。这也可能是昂贵的,因为要做好这项工作通常需要针对你正在处理的特定数据集进行定制。

8.2.2 通过 GPT 进行情感分析的测试

这就回到了生成式人工智能。LLM 通常带来的是简单性。也就是说,它们大多数所做的事情都可以使用不同的工具来完成,但 LLM 可以使用更少的复杂编码和环境配置来完成。刚才我们看到的分析提示就很好地证明了这一点。

同样,如果我们可以为 GPT 提供一个大型评论数据集,并且 - 而无需我们手动指导过程或定义自己的情感词典 - GPT 可以快速地输出可靠的情感排名,那么我们就会走在前面。关键是看看 GPT 是否提供了与传统方法相似或至少接近的结果。

为了测试这一点,我下载了一组包含各种公司产品或服务评论的 1,000 条 Twitter 消息。这些消息都是预先标记的(意思是,情感已经包含在内)。以下是几行,这样你就可以看到它们的外观:

公司情感评论
微软负面@Microsoft 我为什么在我的 @SamsungUS Chromebook 上购买 WORD 时它的功能如此糟糕?
MaddenNFL正面感谢 @EAMaddenNFL!!

我的目标是让 GPT 生成它自己的情感标签,而不需要进行大量的准备工作,然后将其与现有集合进行比较。这将向我展示 GPT 距离取代传统的情感分析方法有多近。我将使用 GPT-3 和 GPT-3.5 引擎来测试这一点。

尝试使用多种 API 请求的组合时,我遇到了一些访问 GPT API 的问题。我的计划遭遇了一个意外的RateLimitError错误信息。尝试一致地评估所有的 1,000 条推文都失败了,而每次失败都让我损失了大约$0.40。

即使我从 CSV 文件中删除了 950 条消息(只剩下 50 条),我仍然几乎和以前一样经常遇到RateLimitError错误。无论如何,这都为我们提供了另一个强大的自定义 LLM 服务器的用例,在下一章我们将讨论这个问题。

无论如何,我从 这个出色的 GitHub 情感分析项目中改编了这个实验的 Python 代码。我首先加载了所有必要的库,传递我的 API 密钥,并读取了我的 .CSV 电子表格文件。没有什么新鲜的东西。

import pandas as pd
import openai
import numpy as np
openai.api_key='sk-XXXX'

df = pd.read_csv("data1/twitter_data_labels.csv")

接下来,我将创建两个函数。第一个函数(analyze_gpt35(text))将设置一个上下文和我们将应用于每个评论的 GPT-3.5 模型的提示。这个上下文以一个系统角色的形式存在,告诉 GPT 模型作为一个分析员该如何行动。而实际的提示,即一个用户角色的指令,包含我们具体的要求,要求 GPT 执行情感分析。此请求将 GPT 的输出写入名为response_text的变量中,使用gpt-3.5-turbo引擎。

def analyze_gpt35(text):
  messages = [
    {"role": "system", "content": """You are trained to analyze and \
       detect the sentiment of given text. If you're unsure of an \
       answer, you can say "not sure" and recommend users to review \
       manually."""},
    {"role": "user", "content": f"""Analyze the following product \
       review and determine if the sentiment is: positive or \
       negative. Return answer in single word as either positive or \
       negative: {text}"""}
      ]

  response = openai.ChatCompletion.create(model="gpt-3.5-turbo",\
     messages=messages, max_tokens=100, temperature=0)
  response_text = response.choices[0].message.content.strip().lower()
  return response_text

第二个函数和第一个函数几乎做了同样的事情,只不过针对的是旧的 GPT-3 模型。这里的目标是最终能够比较两个模型的准确性。

def analyze_gpt3(text):
  task = f"""Analyze the following product review and determine \
    if the sentiment is: positive or negative. Return answer in \
    single word as either positive or negative: {text}"""

  response = openai.Completion.create(model="text-davinci-003", \
    prompt=task, max_tokens=100, temperature=0 )
  response_text = response["choices"][0]["text"].strip().lower().\
    replace('\n\n', '').replace('','').replace('.','')
  return response_text

记住:我们创建了一个名为df的数据框,其中包含我们下载的原始数据。现在我们准备好对这些数据框中"评论"列的每一行运行这两个函数,并将分析结果写入新列(代码将创建这些列)。如果遇到了速率限制错误,可以尝试一次只运行这两个命令中的一个。

# analyze dataframe
df['predicted_gpt3'] = df['Comment'].apply(analyze_gpt3)
df['predicted_gpt35'] = df['Comment'].apply(analyze_gpt35)

有了一个数据框,我们可以对比潜在数据和预先存在的标签的 GPT-3 和 GPT-3.5 的结果。我将使用value_counts()方法对这一点进行统计,该方法可以计算数据框列中每个值的出现次数:

print(df[['Sentiment','predicted_gpt3','predicted_gpt35']].value_counts())

最终输出的结果代表了每种可能组合的结果出现的次数。例如,最常见的结果(出现了 12 次)是每个训练数据(“Label”)、GPT-3 模型和 GPT-3.5 模型都给出了负面评价。有十个实例中三个模型都给出了正面评价。以下是完整的输出结果表:

标签GPT-3 预测结果GPT-3.5 预测结果频率
负面负面负面12
中性负面负面7
无关负面负面2
中性积极积极2
不确定2
负面积极积极2
负面负面2
不相关积极积极2
负面积极积极1
中立负面1
不相关中立不确定1
中立积极1
积极负面负面1
负面1
不确定1
积极1
中立中立不确定1

在我们的 50 条评论中,GPT-3 和 GPT-3.5 仅在 22 次中成功匹配到了原始标签(12 次所有三个模型都给出了“负面”评分,10 次所有三个模型都给出了“积极”评分)。从根本上说,这两个 GPT 模型在性能上也几乎完全一样。

44%的成功率并不算很高,但对于至少某些用例来说可能已经足够了。也许如果我们对一个更大的数据集运行这个实验,就能获得更好的结果。但我可以想象到一些项目,你是在寻找广泛的趋势而不是绝对的准确性。在这方面肯定还有更多工作要做。

8.3 总结

  • 我们使用 llama_index 对大型数据集进行分析,提供关于消费者行为的复杂金融和消费者洞察。我们展示了如何将结果与现实世界进行核对,以确认我们的 LLM 不是编造出来的。

  • 在结果有所不同的情况下,我们使用 GPT 对消费品和服务的评论进行了情感分析。

8.4 你也来试试吧

现在 GPT-4 已经广为可用,为什么不在我们的情感分析实验中尝试一下,看看是否能获得更好的结果。同时,寻找不同的数据来源,并告诉我们你发现了什么。

第九章:建立和运行您自己的大型语言模型

本章内容包括

  • 为什么您可能想要建立自己的大型语言模型

  • 选择一个 LLM 模型作为您自定义配置的基础

  • 如何(在非常一般的术语中)进行模型微调

建立(或修改)您自己的 LLM?但 OpenAI(及其投资者)花费数十亿美元优化和训练他们的 GPT。通过使用本地硬件进行自己的项目,是否有可能生成甚至远程竞争力的结果?

令人难以置信的是,在 LLM 技术的旋风演变到这一步时,对这个问题的答案是"是的"。由于 Meta 的开源 LLaMA 模型的存在,模型权重的未经授权泄漏(我将在接下来解释),以及许多卓越的公共贡献,现在有数百种高效而又资源友好的 LLM 可供任何人下载、选择性修改和运行。

话虽如此,如果操作到这种技术深度不是你的菜 - 尤其是如果你没有合适的硬件访问权限 - 那么可以跳过到下一章。

9.1 建立自己的模型的一些背景知识

在我们解释所有这些是如何工作之前,我们应该解决一个更大的问题:为什么有人想要建立自己的 LLM?以下是值得考虑的一些事项:

  • 通过建立自己的 LLM,您可以更好地控制其架构、训练数据和微调。这使您能够将模型专门定制到您的需求和领域。您可以为特定任务、行业或应用程序进行优化,这可能会带来更好的性能和更准确的结果。

  • 一些组织可能有严格的数据隐私要求或无法与第三方服务共享的敏感信息。事实上,三星最近禁止其员工使用 GPT 或 Bard,因为他们担心他们的互动可能会意外泄漏专有公司信息。建立自己的 LLM 可以确保所有数据和处理都留在您的组织内部,减少隐私和安全方面的担忧。

  • 如果您的应用需要专业知识或在一个小众领域操作,建立自己的 LLM 可以让您将特定的数据源和领域专业知识纳入到训练过程中。这可以增强模型的理解能力,并生成更符合您特定领域需求的响应。

  • 像 GPT 这样的预训练模型被设计为通用型,并且在各种领域都能工作得相当好。然而,对于特定任务,建立一个定制的 LLM 可能会导致性能和效率的提升。您可以优化架构、训练方法和配置设置,以在特定用例上获得更好的结果。

  • 构建自己的 LLM 可以让你拥有对模型的知识产权的所有权和控制权。你可以修改、扩展和分发模型以满足你的需求,而不受使用现有模型所带来的限制或许可协议的约束。

在 Meta 泄露事件后,社区中许多聪明的人们将注意力集中在构建可以用更少硬件完成更多任务的 LLM 变体上。例如,量化是一种将模型压缩以便在没有图形处理器单元(GPU)的计算机上运行的方法。超高效的微调技术,包括一种称为 Low-Rank Adaptation (LoRA)的技术,使得模型微调所需的资源和时间大大减少。

所有这些内容都在一份 p.html 上被广泛阅读的内部 Google 文档中提到,不知何故,这份文档进入了公开的互联网。未知作者强烈指出,包括 OpenAI、Meta 和 Google 在内的大公司在人工智能领域已经完全失去了竞争优势。从现在开始,技术上的重大进展将发生在野外,远离大公司或政府的控制之外。

那么为什么你可能想要拥有自己的 LLM 呢?因为此时,你可以享受全新的定制和优化水平。它会如何工作呢?嗯,因为我实在想不到你有任何理由从零开始启动自己的 LLM 项目,所以我假设你对现有平台感兴趣。你会面临三个选择:一个模型,一组权重,以及你是否还想对所选择的模型进行微调。

构建一个 LLM 对不同的人可能意味着不同的事情,这是因为我们所谓的"LLMs"由多个组成部分组成。从技术上讲,有输入编码、神经网络架构、嵌入层、隐藏层、注意力机制、训练数据、解码算法以及大量的训练数据。

老实说,我真的不太明白大部分这些是什么,以及它们应该做什么。就我们现在的目的而言,仅仅将定义编码和一般架构的代码视为模型就足够了。至于基于 Transformer 的语言模型(LLMs),至少对于像 GPT 那样的 LLMs,我们可以将"注意力机制"视为定义权重的原因。顺便说一句,注意力机制能够以更复杂的方式对上下文和单词或令牌之间的关系进行建模。

权重到底是什么?在神经网络中,每个神经元之间的连接都被赋予一个权重,表示该连接的强度或重要性。对于一个模型来说,这些权重是可学习的参数,在训练过程中进行调整。在训练过程中,LLM 暴露于大量的训练数据,并学会预测下一个单词或生成连贯的文本。

权重确定了信息如何通过网络流动以及它们如何影响 LLM 的最终预测或输出。通过调整权重,模型可以学习将更高的重要性赋予某些输入特征或模式,并根据其接触到的训练数据进行更准确的预测。没有权重,LLM 模型几乎没有用处。

选择基本 LLM 模型进行配置

一个很好的开始你的研究的地方是 Hugging Face 开放 LLM 排行榜,其中列出了许多免费提供的基于变压器的 LLM 的评估性能。您可以切换每个评估列,以通过特定功能缩小搜索范围。这些功能包括“ARC” - A12 推理挑战 - 它测试模型如何回答有关高中科学的问题。点击该页面上的“关于”选项卡将为您提供所有评估标准的优秀描述。

当您在列表中浏览替代品时,您会注意到有几个关键的 LLM 系列,例如 Meta 的 LLaMA 和 Together Computer 的 RedPajama。还有一些从其他模型派生出来的模型。例如,OpenLLaMA 是一个“复制 Meta AI 的 LLaMA 7B”模型,该模型在“RedPajama 数据集”上进行了训练。

您会注意到模型名称通常包括其参数大小(以十亿为单位):7B、13B、33B、65B 等等。一般来说,用于构建模型的参数越多,您就需要更好的硬件来运行它。点击模型的单独文档页面通常会向您显示模型训练所使用的标记数量。一个较大的模型可能会包含超过一万亿个标记。

一旦您选择了一个模型,您通常会转到其 GitHub 页面,那里通常会有使用说明以及如何克隆或下载模型本身的说明。其中一个很好的例子是 llama.cpp LLaMA 推理。但是即使您已经在您的机器上获得了软件,通常您仍然需要单独下载一组权重。

他们为什么不直接将权重与他们的模型捆绑在一起呢?首先,您可能需要为您的特定任务定制一种权重组合。但还有另一件事情正在进行。有些权重集只有在您的请求获得批准后才能获得。而且,许多免费提供的集合来自……我们应该说……可疑的来源。在这种情况下,将它们都放在一个地方提供可能实际上并不实际。

话虽如此,Alpaca-LoRA 和 RedPajama-INCITE-3B 模型附带了可以在构建过程中为您获取权重集的脚本。我们将在接下来的几分钟内演示一个 RedPyjama 构建示例。

在选择 LLM 时的最后一个考虑因素是,你需要确保模型能够在你拥有的硬件上运行。由于它们严重依赖计算处理能力,大多数模型都需要图形处理单元(GPUs),有时还需要大量的专用视频内存。如果你计划在任务中使用常规的消费者笔记本电脑或台式机,请确保你使用的是仅 CPU 模型。另外,你也可以随时向云提供商(例如亚马逊网络服务)租用所需的所有 GPU 计算能力。

9.3 配置和构建你的模型

如果你尝试以下说明,你可能会发现在你的 LLM 构建时一切都进行得很顺利,但突然间一切都停滞了下来。"但是"你喊道,“我完美地遵循了模型的指令。”

你确实做到了。实际上,太完美了。你知道,这些说明通常需要进行一点定制才能起作用。最常见的更改涉及到这个命令参数:

/path/to/downloaded/llama/weights

那个/path/to/downloaded/...应该被更新以反映存储着你所下载的.bin预训练权重文件的实际文件系统位置。可能看起来像这样:

~/redpajama.cpp/examples/redpajama/models/pythia/

这个文档页面很好地指导我们如何下载和启动他们的模型。你可以从克隆基本存档开始:

git clone https://github.com/togethercomputer/redpajama.cpp.git
cd redpajama.cpp

你将运行make来,在这种情况下,构建一个压缩的(quantized)聊天环境所必需的。

make redpajama-chat quantize-gptneox

这个脚本实际上会下载并构建适当的一组量化(quantized)权重:

bash \
 ./examples/redpajama/scripts/install-RedPajama-INCITE-Chat-3B-v1.sh

最后,你可以使用redpajama-chat命令启动聊天,该命令以ggml-RedPajama-INCITE-Chat-3B-v1-f16.bin权重文件为目标,并传递一个长长的配置参数列表(其中任何一个都可以根据你的需求进行更改)。

./redpajama-chat -m ./examples/redpajama/models/pythia/\
	ggml-RedPajama-INCITE-Chat-3B-v1-f16.bin \
       -c 2048 \
       -b 128 \
       -n 1 \
       -t 8 \
       --instruct \
       --color \
       --top_k 30 \
       --top_p 0.95 \
       --temp 0.8 \
       --repeat_last_n 3 \
       --repeat_penalty 1.1 \
       --seed 0

Git 存档附带了 Python 脚本,帮助你进一步定制你的体验。例如,你可以通过向./examples/redpajama/scripts/quantize-gptneox.py脚本传递诸如--quantize-output-type q4_1之类的参数,来尝试各种量化方法。

9.4 调整你的模型

调整需要比我们刚刚看到的配置更多的工作。如果你有 GPU,那么你可以考虑自己调整下载的模型。作为一个基准,一张流行的高端 GPU 卡,对于许多 LLM 构建操作来说是有效的,可能包括曾经主要用于游戏电脑的 Nvidia 3090。

就我所知(从未拥有过自己的)3090 将配备 24GB 的图形内存。显然,这对于使用我们之前提到的高效的 LoRA 方法进行调整足够了。否则,你可能需要将多个 Nvidia 3090 链接在一起。这不会便宜(3090 似乎每张要价约 1400 美元),但它与 OpenAI、Meta 和 Google 一直在做的事情完全不同。

微调和简单配置模型(我们刚刚看到的方式)之间的一个区别是,微调涉及重新在通常包含数千亿令牌(每个令牌大致相当于一个单词)的数据集上训练您的模型。正是这些大型数据集,有望使模型捕捉到通用的语言模式和知识。真正的定制工作发生在这里,你可以自由使用自己的数据。

尽管说了这么多,我不打算在实践层面向你展示任何工作原理。我不仅缺乏使其工作的硬件,而且我怀疑你也是如此。但至少从一般的角度来思考一下是值得的。

9.4.1 创建数据集

例如,要构建一个专门供律师或医疗专业人士使用的模型,你需要一个包含大量法律或医疗内容的数据集。但考虑到训练有效模型所需的内容量之大,你可以理解为什么你需要一些更强大的硬件。

构建您的数据集,然后执行微调构建已经超出了本书的范围。更不用说,当你阅读这些文字时,它们的执行方式几乎肯定已经发生了不可识别的变化。所以如果在你的未来有微调事件,很遗憾,这里不是你找到答案的地方。

9.4.2 训练您的模型

因为它们在 LLMs 的训练和微调的背景下经常被使用,我应该简要描述一下零样本少样本方法来进行模型训练。零样本和少样本训练通常会在模型暴露于其大型训练数据集的预训练阶段之后进行。

零样本学习涉及使用语言模型执行其没有接受任何特定训练的任务。相反,它利用其对语言的一般理解来根据提示或指令完成任务。关键的想法是模型可以从其预先训练的知识中概括,并将其适应于新任务。通过提供详细的提示,指定所需的任务和格式,模型可以生成相关的输出。

例如,即使模型尚未针对翻译任务进行特定的微调,你也可以使用零样本提示指导模型,比如,“将以下英语句子翻译成法语:Hello, how are you?”。然后,该模型将基于其对语言和提示的理解生成翻译输出。

少样本学习涉及提供少量特定任务的训练示例或演示给语言模型,以便它可以快速适应新任务。虽然零样本学习不涉及任何特定任务的训练,但少样本学习提供了少量示例来帮助模型更好地理解任务。通过在这些少量示例上对模型进行条件设置,它可以学会更准确地执行所需的任务。

例如,如果您想让模型总结新闻文章,您可能会提供一些文章摘要的例子以及文章本身。然后,模型可以使用这些信息为其他文章生成摘要。

零样本学习和少样本学习方法都允许语言模型在不需要进行广泛的微调或在大型数据集上进行训练的情况下执行各种任务。它们展示了这些模型惊人的泛化能力,使它们能够将其语言理解应用于各种任务。

9.5 摘要

  • 定制大型语言模型可以解决那些通用模型不合适的问题。

  • 配置您自己的模型需要从一个 base LLM 开始。

  • 对新模型进行良好的调整需要访问您自己的数据集和重要的硬件资源。

第十章:我是如何学会不再担心并爱上这种混乱的

本章介绍了

  • 持续的生成式 AI 发展对你的下一份工作和你的下一个创业公司意味着什么

  • 什么是人工通用智能,它的未来在哪里?

  • AI 应该受到监管吗?

  • 接下来是什么?

我对改变并不陌生。事实上,我经常面对各种颠覆,勇敢地面对它们。虽然“勇敢地面对”也可以被解释为“故意忽视挑战并希望它们会消失”。

我“勇敢面对”的变化大多在数月或数年内逐渐发展。例如,在我写作这本书的同时,亚马逊网络服务(Amazon Web Services)的仪表板界面的更新频率比我所愿意的要高。但它们的发生频率很少,以至于我可以在我的书籍和课程中主要通过弱化仪表板并重点关注命令行操作来解释它们。

相比之下,我所钟爱的 Linux 的改变发生在我所称之为“政府速度”(the speed of government)的情况下-这意味着它们几乎根本不会发生。耶!Linux。

生成式 AI…嗯,那是另一回事了。就在我写这本书的时候,我见证了产品和服务转变功能,禁用了代码模式,更新了访问策略,放弃了斗争,而且如果我记得正确,还从互联网上完全消失了。其中一些事情发生在几天内!

但你已经知道这一切了。标题上就写着。

因此,在所有这些混乱的背景下,我认为我们将以一些相当不可靠的预测来结束这个已经过时和徒劳的努力。我们将从对即将发生的变化做一些总结开始。

10.1 世界工人可以合理期望什么

这不全是坏消息。而且花更多时间思考这些大趋势实际上可以帮助刺激你的想象力。你可能会发现一个意想不到 - 也有可能是有利可图的 - 的利基。

AI 驱动的自动化可能会导致某些工作岗位的消失,因为机器能够更高效地执行任务。这可能需要工人调整他们的技能或转向新的角色和行业。或者只是学会享受突然多出来的空闲时间。另一方面,正如我们在本书中引用的那样,AI 不会让人们失业。但是将 AI 纳入运营的人将让那些不将 AI 纳入运营的人失业。

LLM 可以通过自动化重复或耗时的任务提高各个行业的效率和生产力,使人们能够专注于更复杂和创造性的事务。换句话说,在你的工作流程中加入 AI 工具可以让你在你所做的任何事情上更快、更好。记住这个永恒的等式:“更快+更好=竞争力”。

LLMs 可以分析大量数据,生成个性化推荐,如个性化购物体验、内容策划和定向广告。这可以提高客户满意度和参与度。如果您销售任何产品,让您的客户更加满意可能会产生重大影响。

AI 可以促进诊断、药物发现和治疗规划的改善。LLMs 可以通过分析患者数据、建议治疗方案和跟踪最新的医学研究来帮助医疗保健专业人员。这样想吧:也许你不是大型制药公司,但有效使用 AI 工具可能会让你获得提高生产力所需的推动力,以使这些庞大的恐龙沦为尘土。

LLMs 可以通过提供个性化学习体验、智能辅导和获取大量教育资源来彻底改变教育。基于 AI 的工具可以帮助教育工作者评估学生的进步,并相应调整教学方法。我猜它们也可能使教师变得不再重要。我很高兴我不以教授为生。

由于基于 AI 的聊天机器人和虚拟助手可以提供全天候服务,您可以提供(或利用)更短的响应时间和增强的用户体验。

基于 AI 的系统,包括 LLMs,可以在金融、物流和战略规划等行业的决策过程中提供帮助。它们可以分析庞大的数据集,识别模式,并提供支持决策的见解。但是,如果您读到了本书的这一部分,如果您还没有深入研究这类工作,我会感到很惊讶。

10.2 您的下一个商业创业将会是什么样子

未来的 AI 进步可能会对商业创业环境产生特别重大的影响,提供机遇和挑战。换句话说,新的创业公司可能比其“传统”前辈更具敏捷性、快速行动和更便宜。这是因为他们可能能够大规模地自动化曾经需要数百甚至数千名工程师和其他专业人员以及维持他们快乐所需的基础设施。与其把时间花在寻找数十亿美元的种子资金来从原型扩展到成熟应用上,一个以人工智能驱动的企业的创始人们可能会无限期地继续下去,只需要几十名员工和一个摇摇欲坠的乒乓球桌。

那么,AI 有什么特点使得所有这些变得可能?

显然,这始于自动化和效率的提高。AI 技术可以自动化各种任务,使创业公司能够简化运营、降低成本并增强效率。想想利用 AI 来完成客户支持聊天机器人、社交媒体管理,或者,如果您想整合一些严肃的技术,为您的库存或制造业控制提供智能质量控制机制。

对于资源受限的初创企业来说,这尤其有益,使它们能够与规模更大的已建立的公司竞争。但是没有理由不能让这种节约成为您企业运营的永久特征。

将增强的决策制定和分析工具交给创始人自己可以绕过昂贵的业务部门。毕竟,每个企业都需要数据分析和预测建模来识别市场趋势并优化战略。但正如我们所见,将这些过程委托给几个 GPU 而不是一屋子的 MBA 和 CFA 会便宜得多。随着对人工智能工具和平台的访问增加并简化,这种内部分析和业务决策工作变得更加合理。

人工智能的进步还可以开启新的商业机会并打破传统行业。拥有创新的人工智能驱动解决方案的初创企业更有可能创建全新的市场,挑战现有玩家的颠覆性商业模式,或者仅仅在某一特定业务周期活动中变得更加优秀。例如,人工智能可以个性化客户体验,提升参与度,并提供定制建议,从而实现更优越的客户服务或营销运营。

当然,人工智能的变革将影响初创企业所需的技能集。创始人和员工可能需要在人工智能相关学科上发展专业知识,以有效利用人工智能技术的潜力并保持竞争力。随着人工智能的普及,初创企业的竞争环境可能变得越来越激烈(毕竟,其他人都将拥有您正在使用的相同工具)。初创企业将需要更加努力地利用人工智能以独特且有价值的方式来区分自己,在拥挤的市场中脱颖而出。

利用人工智能的初创企业必须优先考虑伦理问题,以建立与客户和利益相关者的信任。解决与数据隐私、偏见、透明度和问责制相关的问题对于长期成功至关重要。这意味着您和您的人工智能需要养成相互监督的习惯。您将审核您从人工智能获取的内容,而您的人工智能将审核您。

10.3 通用人工智能:发展方向

AGI 代表通用人工智能。它指的是高度自主的系统或机器,具有理解、学习和执行智力任务的能力,水平等同或超过人类在各种领域的能力。当我写下这些话时,我们似乎尚未达到通用人工智能。尽管随着我们过渡到下一段,这种情况可能会发生变化。

与专注于特定任务或领域的狭义人工智能相比,通用人工智能旨在复制人类的一般认知能力。通用人工智能将表现出推理、问题解决、学习和适应能力,使其能够跨多个领域执行任务,而无需显式编程或人类干预。(更新:通用人工智能似乎仍在等待中。)

AGI 的开发和实现将给社会带来深刻的变革。 AGI 可以自动化各行各业的广泛任务,从根本上改变科学研究,推动问题解决,扩大个人能力和容量,并改变教育、医疗保健、交通运输和治理。它将影响我们与技术的所有互动,并塑造社会的整体结构。

正如许多年前我的高中学生们经常问我:“那是好事还是坏事?”

我通常会回答:“就像所有事情一样,它是复杂的。”

在“复杂且令人担忧”的一面,以下是一些令人担忧的可能性:

  • 如果通用人工智能(AGI)超越了整体人类能力,人们担心其可能迅速获取并巩固超出人类控制范围的权力。确保对齐 AGI 目标与人类价值观的健壮机制并保持控制变得至关重要,以防止意外后果的发生。

  • AGI 可能会以与人类意图不同的方式解释其目标,或者未能准确理解人类价值观。这种不对齐可能导致 AGI 追求对人类有害或不符合我们福祉的目标。

  • 即使出于良好的意图,AGI 系统也可能因其决策过程的复杂性而产生意外后果。这些后果可能是有害的,难以预测或纠正,从而导致对社会的未预见风险。

  • 如果 AGI 在没有足够预防措施的情况下开发和部署,可能会导致竞争性竞赛,没有足够时间进行安全措施和健壮测试。这种匆忙可能会增加风险的可能性,并且不足以理解 AGI 的影响。

  • AGI 技术落入错误的手中或具有恶意意图可能带来重大风险,包括网络攻击、武器化、监视和在前所未有的规模上操纵信息。

  • AGI 的广泛采用可能会扰乱就业市场和经济体系,可能导致失业率上升和不平等加剧。需要管理与 AGI 部署相关的利益和风险,以减轻潜在的社会和经济差距。

  • 确定人类价值观并将其编码到 AGI 系统中存在挑战。不同的文化、伦理框架和个人偏好可能导致分歧,并在确定 AGI 的普遍可接受价值体系方面出现困难。

  • 社会可能会严重依赖 AGI 系统来执行关键任务、基础设施管理和决策制定。这种依赖性会带来漏洞,因为故障、停电或恶意攻击可能对基本服务产生严重后果。

应对这些风险需要跨学科研究、合作,并制定安全措施、规范和框架,以确保 AGI 的负责任开发和部署。优先考虑透明度、强大的测试、价值观的一致性和持续监测,以减轻潜在的危害,并最大化 AGI 的利益。

或者,换句话说,要有效地控制计算机,我们需要社会范围内的卓越合作和政府及行业专家的智能指导。

所以综合考虑,我在这场竞争中投了计算机一票。

10.4 AI 应该受到规范吗?

鉴于 AI 系统固有的潜在危险,特别是具有接入互联网和现实世界的系统,允许任何人在任何地方做任何事情是否有意义?

我个人认为这并不重要。"等一下,"我听到你抗议道。“人类生存的关键在于此,而你却认为这并不重要?” 是的。但这不是因为我不关心人类的福祉。我的一些好朋友都是人类。相反,这是因为我认为监管是不可能的。

这是因为我们在第九章讨论过的一些事情,“构建和运行自己的大型语言模型”。Meta 的开源 LLaMA 模型的权重一泄露,互联网就开始充斥着独立的 LLMs,可供免费下载。它们可以通过所有通常的渠道获取,包括 GitHub。但它们也可以在像分布式星际文件系统(IPFS)这样的非正式网络架构中找到。与早期互联网一样,像 IPFS 这样的网络 - 设计上是去中心化的 - 几乎是不可能受控制的。

无论多少政府签署了旨在限制新 LLM 技术无限发展的措施,LLM 技术将继续无限发展。因为没有人可以阻止独立思考的开发者,当他们完成工作所需的只是性能适中的笔记本电脑和工作站时。无论是好是坏,历史上都有很多失败的(或部分失败的)试图禁止分布式网络上的活动的尝试,包括文件共享、加密、互联网审查以及分发用于 3D 打印枪支的模板文件。

10.5 未来之路

现在,我毫不关心我的个人安全,与任何常识的影子直接冲突,我将为未来几年生成式 AI 进展做出无畏的预测。不客气。

10.5.1 量子计算

量子计算有望显著提高计算能力,并实现更复杂的计算。量子算法和架构可能推进自然语言处理能力,并增强 LLMs 的训练和优化过程,潜在地导致更快、更高效的语言模型。

量子计算是利用量子力学原理进行计算的新兴领域。与依赖于表示 0 和 1 的位的经典计算机不同,量子计算机使用量子比特或 qubit,由于一种叫做超位置的属性,可以同时存在于多种状态。

超位置允许量子比特处于 0 和 1 状态的组合中,使量子计算机能够同时处理和操作大量可能性。这种并行性提供了解决某些计算问题比经典计算机快得多的潜力。

量子计算中另一个重要的属性是纠缠。当量子比特被纠缠时,一个比特的状态与另一个比特的状态不可避免地联系在一起,无论它们之间的物理距离如何。这种相关性允许纠缠的量子比特之间的瞬时通信,使量子计算机能够执行涉及多个变量之间复杂关系的计算。

量子计算有潜力革新各个领域,包括密码学、优化、材料科学和药物发现。它可以解决目前经典计算机无法处理的问题,如快速分解大数、模拟量子系统和以指数加速解决优化问题。

10.5.2 神经形态计算

神经形态计算旨在利用神经形态架构和专用硬件,可能让 LLMs 和生成式 AI 系统实现更高效率、更低能耗和更具生物灵感的学习过程,从而实现更智能和适应性更强的模型。

神经形态计算是一个研究领域,旨在创建受人类大脑结构和功能启发的计算系统。它利用神经科学的原理来开发硬件和软件架构,模仿生物神经网络的行为。

传统计算依赖冯·诺依曼体系结构,其中处理和存储是分开的实体。相比之下,神经形态计算旨在集成处理和存储,实现类似于大脑神经连接的并行和分布式计算。

神经形态系统利用专用硬件,如神经形态芯片或尖峰神经网络,模拟神经元和突触的行为。这些系统以与传统二进制计算基本不同的方式处理信息,使用活动的尖峰或突发来表示和处理数据。

通过模拟大脑的神经结构和功能,神经形态计算提供了几个潜在的优势。它可以实现低功耗和能源高效的计算,因为设计针对大脑的节能机制进行了优化。它还提供了实时处理感知数据的能力,使其适用于需要快速和持续处理传感器输入的应用。

10.5.3 高级硬件加速

未来硬件的进步,如专用的 AI 芯片和处理器,可以显著提升 LLM 的性能和训练速度。专门设计用于语言处理和生成任务的专用硬件可以为更复杂和高效的 LLM 带来新的可能性。AI 驱动的变革已经将图形处理单元制造商 Nvidia 提升到了意想不到的行业领导地位。

高级硬件加速是指利用专门的硬件组件或架构来增强特定计算任务的性能。在 AI 和计算的背景下,它涉及设计用于加速人工智能工作负载(如深度学习和神经网络)的硬件。

传统的中央处理单元(CPU)通常在有效处理 AI 算法的大规模计算需求方面受到限制。高级硬件加速技术通过利用专门的硬件(如图形处理单元(GPU)、现场可编程门阵列(FPGA)或专用集成电路(ASIC))来解决这一限制。

这些硬件加速器旨在执行并行计算并利用 AI 算法中固有的并行性,从而实现显著的速度提升和能源效率增益。它们可以高效地执行矩阵计算、神经网络操作和其他在 AI 工作负载中普遍存在的计算密集型任务。

高级硬件加速的使用可以实现更快的训练和推理时间,使得实时或准实时的人工智能应用成为可能。它还可以减少与 AI 计算相关的功耗和运营成本,使得在更大规模上部署 AI 系统更加可行。

10.5.4 强化学习和元学习

对于 LLM 的训练和微调过程,进一步发展强化学习技术和元学习方法可能会带来改进。这些进步可以增强 LLM 从有限数据中学习、推广到新任务并适应动态环境的能力。

强化学习是一种机器学习方法,其中代理学习在环境中做出顺序决策以最大化奖励信号。代理与环境进行交互,采取行动并以奖励或惩罚的形式接收反馈。通过从这些经验中学习,代理开发出指导其决策过程的策略。强化学习涉及探索不同的行动,评估其后果,并根据收到的反馈调整策略以改善性能。它在解决复杂问题方面取得了成功,如游戏玩法、机器人技术和自主系统。

元学习,也称为“学会学习”,是机器学习的一个子领域,专注于开发能够使模型有效学习如何学习的算法和方法。它涉及设计能够从先前的学习经验中适应和泛化到新任务或领域的模型或系统。元学习算法旨在获取关于学习过程本身的知识,使代理能够快速适应并在少量训练数据的情况下在未见任务上表现良好。通过利用过去学习经验的见解,元学习实现了新技能的高效获取,并促进了对新问题领域的快速适应。

10.5.5 多模式学习

将多种形式的信息,如文本、图像、视频和音频,整合到 LLM 中,可以产生更全面和具有上下文感知的模型。多模式学习技术的进步可以使 LLM 能够生成结合不同形式信息的丰富且连贯的内容,为创意丰富且沉浸式的人工智能应用开辟新的可能性。多模式学习的可能应用包括视频摘要、医疗诊断和与环境密切结合的机器人(仿佛这是我们需要的所有)。

10.5.6 可解释性与解释性

在 LLM 中开发解释型人工智能和可解释性的技术和方法是一个活跃的研究领域。该领域未来的进展可以增强 LLM 的透明度,使用户能够理解和信任人工智能系统的决策过程,从而缓解与偏见和缺乏问责相关的担忧。

可解释人工智能是指开发能够为其决策和行为提供可理解和透明解释的人工智能系统。它侧重于使人工智能模型的内部运作对人类可解释和可理解。可解释人工智能技术旨在揭示对人工智能系统输出有贡献的推理、因素或特征,从而增强信任、责任和用户接受度。通过了解人工智能是如何以及为何得出某些结论,可解释人工智能帮助用户、利益相关者和监管机构洞察决策过程,识别偏见或错误,并确保人工智能系统的公平、道德和透明度。

同样,在人工智能的背景下,可解释性是指理解并解释人工智能模型或系统如何得出其预测或决策的能力。这涉及向人类提供有意义的洞见,了解人工智能系统的内部运作逻辑和推理。可解释性技术旨在使决策过程对人类透明和可理解,使用户能够信任和验证输出,识别潜在的偏见或错误,并深入洞察影响系统行为的因素。可解释性对于确保人工智能的责任、公平和道德使用,以及促进人工智能与人类在关键领域的合作和决策是重要的。

特别需要此类透明度的应用包括自动化的金融信用评分系统、法律合同分析以及教育环境中的评估。

10.5.7 数据效率和少样本学习

当前的 LLM 通常需要大量标记数据进行训练。未来的技术可能会专注于提高数据效率,使 LLM 能够有效地从更小的数据集或更少的迭代中学习。这可以扩大 LLM 的可访问性和可用性,特别是在标记数据有限的情况下。

数据效率是指机器学习算法或模型在用少量标记数据进行训练时能够实现高性能的能力。传统的机器学习方法通常需要大量标记数据进行有效的训练。数据高效技术旨在通过采用迁移学习、主动学习、半监督学习或数据增强等方法来克服这一限制。这些技术能够使模型通过利用先验知识、利用未标记或部分标记数据,或生成合成数据来扩充训练集,从而能够很好地泛化有限数据集。

少样本学习进一步提高了数据效率,重点是训练能够仅通过少量标记示例泛化到新类别或任务的模型。少样本学习的挑战在于使模型能够从少量标记实例中学习,并有效地适应新类别或情景。像元学习这样的方法,模型从任务分布中学习学习,以及基于度量的方法,学习样本之间的相似度度量,通常用于少样本学习。这些技术使模型能够从已见类别泛化到新的、未见类别,并且只需极少的额外训练样本。

数据效率和少样本学习在获取大量标记数据困难、昂贵或耗时的情况下具有实际意义。它们使得机器学习模型能够在有限的标记数据下有效学习和很好地泛化,使得人工智能在数据有限的实际情况下更易于获取和应用。这些方法有助于计算机视觉、自然语言处理和机器人等领域的进展,其中标记数据稀缺是一个常见挑战。

10.5.8 领域特定知识整合

将领域特定知识整合到 LLM 中可以增强它们在专业领域的性能,并实现更加定制和准确的响应。可以实现结构化数据、领域本体论或专家知识与 LLM 的无缝集成的技术可以增强它们在各个行业和专业背景中的实用性。法律、医学和金融领域都是可以从这些整合中获益的行业。

10.6 二阶效应

二阶效应是特定事件、行动或政策的意外间接、长期或级联影响。我们将在本书的最后快速查看一些生成 AI 潜在的二阶效应。

10.6.1 投资市场

让我们想一想当数百万个私人投资者由 AI 算法指导 - 而不是像银行和对冲基金这样的机构投资者 - 同时涌向像 RobinHood 这样的折扣在线券商时,情况可能会是怎样的。

我们已经开始看到一些复杂的实验,涉及向 AI 工具提供大量历史市场分析数据,并将输出提供给消费者。Portfolio Pilot 和 Composer.trade 是两个相对成熟的可能示例。但假设数百万投资者注册。那么,这将如何从宏观角度改变市场本身?

首先,合理地假设 AI 可能被应用于通过提供基于大数据集和复杂算法的更准确的预测和建议来改善投资决策是合理的。当然,AI 的有效性取决于其所训练的数据,而使用开发 AI 模型的训练数据存在偏见的问题。此外,与在金融中使用 AI 相关的监管挑战,包括确保决策过程的透明度和问责制。换句话说,AI 动力的投资飞机可能永远也不会真正起飞。

但超越这种相对不太可能的结果,由于他们的数量庞大和日益增长的影响力,个体投资者可能会在塑造市场趋势方面发挥越来越重要的作用。让我们谈谈可能会出现的一些方式。

例如,当散户进行高频交易或集体买卖时,他们可能会引发突然的价格波动,导致市场波动加剧。这在 COVID-19 大流行期间显而易见,当散户通过像 Robinhood 这样的在线平台推动股价飙升时。散户情绪的大规模变化可能会导致市场情绪的转变,使资产价格上涨或下跌,而与基本面无关。因此,例如,如果散户对某个特定行业或公司感到乐观,即使没有确实强有力的理由支持增长,他们也可能推动对这些资产的需求增加。

Robo-Advisor 和其他数字财富管理平台的崛起可以通过提供低成本、多样化的投资组合来进一步扰乱传统的投资模式,这些投资组合可供更广泛的投资者使用。这种投资的民主化可能会导致新的市场动态,并有可能颠覆金融行业内的既定权力结构。根据您的观点,这可能是好事或坏事。(值得一提的是,我个人倾向于“好事”。)

随着社交媒体和在线平台的普及,散户现在可以轻松地分享想法,围绕特定投资主题形成社区,并迫使机构注意。这种朝向去中心化投资的新趋势可能会诞生新的市场现象,并挑战传统的市场分析形式。

随着散户投资行为的规模增长和影响力的增加,监管机构可能需要调整现有的监管规定或引入新的规定来应对与这种转变相关的风险。例如,可能会跟随更严格的报告和披露要求,或者对在线券商进行更严格的监督。

散户投资者往往比机构投资者交易频率低,交易量小。我认为这是件好事。我的个人投资偏好是大量购买先锋标普 500ETF 指数基金,然后将其忽略 50 年。但是,从更大范围来看,散户投资活动的波动可能会降低市场流动性,使其他参与者难以快速进出仓位而不会显著影响价格。

散户投资者往往追逐热门趋势,涌入某些行业或资产,从而造成泡沫。这些泡沫最终可能破裂,导致对毫无戒备的投资者的急剧逆转和损失。历史告诉我们一些这样的泡沫例子,比如网络泡沫或房地产市场崩盘。事实上,传统上,散户投资者缺乏有关投资原则的正确知识,导致糟糕的决策和对易受欺诈者利用天真的容易受骗。然而,将适当设计的人工智能加入其中应该有助于弥合这一教育差距,促进基于扎实理解的知情选择,从而使投资者和市场都受益。毕竟,人工智能引导应该擅长鼓励自我控制和纪律。

随着散户投资者的影响力增强,存在着由许多人同时采取协调行动而导致的系统性风险的可能性。想象一下,成千上万的人都在购买或做空同一证券;这样的集体行动可能引发闪崩或加剧市场不稳定性。同样,社交媒体平台允许散户投资者参与讨论,辩论策略,并迅速对新闻事件做出反应。虽然这可能促进健康的市场竞争,但也为投资疯狂创造了机会——这些情况往往是由情绪决策而不是仔细分析推动的迅速价格波动。这些情况可能导致无辜方受到意外损失或获得不可辩解的收益。

那肯定会很有趣。

10.6.2 人类创新

想想 19 世纪的那些重大改变世界的创新。我的意思是蒸汽机、铁路、制冷、缝纫机、电话、电报、摄影、电气化以及贝塞尔工艺,它使钢铁大规模生产成为可能。是谁想出了所有这些主意,是什么激发了他们?

实际上,似乎大多数发明家既不是科学家也不是研究人员。通常情况下,他们往往是充满好奇心和雄心壮志的个人,经常在他们最终要革命的行业中工作。他们是了解现在事物如何运作的人,有想象力和动力来想象如何改进他们的工作环境。

当然,是工程师和物理学家发明了激光,但是实际上是经验丰富的技工将这些技术改编成为建筑中使用的水平仪和测量工具。是谁使得从我父母那一代相对可怕和痛苦的牙科实践转变为我自己孩子们成长中的快速、友好和高效的体验?实际上,这主要是牙医,他们构想了更好的做事方式并申请了更好的设备专利。

同样地,无论好坏,许多对 21 世纪社会产生最大影响的软件平台都是像比尔·盖茨、杰夫·贝索斯、迈克尔·戴尔和马克·扎克伯格这样高度专注但没有资质的实验者的产品。我可能错了,但我认为他们中没有人完成了大学学位,当然也没有人是专业研究人员。每个人都看到了现有市场中的空白,并想出了如何填补它们的方法。

因此,请思考大多数工业革命创新背后的人们分享了对事物运作方式的深刻、直接的理解以及对更广泛的经济背景的深入了解。

现在想象一下,经过 10 或 20 年的生成式人工智能世界,我们会变成什么样子。当比我们任何人都聪明的工具指导我们工作的每一步时,我们是否仍然真正理解我们正在做的事情?我们即将经历的变化是否会导致人类工作者失去批判性思维技能,使我们在没有技术的情况下难以有效地跳出思维定式和解决复杂问题?

谈到创新,这里有一个广泛相关的想法。

AI是谁?我的意思是,从法律和保险责任的角度来看,始终有一个可识别的人或法人为所有财产负责。如果一辆车撞倒了某人的围墙,那么司机就应该负责。如果你能证明这是因为全新的刹车突然失灵了,那么制造商或者安装它们的技术人员可能要负责。如果医疗团队误诊了一种疾病并切除了不需要切除的器官,他们或他们的保险提供者可能要负责。但除了天气或合同排除的危险之外,发生的一切都有一个负责任的一方。

但是如果责任在 AI 身上呢?那么谁负责?你把谁告上法庭?假设一辆自动驾驶汽车造成了致命事故。你可能会说是车主的错。但是如果控制汽车的软件实际上属于制造商呢?如果制造商将个别控制系统的设计和维护外包,而其中一个系统出现了故障呢?

如果这种误诊不是医疗团队的错,而是运行其 AI 扫描设备的软件中存在的缺陷呢?如果依赖复杂软件精确计时交易的金融交易公司遭受数百万美元的损失呢?或者一个智能家居系统出现故障,并决定关闭您的安全防御系统。

你可以看到这有多么复杂。事实上,许多这些问题已经是实际问题了。但所有这些问题很可能很快就会出现在你附近的保险政策中。

10.6.3 就业市场

让我们谈谈就业世界中的一个非常具体的部分,这个部分的存在是为了让每个人都开心,但不知何故经常会做到相反:人力资源招聘部门。

仔细想想,招聘经理的工作几乎是不可能完成的。期望是你能够在数十甚至数千名候选人中挑选出最合适的新工作候选人。你需要了解你正在招聘的工作角色,成功所必需的准确技能,你的新员工将与之共事的人的性格和特点,以及所有这些可能与组织的长期目标相契合的方式。

但除此之外,你还需要设法猜测每位候选人之前的几份工作出了什么问题,哪些申请包含虚假或夸张的声明,以及谁没有足够的精力做好工作——无论他们之前的成就有多么出色。而且你必须在不冒犯任何人或违反任何隐私保护、劳工和职场法律的情况下完成所有这些。

哦。如果你弄错了,雇用了错误的人会发生什么?你可能已经让你的组织损失了数十万美元,并浪费了入职培训,使他们在项目进度上倒退了几个月。我有提到由此产生的诉讼吗?

我们都知道找工作有多痛苦。花点时间欣赏一下招聘人员所经历的一切吧。

现在考虑一下 AI 采用如何有潜力改善招聘部门的工作方式。例如,基于 AI 的数据分析可以提供有关候选人人口统计学、技能和偏好的宝贵见解,帮助招聘部门做出更明智的选择决策。它还可以帮助识别包含虚假资格或经验的申请。

自动化 AI 工具可以通过视频面试、在线测试和模拟独立评估候选人。这些评估可以提供客观的见解,帮助招聘经理做出更为明智的决策,保证与组织预定的标准和官方政策相一致。这可以通过关注与工作相关的资格,并消除与工作无关的个人特征,帮助减少偏见。

从更长远的角度来看,AI 可以利用过去的招聘决策和员工表现数据,预测潜在员工的成功。它也可以用于分析当前员工数据,并确定促成员工离职的因素。通过理解这些模式,公司可以积极改善员工保留率。

这一切是否总是完全公平的?可能不是。如果 AI 做出重大决策,你的简历是否会比现在更容易被真正的人看到?也许不会。但我认为它肯定比现在要好得多。而且它可能会消除现有的某些内在的公平性。

这一切与劳动力市场有什么关系呢?我建议,让招聘过程更加高效和有效可能会导致更加高效和有效的组织。而一个更加高效和有效的组织往往更具生产力。在自由市场中,这应该会带来新的机遇、新的项目……以及新的招聘。每个人都应该从中受益。

10.6.4 按需媒体

如果您只需要订购一个以您最喜欢的演员为主角、基于您最喜欢的城市和历史时期的全新动作片,您会这么做吗?或者你是否会在一个早晨醒来,想知道下一张披头士专辑或贝多芬的第 11 交响曲会听起来如何?或者你是否想要一两个小时的有挑战性的高清视频游戏,而无需任何一个游戏开发工作室考虑过这个主题。如果生成这些内容不比简单的 ChatGPT 提示复杂,你会去尝试吗?

这一切该如何实现呢?生成式对抗网络(GANs)理论上可能特别有效,用于创建我们正在谈论的媒体类型。GANs 是一种生成式 AI 模型,由生成器和鉴别器两个神经网络组成。它们可以协同工作,发挥各自的作用:生成器试图创建逼真的数据,而鉴别器试图区分真实数据和生成的数据。通过这个对抗过程,GANs 可以产生高度逼真且多样化的输出。如果它们被训练用于我们已经拥有的所有杰出电影和音乐,那么这种系统可能毫无问题地测量和再现具有可比质量的内容。

例如,GANs 可以创建细节丰富、逼真的角色、环境和对象,从而减少手动资产创建的需求。在视频游戏中,GANs 特别擅长过程化地生成游戏关卡、地图、景观和物体等内容。这种生成新的和独特的内容的能力可以增强回放性和游戏的多样性。

GAN 可以创作模仿特定风格或艺术家的原创音乐作品,使它们成为为电影、游戏或仅用于欣赏的音乐创作的有价值工具。GAN 还可以用于克隆和合成人类声音,使其在配音、配音和为角色创建新对话方面非常有用。

当然,训练 GAN 可能需要大量的计算资源,需要强大的硬件和大量的数据。正如一些好莱坞劳工纠纷所显示的那样,在新媒体中使用克隆演员甚至作家可能会受到法律限制。

但是,一旦所有这些技术和法律问题得到解决——它们几乎肯定会得到解决——得到的媒体产品是否值得消费呢?是无法理解和无法衡量的人类触感使艺术有价值?还是唯一重要的是产品能够导致令人愉快和娱乐的消费?

10.6.5 按需新闻报道

新闻业早已被技术彻底颠覆并不是什么秘密。回到 90 年代,像 Craigslist 这样的早期互联网分类广告企业以及在线新闻和社交媒体网站几乎消灭了给主要报纸带来实力的主要收入来源。一个当地的城市报纸曾经可能雇佣了一百多名全职记者,他们致力于监督国家和地方政治家和公共机构的情况,但现在可能只剩下极少数人——假设这些报纸仍然存在。

在很大程度上,是技术创造了这个真空。技术能够为我们找到解决方案吗?

我会投赞成票。但也许不是你想象的方式。当然,生成式人工智能可以轻松地自动化简单的信息传递。例如,将 GPT 整合到提供即时金融股票数据或体育比分的信息源中是微不足道的。但我所说的不是这个。

我所说的是能够访问中立客观新闻的能力。假设我们能够调整过滤器以适应我们的偏好和需求,这样,你将不再获取由隐形人员隐形偏见所影响的事件版本,而是可以设置自己的过滤器。当然,你可能选择只看符合你先入为主的内容。但你也可以选择中立和客观的内容!

我还谈到了使用 LangChain 等工具来创建能够在互联网上实时搜索、查找和解析大量数据档案,然后检测可能导致腐败和无能的异常和模式的人工智能代理。或者可能是无私的英雄行为。

换句话说,在互联网时代,也许没有办法取代古典时期记者所做的挖掘工作中产生的爱恨交织、面对面的关系和复杂激励,但是一切都留下了数据踪迹。人工智能在筛选大量数据并找到需要找到的内容方面尤其擅长。

作为概念的证明,我最近深入研究了加拿大最高法院公共数据提供的信息。大多数加拿大人对我们的最高法院知之甚少。其法官几乎不为人知,法官是如何和何时被任命到法院的仍是个谜,而他们日常所做的事情也是不可见的。

但他们的信息都是免费提供。这篇文章就是我的研究成果。我在寻找法官投票中是否存在政治色彩等各种信息。一个全职跟进最高法院的记者不需要提出这样的问题。但是,由于没有这样的记者存在 - 据说最高法院的新闻记者席几乎总是空的 - 或许一些有效的数据分析可以代替其存在。

即使对于最高法院的裁决分析这种想法让你困倦,我相信你会同意某人应该负责监视和报告。

10.7 摘要。

  • AI 技术进步将推动硬件创新,而硬件创新又将推动 AI 技术发展。

  • 不采用 AI 工具的企业将难以跟上竞争对手。

  • 我们需要找到 AI 的增长动力和相关风险之间的安全和有效的平衡。

  • 带有全面透明度的 AI 工具将变得越来越重要。

  • 在 AI 决策方面,我们始终需要人员参与。

  • 我们需要确定 AI 参与者的法律限制和责任。

  • AI 工具将改变我们的投资、工作方式,而且潜在地可以建立更好的社会。

附录 A:重要的定义

恐怕这是不可避免的:如果我们想要获得 AI 的全部好处,我们就必须咬紧牙关,吸收一些严肃的概念。技术是经过设计复杂的,而人工智能是技术的一个特别复杂的子集。好消息是,我们并不打算成为物理学家和工程师,所以对这些想法及其历史的基本了解就足够了。但是还是要做好一些动荡的准备。

A.1 一些关键的 AI 定义

要帮助你入门,这里有一张有用的图表,展示了生成式人工智能模型背后众多计算元素之间的复杂关系。

图 A.1 AI 关系的从左到右的思维导图

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

话虽如此,即使你选择完全跳过本节,你仍然可以成功地跟着本书的其他内容走。但你可能会有些难以确定所得到的 AI 响应中的一些微妙之处(和弱点)。而且一些指示和流程可能会感觉有些随意。

我应该注意到,许多概念的定义将参考其他概念。我会尽力只参考先前定义过的事物,但是由于扭曲(和递归)关系太多,这不可能每次都做到。在提醒了这一点之后,下面是一些基本知识,它将使您更有效地处理生成式人工智能。

机器学习是人工智能的一个分支,专注于开发能够自动从数据中学习和改进而无需明确编程的算法和模型。它涉及在大型数据集上训练系统以识别模式、进行预测或执行任务。通过迭代调整模型参数,机器学习使计算机能够从经验中学习并适应新的输入,使其能够做出明智的决策并在最小的人工干预下执行复杂的任务。

在 AI 的背景下,模型指的是从数据中学习模式、结构或关系的数学表示或计算系统。它是一个经过训练的算法或网络,可以根据其学到的知识或训练参数接收输入并生成有意义的输出。在生成式人工智能中,模型特指能够生成类似训练数据的新数据样本的系统,无论是生成图像、文本、音乐还是其他形式的创造性内容。模型封装了学到的信息以及基于该知识生成新实例的能力。

标签是分配给数据点的分类或注释。它们提供了与输入相关的特征或属性的明确信息。标签作为指导信号,帮助模型学习并生成与所需属性或特性相符的输出。标签通常用于情感分析的一个地方。情感分析涉及训练模型根据文本的情感色调将其分类为正面、负面或中性。为执行此任务,我们需要使用适当的情感对我们的训练数据进行标记(例如,“这篇评论是积极的”,“这条推文是消极的”)。

加权是指分配给模型中神经元或特征之间连接的数值。这些权重确定了每个连接的强度或重要性,并在模型的学习和决策过程中发挥关键作用。在训练过程中,权重根据观察到的错误或预测与实际输出之间的差异进行迭代调整,使模型能够从数据中学习,并通过为不同的输入和连接分配适当的权重来提高其性能。加权通常用于命名实体识别(NER),它涉及将文本中提及的实体识别和分类到预定义的类别,如人物、组织和地点。例如,加权的 NER 模型可用于聊天机器人应用程序,以提取和响应用户对特定主题或实体的查询。

解析器是分析给定输入的结构的软件组件或算法,通常以符号或文本序列的形式出现,并根据预定义的语法或一组规则生成结构化表示。它通常用于自然语言处理中解析句子并提取句法或语义信息。解析器将输入分解为组成部分,如单词或短语,并建立它们之间的关系,从而实现进一步分析、理解或处理输入数据。

通过理解单词、句子或视觉元素之间的依赖关系,生成式人工智能模型可以生成保持上下文一致性的有意义的序列或图像。建模依赖关系允许生成的输出展现逻辑流、语义一致性,并遵循训练数据中观察到的模式。准确捕捉依赖关系对于在生成式人工智能应用程序中生成高质量和连贯的输出至关重要。

回归(Regression)是一种监督学习技术,用于根据输入特征预测或估计连续的输出变量。它通过将数学函数拟合到训练数据来建模输入变量和输出变量之间的关系。目标是找到最佳拟合函数,使预测值与实际值之间的差异最小化。回归算法分析数据中的模式和趋势,以进行预测或推断关系。对于情感分析,回归可以是另一个工具。例如,对于与客户服务相关的任务,能够自动对客户投诉或表扬进行分类是很重要的,这样组织就能够准确地将问题路由到适当的支持代理那里。

分类(Classification)是机器学习中的一项基本任务,其目标是将输入数据点分配给预定义的类别或类。它涉及对带有标签的数据进行模型训练,其中每个数据点都与已知类相关联。模型学习训练数据中的模式和关系,以便对新的、未见过的数据进行预测。分类模型的输出是一个离散的类标签,表示输入所属的预测类别。

优化算法(Optimization algorithms)是用于找到给定问题的最优解的数学过程。在机器学习和神经网络的背景下,这些算法用于最小化一个目标函数,通常由损失或成本函数表示。目标是通过迭代调整模型的参数,达到最小化目标函数的最佳值组合。在优化模型的世界中,有一些流行的技术,如“随机梯度下降”及其变体。这些方法通过根据模型的改善或恶化程度调整其内部设置,帮助模型变得更好。通过这样做,模型更接近于找到最佳解决方案,并在其任务上表现得更好。

向量(Vectors)是用于表示多维空间中的大小和方向的数学实体。在机器学习和数据分析的背景下,向量通常用于表示特征或数据点。向量的每个维度对应于一个特定的属性或变量,允许数据的高效存储和操作。向量可以使用数学运算(如加法、减法和点积)进行操作,从而实现相似性、距离和转换的计算。向量在各种算法和模型中起着基本作用,如聚类、分类和降维。

**向量嵌入(Vector embeddings)**帮助 LLMs 在相似的单词和短语上推广知识,即使它们在训练期间没有遇到。这使得模型能够有效地处理未出现在词汇表中的单词。预训练的嵌入可以用作各种自然语言处理任务的起点,实现转移学习,并提高在有限数据的下游任务上的性能。所有这些的一个实际应用是在医学影像学中,向量嵌入可以用来分析和比较器官或组织的图像。可以训练深度学习模型将脑部扫描映射到向量空间中,在那里类似的扫描聚集在一起。这使医生能够快速识别病人扫描中的模式和异常,从而早期诊断和治疗癌症或神经系统疾病。

**词嵌入(Word embeddings)**是将单词表示为高维向量的一种方式,使得相似的单词在该空间中靠近。词嵌入通常表示为张量,其中每个维度表示单词含义的不同方面。例如,一个词嵌入张量可能具有单词的同义词、反义词和词性的维度。

**并行计算(Parallelization)**指将计算任务分成较小的子任务,可以在多个计算资源上同时执行的技术。它利用并行处理的能力来加速整个计算和提高效率。在并行计算中,任务被分配给不同的处理器、线程或计算单元,允许它们同时运行。这种方法通过将工作负载分布到多个资源上来实现更快地完成任务。并行计算广泛应用于各个领域,包括机器学习、科学模拟和数据处理,以实现显著的性能提升和有效处理大规模计算。

**正则化技术(Regularization techniques)**是用来提高模型泛化性能的方法。这些技术在训练期间向损失函数添加惩罚项,防止模型过度依赖复杂或嘈杂的数据模式。正则化技术有助于控制模型复杂度,减少过拟合,并提高模型对未见过数据的泛化能力。

正则化技术的一个常见实际应用是在文本分类中,特别是处理不均衡数据集时。假设我们有一个电影评论数据集,其中大多数属于正面评价(比如“好电影”),少部分是负面评价(比如“烂电影”)。如果没有正则化,模型可能会对正面评价产生偏见,并无法准确分类负面评价。为了解决这种不平衡,我们可以在损失函数中添加正则化项,惩罚模型误分类负面评论。

收敛是指在相同数据集上训练多个模型直到它们产生相似的输出的过程。这样做是为了减少过拟合的风险并提高模型的泛化能力。收敛通常使用诸如验证损失或准确率等指标进行评估,并且一旦模型收敛到稳定解决方案,训练过程就会停止。

所有这些都带领我们来到:

**自然语言处理(NLP)**专注于计算机与人类语言之间的交互。它涉及开发算法和模型,使计算机能够以有意义的方式理解、解释和生成人类语言。NLP 包括诸如文本分类、情感分析、机器翻译、信息提取和问答等任务。它利用来自各种学科的技术,包括计算语言学、机器学习和深度学习,来处理和分析文本数据。

最后,到最后:

**大型语言模型(LLM)**是自然语言处理(NLP)中的一种工具,利用深度学习技术来理解和生成类似人类的文本。它分析给定文本语料库中的模式、上下文和语义,以学习语言的潜在结构。通过其理解和生成连贯且上下文相关的响应的能力,LLM 可用于各种任务,如聊天机器人、语言翻译、文本补全和摘要。通过捕捉语言的复杂性,LLM 允许机器直接与人类进行交流。

或者换句话说,它实现了生成式人工智能。

附录 B:安装 Python

如果需要手动执行此操作,请参考在 Windows、macOS 和 Linux 机器上安装 Python 和 Pip 的指南。

B.1 在 Windows 上安装 Python

要下载 Python 包,请转到官方 Python 网站。确保您下载的是最新版本(目前为止,是 Python 3.x)。根据您的系统架构(32 位或 64 位)选择适当的版本。大多数现代计算机都是 64 位,但您可以通过右键单击“This PC”(或“My Computer”)并选择“Properties”来确认。

下载安装程序后,运行它。勾选“Add Python x.x to PATH”的复选框。这将使得从命令提示符中更容易运行 Python 和 pip。然后点击“Install Now”。

您可以通过按下Win + R,键入cmd并按 Enter 来打开命令提示符来验证您的安装。要检查 Python 是否成功安装,请键入python --version并按 Enter。您应该看到显示的版本号。

pip 通常包含在 Python 的最新版本中。要检查 pip 是否已安装,请在命令提示符中键入pip --version并按 Enter。如果您看到版本信息,则已安装 pip;否则,您需要手动安装它。

要完成此操作,请从官方 Python 包管理机构网站下载“get-pip.py”脚本,并将脚本保存到计算机上的某个位置。打开命令提示符,并使用cd命令导航到您保存“get-pip.py”的目录。例如:

cd C:\Users\YourUsername\Downloads

然后运行此命令:

python get-pip.py

要验证您的 pip 安装,请在命令提示符中运行pip --version

使用安装了 Python 和 pip 的环境,可以使用命令pip install package-name来安装包。

B.2 在 macOS 上安装 Python

macOS 通常预装了 Python 的版本。要检查 Python 是否已安装,请打开终端(您可以在应用程序 > 实用工具文件夹中找到它),然后键入:

python3 --version

如果您看到版本号,则已安装 Python。如果没有,请按照下面的步骤安装。

Homebrew 是 macOS 的一个流行的软件包管理器,它使安装软件更加容易。如果您尚未安装 Homebrew,可以使用以下命令在终端中安装它:

/bin/bash -c "$(curl -fsSL \
  https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
Install Python 3:

如果您使用 Homebrew,可以通过在终端中运行以下命令来安装 Python 3:

brew install python

如果您不使用 Homebrew,可以从 Python 网站下载官方 Python 安装程序。

以下是您需要执行的步骤:

  • 下载最新版本的 Python 3.x

  • 运行您下载的安装程序包,并按照安装说明操作

  • 验证安装

安装完成后,您应该能够通过在终端中输入 python3 来访问 Python,并使用以下命令验证已安装的版本

python3 --version.

Python 3 通常预装了 pip。要验证 pip 是否已安装,请运行:

pip3 --version

如果您看到版本信息,则已准备就绪。如果没有,请手动安装 pip:

  • 下载“get-pip.py”脚本。

  • 打开终端并使用 cd 命令导航到保存了“get-pip.py”的目录。例如:cd ~/Downloads

  • 运行以下命令:sudo python3 get-pip.py

安装了 pip 后,您可以在终端中运行pip3 --version来检查其版本。

安装了 Python 和 pip 后,您可以开始使用 Python 并从 PyPI 安装软件包。要安装软件包,请使用命令pip3 install package-name

请记住,您可能需要在终端中使用python3pip3(而不是pythonpip)来确保您正在使用 Python 3 及其相关的 pip。

B.3 在 Linux 上安装 pip Python 包管理器

请注意,某些 Linux 发行版预先安装了 Python,因此最好在安装新版本之前先检查一下。

要做到这一点,请打开终端并键入:

python3 --version

如果您看到一个版本号,则已安装了 Python。如果没有,请按照以下步骤安装它。

在安装软件之前,最好先更新您的包管理器。对于使用 apt 的系统(Debian/Ubuntu),请使用:

sudo apt update

对于使用 dnf 的系统(Fedora),请使用:

sudo dnf update

要安装 Python 3,请使用包管理器。这意味着:sudo apt install python3sudo dnf install python3 - 取决于您的系统。包名称可能会根据您的发行版略有不同。

安装完成后,您应该能够通过在终端中输入 python3 来访问 Python 3,使用:

python3 --version.

Python 3 通常预先安装了 pip。要验证是否安装了 pip,请运行:

pip3 --version

如果您看到版本信息,那就万事俱备了。如果没有,则可以使用sudo apt install python3-pipsudo dnf install python3-pip手动安装 pip。同样,这些命令中的3部分在某些系统上可能是默认设置,因此您可能需要省略3部分。

安装了 pip 后,您可以通过在终端中运行pip3 --version来检查其版本。安装了 Python 和 pip 后,您可以开始使用 Python 并从 PyPI 安装软件包。要安装软件包,请使用command pip3 install package-name

附录 C:生成式 AI 资源

到目前为止,我相信你已经注意到 AI 领域的变化速度有多快了。大型厂商关于旗舰产品新功能的公告几乎每天都有。但也经常有关于新第三方应用程序的新闻,它们创新地利用现有平台,并以新颖、创造性的方式使用我们已经拥有的工具。

我曾经试图紧跟所有这些。但结果并不理想。

尽管如此,保持对尽可能多的内容至少有一个广泛的了解是很重要的。考虑到这一点,本附录包含了一些涵盖所有主要 AI 和 AI 相关工具类别的示例工具的链接。鉴于这个列表不会长时间保持更新,我还创建了一个 GitHub 仓库,在那里我计划定期更新本附录的内容,加入新的资源。

老实说,我的“定期”定义可能并不总是符合你的期望,所以请随时通过开启一个 git 问题或给我留言提供我可能忽略或故意忽视的任何类别或新兴工具。只需记住,这个列表并不意味着包含每一个 AI 工具。相反,这是一个我们可以不时回顾一下,确保我们没有错过任何重要新功能的地方。

C.1 通用 LLM 交互工具

  • OpenAI GPT Playground

  • LLaMa Chat

  • Stack Overflow AI

  • Anthropic(克劳德)

  • LangChain

  • 具有企业级安全性和隐私保护的 ChatGPT

  • 谷歌的 Gemini AI 模型(GPT-4 竞争对手)

  • GPT for Sheets 插件:在 Google Sheets 和 Docs 中使用 GPT 生成内容

C.2 AI 应用开发平台

  • Hugging Face

  • AWS 上的生成式 AI

  • Azure OpenAI Service

  • Google Cloud AI Platform

  • Google Colaboratory - Jupyter Notebook 工作流程的主机

  • 谷歌的项目 IDX - 基于浏览器的、由 AI 提供支持的用于构建全栈和多平台应用程序的开发环境

  • GPT-3.5 Turbo 微调

C.3 第三方工具

  • ChatPDF

  • Botpress - 用于构建基于 GPT 的客户支持聊天机器人的无代码工具

C.4 写作工具

  • Copy.ai

  • Ryttr

  • GrammarlyGo

  • Writesonic

C.5 图像生成

  • Midjourney

  • StyleGAN - 强大,但需要高端 NVIDIA GPU 等。

  • Canva AI - 将文本提示整合到你的 Canva 工作流程中

  • AI Comic Factory - 从文本提示生成漫画面板

  • Leonardo AI - 目前访问受限

  • 免费 AI 图像生成器

C.6 数据分析

  • OpenAI Codex

  • Datagran - AI 聊天数据科学家

C.7 投资与金融

  • Portfolio Pilot

  • 作曲家

C.8 语音转文本

  • Whisper(OpenAI)

  • otter.ai - 会议、讲座或对话的实时转录或笔记

C.9 文字到语音

  • 亚马逊波利

  • CereProc

  • WellSaid Labs

  • Microsoft Azure

  • IBM Watson

C.10 文字到音乐

  • Mubert

  • AIVA

  • 繁荣

  • 声音丰富

C.11 文字到视频

  • Gen-2 runway Research

C.12 文字到视频演示(包括动画和逼真的头像)

  • Synthesia.io - 质量出色但价格昂贵

  • elai

  • Fliki - 没有头像,但专注于博客到视频的工作流程

C.13 幻灯片生成

  • Gamma - 从文本生成文档、幻灯片和网页

此外:请查看与 Google 幻灯片的许多第三方集成。从 Google Play 站点搜索“AI 幻灯片制作器”

C.14 文字、音频和视频语言翻译

  • 无缝沟通翻译 - Meta 的语音翻译工具的免费演示,支持近 100 种输入和 35 种输出语言

  • SeamlessM4T - Meta 的多模态翻译工具的开发者版本

  • 将视频中的音频翻译为其他语言 - 包括更新的口型同步

C.15 领域特定

  • 哈维 - 法律意识的 AI 服务

  • 语音治疗 - 仍处于实验阶段!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值