序言
不知道你有没有这样的感觉,人工智能(AI),这个几年前还显得遥远且充满科幻色彩的技术,突然间就进入了我们的工作和生活中。对于AI的到来,有人欢喜有人忧。科技悲观者认为AI会取代人类,导致大量失业;而科技乐观者则认为AI会创造许多新的工作机会,帮助人类摆脱重复性和低效的工作。我觉得这两种说法都有道理。AI会完全取代人类吗?我认为不会!但在AI时代,不善于运用AI的人将被那些精通AI技术的人取代,而深度融入AI的企业也将淘汰那些停留在前AI时代的竞争对手。对于创业者来说,AI的出现将重构产业的成熟度图谱,带来许多新的机遇。整体而言,"AI赋能"(AI-enabled)这个词将如同十年前讨论移动互联网一样,充满了无限可能和魅力。对个人来说,我们也要成为一个"AI赋能"的人。AI不仅能提升我们学习新知识的效率,还能帮助我们构建系统化思维,实现多元发展,打破传统的“一万小时定律”。未来,越来越多的“一人团队”将凭借AI的力量,完成过去需要大型团队才能实现的目标。
那么,我们应该如何迎接这个时代的到来呢?首先要弄清楚什么是AI。很多人提到AI,往往是通过一些零散的网络信息,或者所谓专家的抖音30秒短视频了解的。这类信息,看得再多也难以真正理解AI,它只能让我们停留在最表面的应用层面上。这也是为什么我下定决心要写这本《非专业人为更不专业人写的AI框架课》。之所以强调“非专业”,是因为我自己也并非计算机专业出身。就在一年前,我还是个AI小白,但通过一年的学习,和“GPT-4老师”的帮助,我花了几个月的时间逐字逐句肝出了这篇框架课程。正因为我曾经是初学者,我更能理解大家在学习AI时的困惑,并据此设计了这门课程的框架和深度。
我称这门课为“框架课”,因为我的目标是帮助大家建立AI领域的元认知。想想,如果你连某个事物的存在都不知道,你又怎么去学习它呢?所以,这门课将为大家提供一个AI底层逻辑的整体框架。虽然每个领域不会深入到特别复杂的技术层面,但理解这些底层原理后,在未来应用AI时,你会清楚它的优势和局限,从而更好地将AI应用到实际工作和生活中。如果你是组织的领导者,这门课程还将帮助你了解AI相关技术的发展趋势,帮助你在规划AI与业务的融合,或者寻找AI人才时,你不会对这个话题感觉到陌生。
关于这个课程的框架,我选择了三个最具代表性的板块:机器学习、自然语言处理和深度神经网络。为什么是这三个?首先,机器学习是所有现代人工智能的底层逻辑。就像我们在学习一元二次方程之前,必须先掌握加减乘除的基础运算。其次是自然语言处理,它是这波人工智能浪潮的重要代表之一。2022年底,GPT的推出让我们看到了一个能够理解和生成自然语言的高阶技术,这也是为什么它最初被称为ChatGPT(‘Chat’就是‘聊天’的意思)。有了自然语言处理能力,AI就能把人类的语言知识体系和应用有效连接起来。许多原本依赖于机器学习的AI应用,经过自然语言处理的加持,变得更加智能化。最后是深度神经网络,它是深度学习的一个核心算法架构。此次自然语言处理能力的突破,正是由于深度学习架构的优化。因此,这三个板块虽然看似独立,但实际上它们都代表着这次AI浪潮中最核心的底层技术。
过去十年,我一直在医疗行业工作,因此课程中的很多AI应用案例都与医疗健康相关。这些案例都是日常生活中常见的场景,所以大家也比较容易理解。但事实上,课程里的案例也适用于各行各业,我之所以选择医疗作为例子,是因为它具有代表性;无论你来自哪个行业,这门课程都会为你提供有价值的学习路径,帮助你在自己的领域中应用AI技术。
在正式开始课程前,我建议大家先注册并使用一些公共AI平台。如果你懂得“魔法上网”,可以直接使用OpenAI的GPT-4o(最推荐);如果没有这个条件,可以考虑Kimi智能助手(在咨询方面非常好用),或者抖音的豆包App(一个强大的社交智能体平台)。在过去的两年里,各大公司都推出了自己的AI产品,它们有的作为独立App存在,有的则已经融入硬件设备中(比如iPhone新推出的Apple Intelligence)。很多已经开始走特色或细分市场,我建议大家都去试一试。
最后,我想提醒大家,接下来的内容可能会涉及到一些数学、生物学和计算机的知识,不过大部分都不会超过高中水平。当然,考虑到我们很多在学校学的知识早已还给老师了,所以建议大家结合自己喜欢的AI软件进行学习,效果可能会更好。你也可以延展学习自己感兴趣的相关话题,这种开放式的学习方式不仅能带来更多乐趣,还能更好地掌握知识。希望大家能喜欢这个框架课所带来的各种可能性。
备注:正文中黑色文字为必读知识点。深蓝色文字为进阶阅读,大多是对基础原理的阐述。在第一次阅读时如果觉得犯困,可以暂时跳过蓝字部分。有了后面的一些知识基础,再回来读前面蓝字的时候就会更容易理解。
第一模块 机器学习的基本原理
人工智能(AI)是什么?
在讨论人工智能之前,我们先来铺垫一些基础概念,这样能帮助我们更好地理解AI的含义。
算法是什么
首先讲讲人工智能里面一个很核心的概念 —— 算法。
大家不要因为听到“算法”这个高大上的词而望而退却。其实算法的底层逻辑大家很都很熟悉:大家还记得咱们初中就学过的这个一元二次方程吗?方程式本身就是一种算法,“f(x) = x²”这个方程就是一个算法规则。我们可以通过了解"x",算出”y"这个数,反之亦然。这种将信息从一种状态(x),通过算法的规则转化成另一种形式(y),我们称之为“信息处理”(Computation)。信息处理的规则就是算法。
我们再换一个类型的算法,比如辨认一只猫,我们需要什么样的算法?
根据以往的经验,我们已经对猫的特征有了深入的认识。在辨识过程中,我们的算法通过对每一项特征进行存在与否的判断,最终形成一个结果,即确定目标是猫还是其他动物。以下采用的是一种叫“决策树”的模型:
上述两个例子虽然不直接代表现代人工智能的具体算法,但其底层逻辑是类似的。我们可以通过设置一些规则——无论是方程式还是特征识别——将一种数据通过“计算”,转变成另一种形式来表达。利用好这个过程,我们就能实现我们所谓的“智能”。”
智能
“智能”的定义:是指解决复杂问题的能力。
人工智能的定义:是指人类创造的智能技术,它的主要目标是解决问题,尤其是那些传统上需要人类智能才能完成的任务。不过,AI不一定要模仿人类的思维或行为。
智能的本质:智能的核心是“信息处理”(Computation),即把一种形式的信息转换成另一种形式。比如,自动驾驶汽车通过摄像头或雷达收集环境信息,使用特定的算法将这些信息转换成驾驶指令,让汽车自动行驶。
人工智能算法
- 规则算法(Rule-based System):这种算法使用预先设定的“如果...那么...”(if...then...)规则来处理信息。它适合处理有明确规则的问题,但对复杂情况(如语言翻译)效果不佳。过去规则算法主要是有人工来设定的,也是最初AI的底层逻辑。
- 搜索算法(Search Algorithm):这种算法通过评估所有可能的解决方案来找到最佳答案。早期的象棋游戏就是用这种方式来运作的,但随着问题复杂度的增加,搜索过程会变得极其耗时,无法处理像围棋这样复杂的游戏。
- 机器学习(Machine Learning):机器学习是现代AI的核心之一,它通过分析大量历史数据,找到规律,从而预测或解决新问题。
不同的AI算法决定了它解决问题的方式,上面提到的三种算法是经典且易于理解的代表性算法,它们也衍生出了一些更复杂的变种。比如,专家系统(Expert System) 是在规则算法的基础上加入推理能力,强化学习(Reinforcement Learning) 则是在机器学习中引入奖励和惩罚机制,帮助AI系统通过反馈进行自我优化。除了这几种算法外,还有许多其他算法,这里就不一一展开了。
要更好地理解现代人工智能如何运作,我们可以从机器学习的基本原理入手。
机器学习原理
那么刚刚提到算法是什么,那么算法从哪里得来的呢?对于人工智能来说,其中一个很重要的方式叫做“机器学习”(Machine Learning,简称ML)。机器学习的本质是通过分析大量历史数据,找到事物的规律(如之前提到的方程式),从而对新的问题进行预测。
回归问题预测
还记得我们在学校学过的统计学图表吗?
当我们知道两组数据存在线性相关关系(无论是正相关还是负相关),就可以使用线性回归算法计算出一条最佳拟合线。具体这根线怎么算出来(将数据点变成直线的方程)的在这里我就不展开了,但是有了这个方程式,我们就能够通过 x 值(房屋面积),预测出对应的 y 值(房价)。
所谓最佳拟合线,就是算出最小化所有数据点和最佳拟合线之间的残差,也就是使预测值与实际值之间的差距尽可能小。
当然,数据之间的关系不一定总是线性的,还有更复杂的情况(如非线性关系),这里不做详细讨论。但它们的基本原理是相似的:通过学习已有数据之间的关联关系,进行回归分析,找到最佳拟合线,然后根据这条线对新的数据进行预测。
机器学习在处理回归问题时,采用了类似的方式。它通过学习历史数据中变量之间的模式,进而对未知数据进行预测。这种预测不仅限于数值,还可以应用于文字生成、图像识别等任务。即使是非数值特征的预测,其准确性同样可以通过统计方法来评估。因此,机器可以通过不断尝试不同的算法(自主进行探索和试错),来减少预测与实际结果之间的差异,从而提高人工智能的准确性。
用专业的术语来说,机器学习模型会通过某种优化算法,例如梯度下降,不断调整模型参数,以最小化损失函数(类似于上面所提到的RSS最小化)。
分类问题预测
分类问题简介我们来看另一种预测问题——分类问题。以糖尿病诊断为例,假设我们已经积累了大量关于糖尿病患者和非糖尿病患者的诊断数据,其中有两个关键指标与糖尿病诊断密切相关:空腹血糖和糖化血红蛋白。在机器学习中,我们不需要事先设定“这些指标达到某个数值就是糖尿病”,而是将这些特征(如空腹血糖和糖化血红蛋白)及对应的诊断结果(阳性或阴性)提供给机器学习模型,让它自己找出其中的规律。
分类图表的解释为了更直观地展示这个过程,我们可以通过图表来帮助理解。
下图中展示了两种分类器:
- 左边展示的是线性分类器。它通过一条直线将数据分为两类,适用于类别边界较为清晰的情况(即数据点之间的分界线很明确)。
- 右边展示的是复杂分类器。它能画出更复杂的边界,适合用在类别边界模糊、无法用简单直线分割的情况下。
备注:
- X轴:表示糖化血红蛋白的数值
- Y轴:表示空腹血糖的数值
- “+”和“-”代表糖尿病的诊断结果,分别为阳性和阴性。
尽管这两种分类器表现不同,底层逻辑相同:通过定义边界来区分不同类别,例如判断某人的空腹血糖和糖化血红蛋白值是否指向糖尿病。当有新的病人数据时,AI模型可以根据这些数据点的位置来预测患者是否患有糖尿病。
设计机器学习的注意事项
输出(结果)的产生是有潜在规律性的,而不是随机无序的。完全没有规律的数据无法用于预测。
- 找到相关的特征(feature),也就是我们的输入条件,尽量的包括全面。现代算法可以找出非关联的特征,并将其排除在算法之外。但是算法无法识别那些那些没有被囊括进来的特征数据。
- 机器学习所需要是标记过的数据。标记的目的是你希望算法未来所做出判断是什么。没有明确标记的数据没法直接用于训练(机器不知道你要用来干嘛)。比如说几万人的体检数据,没有标记之前是无法用于算法训练的。但是如果我们将这几万人的体检数据进行人工标记,比如哪些体检报告检查出有问题,那么机器学习就能未来新的体检报告中自动筛出问题报告并推送给相关人员。
- 机器训练是一个持续迭代的过程,我们不能将刚训练出来的算法就当“终极产品”。我们需要通过预测结果和实际结果的对比来检验它的准确度,比如说疾病预测。如果算法的预测并不准确,那么我们就要考虑算法的优化或者高质量标注数据的补充。
机器学习的方式区别:监督学习、自监督学习、无监督学习
机器学习的核心是通过分析大量历史数据,总结出规律,并形成一种算法。这种算法能够将输入的特征信息转化为我们想要的预测结果。就像一位有经验的医生,可以根据患者的病情数据(特征),做出诊断并提供治疗方案。
监督学习(Supervised Learning)
很多时候,机器学习需要大量人工参与。我们将这种需要人类干预和指导的学习方式称为监督学习。它的主要特点是依赖于标注好的数据,即数据的输入和对应的正确答案(标签)都已经明确。例如,在医学图像诊断中,医生需要手动标注图像中是否存在病灶,机器学习模型才能通过这些标注学习如何识别疾病。监督学习中人工参与的几个关键步骤:
- 特征提取(Feature Extraction):人工干预的重要环节之一是从原始数据中提取出对模型有用的特征。特征可以是体检中的血压、血糖值等,或是图像中的特定结构。特征提取的目的是简化数据,去除冗余信息,让模型更容易学习。
- 数据标记(Data Labeling):监督学习依赖于大量的标注数据。比如,在医疗场景下,需要医生或专家对患者数据进行标记,比如诊断结果、病症的类型等。标记的数据帮助机器识别输入与输出的关联性。
- 形成结构化数据(Structured Data):机器学习模型通常需要结构化的数据来进行有效的学习。这意味着数据要以表格或明确的格式呈现,比如在患者病历中,将年龄、性别、病史等信息以结构化的形式提供给模型进行学习。监督学习在医院端的实践:在实际的医院场景中,传统的机器学习模型往往面临数据格式多样化的问题。医院信息系统(HIS)中的数据包含了自然语言的病历、医学影像、检验数据等,它们存储在不同的系统和格式中。由于这些数据缺乏统一的格式,模型很难直接从中提取相关信息。这使得数据清洗和整理成为耗时费力的过程,往往需要大量人工介入才能为机器学习提供可用的结构化数据。近年来,随着自然语言处理(NLP)技术的飞速发展,特别是像GPT这样的预训练模型的应用,处理患者的电子健康记录(EHR)变得更加高效。这些模型能够自动“理解”病历中的自然语言信息,并将其转换为机器学习所需的结构化数据,从而大大减少时间和人力成本。然而,目前在医疗领域,完全实现无监督学习仍面临较大挑战。
自监督学习和无监督学习
自监督和无监督学习的主要区别:为了减少人工的参与,目前新兴的机器学习采用了两类不依赖人来做标记的学习方法,他们分别是自监督学习和无监督学习。二者在适用领域和设定目标上有所不同。区别在于是否有明确的任务目标。自监督学习通过让模型生成伪标签来进行有目的的训练,常用于NLP中的语言模型预训练。而无监督学习则是通过发现数据的内在结构和模式来进行学习,适用于数据挖掘和探索任务。
自监督学习(Self-supervised Learning)
自监督学习可以在没有大量标注数据的情况下自动找到数据中的规律。它通过让模型在数据上生成自己的标签和答案,也就是通过模型自己创建的“伪标签”进行学习。自监督学习的具体方式比较抽象,但我们可以尝试看看,还是很有趣的:
之前提到,机器学习的目标是通过对过往数据的学习,不断优化算法,从而对新的问题做出更准确的预测。在自然语言处理(NLP)中,自监督学习通常使用大量的通用数据集进行训练。这些通用数据集包含了各种类型的文本信息,如文章、书籍等,通用并非专门为某个具体任务设计的。自监督学习的一个常见方法是随机掩盖文本中的部分内容,然后让模型根据上下文预测被掩盖的词。这类似于“填空题”:模型根据周围的词语(即上下文)来预测被遮蔽的词是什么,接着将模型的预测与实际答案进行比较。这里,上下文可以被看作是输入的特征,而被掩盖的词是需要预测的结果。由于数据集本身包含正确的答案,模型可以自动评估其表现,并根据反馈调整和优化自己的算法。
谷歌的BERT和OpenAI的GPT模型都是基于这种“自问自答”的自监督学习方法来实现的。通过这种方式,模型能够在没有人工标注的情况下,通过对大量文本的分析和推理,学会理解和生成语言,从而获得强大的语言处理能力。
自监督学习的应用领域:目前,自监督学习主要应用于自然语言处理和图像识别。在这些领域,自监督学习能够处理大量无标注的文本或图像数据,自动生成有意义的标签,进而提高模型的学习能力和预测精度。
无监督学习(Unsupervised Learning)
无监督学习则是完全不依赖数据标记的学习方式。模型不需要知道数据的“正确答案”,而是通过分析数据本身的特性来找到模式或结构。这使得它在数据量巨大、难以标注的场景下非常有用。
发现潜在模式:无监督学习可以自动发现数据中的隐藏模式,甚至揭示出一些未知的规律。例如,在聚类任务中,模型可以帮助识别数据中的自然群组或类别,而无需预先定义类别。例如,在医学中,医生可以通过无监督学习的模型发现某些患者数据中的隐藏规律,比如新的疾病亚型或患者群体的相似特征。
机器学习实践中的需要考虑的问题
在应用机器学习时,有几个重要的现实问题需要仔细考虑。尤其是现代机器学习通常需要处理非常庞大的数据集,这不仅需要耗费大量的人力,还需要巨大的计算资源。因此,以下几个方面必须在开始项目之前慎重评估:
成本与收益:不同的机器学习,由于其用途和训练方式不同,训练成本差异很大。因此我们需要考虑它在应用领域的商业价值,也就是启动前要对项目进行经济可行性评估。
数据可操作性:除了经济成本,我们还要考虑项目的技术可操作性。以医疗机构的AI诊断为例,AI模型的成功实施往往面临以下几个挑战:
- 结构化数据的缺乏:医院中的数据往往以不同的形式存在,如病历是文字描述,影像是图像文件,检验结果是报告格式等。这些数据分散在不同的系统中,缺乏统一的结构化管理。为了使用这些数据训练AI模型,必须有人手动整理、标注和结构化处理这些数据。这不仅费时费力,还需要医疗专业知识,普通医疗机构可能没有足够的专业人员来执行这项任务。
- 数据量不足:虽然一家医院可能有很多患者数据,但对于某些特定疾病,可能没有足够多的高质量数据来训练模型。特别是对于一些罕见病种,单家医院的数据量往往不足以构建一个可靠的AI诊断模型。像医疗诊断这种复杂且容错率低的领域,需要大量高质量的训练数据才能获得有效的预测能力。
- 数据完整性问题:在中国,患者往往在不同的医疗机构就诊,且这些机构之间没有统一的电子健康记录系统(EHR),导致数据分散,不完整。而在欧美国家,许多地区通过政府或保险公司统一管理的EHR系统,确保了跨机构的患者数据完整性。在中国,由于缺乏这种统一的系统,获取全面、连续的高质量数据变得更加困难。
- 其他挑战:除了上述技术性问题,还有其他因素需要考虑。例如,医院之间的数据共享不仅需要技术上的配合,还涉及行政审批和法律监管。AI在医疗领域的应用目前在许多国家都有严格的法律和伦理限制,必须确保合规。
学习曲线
由于机器学习的成本高昂,因此,在做数据训练时,我们需要关注“学习曲线”的效率变化(如下图所示)。尽管预测模型可以通过增加更多相关数据来提高精度,但这种改善的速度会逐渐放缓。因此,我们需要通过比较输入和输出结果的准确率,来确定多少量级的训练数据就能达到“足够好”的预测效果,而不是盲目地增加数据量。
上图可见:机器学习改善曲率随数据量增加而下降,之后再提升数据量无法显著提高预测准确率,可能需要改进算法本身或提高标记数据质量。
传统机器学习的六个步骤
机器学习是通过让计算机从数据中学习规律并进行预测的技术。虽然听起来很复杂,但它的工作流程其实可以分为六个关键步骤。以下是一个关于乳腺癌复发风险预测的实际案例,帮助说明这些步骤。
1. 样本选择:首先,我们从医院的数据库中筛选出乳腺癌病理报告。这些报告不仅要包含患者的初次诊断信息,还需要有后续的跟踪记录,以便我们知道哪些患者复发了。通过这样的样本选择,我们可以确保模型有足够的相关信息来学习。
2. 识别信息并建立数据集:在选择了样本后,我们会分析病理报告,提取出与复发风险相关的关键信息。这些信息实体可能包括病理分级、肿瘤大小、淋巴结状态、受体状态(如HER2、ER、PR阳性或阴性)等。我们将这些信息整理成一个结构化的数据集,每条记录既包含这些特征信息,也包含患者是否复发的结果。
3. 人工标注:由于病理报告的格式多样化,计算机难以直接提取所有相关信息。此时需要由医学专家对报告进行人工标注,确保每条数据中提到的关键特征都被准确地识别和分类。如标注每份报告中的肿瘤特征是否与患者复发有关系。这一步为机器学习提供了标准化的训练数据。
4. 构建算法:一旦训练数据准备好,我们可以选择合适的机器学习算法来构建预测模型。这个模型通过学习报告中各项特征与患者复发风险之间的关系,来做出预测。常见的机器学习算法包括随机森林、支持向量机(SVM)和神经网络(后面会重点覆盖)等。
5. 优化算法:模型初步训练完成后,我们会用一个单独的验证数据集来测试模型的性能。如果模型表现不够理想,我们可能需要调整模型的参数,或尝试不同的算法,进一步优化它的准确性和泛化能力。这一步的目标是提高模型在未见过的数据上的表现。
6. 检测算法:最后,我们用一个独立的测试数据集来评估模型的预测效果。这个数据集和训练模型时使用的数据完全不同,目的是验证模型在真实世界中的表现。如果模型能够准确预测新患者的复发风险,它就可以作为医生评估工具的一部分,辅助临床决策。
总结来说,传统机器学习需要大量的手动操作,从数据的选择、标注,到算法的训练和优化,每一步都需要人类的深度参与。此外,这一流程的前提是我们有大量高质量、相关性强的数据。尽管这个过程繁琐,但它可以为复杂任务(例如预测乳腺癌复发)提供有力的支持。
未完待续...
全文一共4个模块,本文为第1模块。