| 关于   英文版   «  8.1. 第 7 周:SQL   ::   目录   ::   10.1. 第 8 周:HTML、CSS、JavaScript  »

9.1. 人工智能

9.1.1. 欢迎!

  • 在计算机科学和编程领域,橡皮鸭调试法 或 橡皮鸭调试 是指向一个无生命物体倾诉,以便 逐步梳理 诸如代码中的错误等棘手问题。

  • 最近,CS50 在 CS50.ai 创建了我们自己的橡皮鸭调试器,它利用人工智能(AI)与学生互动,帮助他们解决各自的棘手问题。

  • 使用此工具的学生可以开始理解人工智能能为世界带来的潜力。

9.1.2. 生成式人工智能

  • 众多人工智能工具使得人工生成的图像进入现实世界成为可能。

  • 直到几年前,这些工具大多存在许多破绽,可能让观察者察觉图像是由人工智能生成的。

  • 然而,这些工具在生成此类图像方面正变得愈发出色。

  • 事实上,随着技术进步,不久之后,仅凭肉眼几乎(如果不是完全的话)将无法检测出此类图像。

  • 生成式人工智能可用于创建照片、视频、音乐和文本。

9.1.3. 提示词工程与 Copilot

  • 提示词工程 是个人向人工智能提出优质问题的方式。

  • 我们使用 系统提示 来教导人工智能如何与用户交互。我们通过此类提示教导人工智能如何与学生协作。

  • 用户提示 是由用户提供用于与人工智能交互的提示。学生借助这些提示与人工智能进行交互。

  • chat3.py

    我们可以在代码中按如下方式实现:

    # Adds to system prompt.
    
    from openai import OpenAI
    
    client = OpenAI()
    
    user_prompt = input("Prompt: ")
    system_prompt = "Limit your answer to one sentence. Pretend you're a cat."
    
    response = client.responses.create(
        input=user_prompt,
        instructions=system_prompt,
        model="gpt-5"
    )
    
    print(response.output_text)
    

    你可以使用 python chat.py 运行此代码。你可以下载此代码 here

  • 生成式人工智能也可用于生成代码!此类功能能够增强你作为一名不断成长且训练有素的程序员的能力。

  • Copilot 就是这样一种代码生成工具。在 CS50 课程中,除课程自有工具外,我们不允许使用生成式人工智能。CS50 在我们的学术诚信政策中为学生提供了明确指导,说明了哪些属于 合理 与 不合理 的 AI 使用方式。

9.1.4. 人工智能

  • 人工智能已经伴随我们数十年!软件长期以来一直在适应用户。算法在垃圾邮件过滤、手写识别、电影和视频推荐生成以及游戏对弈中寻找模式。

  • 例如,在游戏中,逐步指令可以让计算机对手玩打砖块游戏。

9.1.5. 决策树

  • 决策树 被算法用来决定做出何种决策。

  • 例如,在 Breakout 中,算法可能会根据代码中的指令来考虑做出何种选择:

    While game is ongoing:
      If ball is left of paddle:
        Move paddle left
      Else if ball is right of paddle:
        Move paddle right
      Else:
        Don't move paddle
    
  • 对于大多数游戏,它们会尝试最小化与玩家对抗所需的计算次数。

9.1.6. Minimax(极小极大)

(译者注: Minimax 是一种算法,用于在棋盘游戏中确定最佳走法。它通过模拟所有可能的走法并计算每种走法的得分。在所有可能的选项中,选择一个能够使最大的损失或代价最小化的策略就是 Minimax。)

  • AI 通常擅长游戏,因为它将走法和结果简化为数学值。

  • 你可以想象算法如何将结果评分为正、负和中性。

  • 在井字棋中,AI 可能将电脑获胜的棋盘视为 1 ,而将电脑失败的棋盘视为 -1 。

  • 你可以想象计算机如何查看潜在结果的决策树,并为每个潜在走法分配分数。

  • 计算机将通过最大化自身得分来尝试获胜。

  • 在井字棋的上下文中,算法可以将此概念化如下:

    If player is X:
      For each possible move:
        Calculate score for board
      Choose move with highest score
    
    Else if player is O:
        For each possible move:
            Calculate score for board
        Choose move with lowest score
    
  • 这可以图示如下:

    tictactoe with outcomes as 1 or -1 or 0

  • 由于计算机功能强大,它们能够处理海量的潜在结果。然而,我们口袋中或桌面上的计算机可能无法为日益复杂的游戏树计算数万亿种选项。这正是机器学习可以发挥作用的地方。

9.1.7. 机器学习

  • 机器学习是一种计算机通过强化进行学习的方式。

  • 计算机可以学习如何翻煎饼。

  • 计算机可以学习如何玩“地板是熔岩”游戏。

  • 计算机反复进行一次次试验,以发现哪些行为应重复、哪些不应重复。

  • 在许多基于人工智能的算法中,存在 探索与利用 的概念,即人工智能可能会随机尝试一些未必被认为最优的行为。随机性可能带来更好的结果。这可以用如下代码表示:

    epsilon = 0.10
    
    If random() < epsilon:
        Make a random move
    Else:
        Make the move with the highest value
    

    请注意, epsilon 表示随机性的速率。

9.1.8. 深度学习

  • 监督学习 是一种基于人工智能的学习形式,其中人类与人工智能协作。例如,你可以在电子邮件客户端中点击“垃圾邮件”按钮,以教导人工智能识别哪些邮件应被视为垃圾邮件。

  • 然而,监督学习难以很好地扩展到更大的问题。因此,无监督学习 是一种让人工智能在极少人工干预下进行学习的方法。

  • 深度学习 使用神经网络来探索问题及其解决方案。

  • 例如,深度学习可能会尝试预测图表上的某个位置会出现蓝色还是红色的点。请考虑以下图像:

    blue dots and red dots separated by a line

  • 现有训练数据用于预测结果。此外,人工智能可能会创建更多训练数据以发现更多模式。

  • 深度学习创建节点(如下图所示),将输入与输出关联起来。

    Nodes connected to nodes

9.1.9. 大语言模型

  • 大语言模型 (LLM)是基于海量训练数据进行预测的庞大模型。

  • 就在几年前,人工智能在完成和生成句子方面表现并不出色。谷歌在 2017 年发表了一篇论文,阐述了如何让这些人工智能的 注意力 聚焦于不同词汇之间的关系。

  • 生成式预训练 Transformer(简称 GPT)是针对词汇间关系进行训练的。

  • 人工智能将词汇编码为 嵌入 以发现词汇间的关系。因此,通过海量训练,庞大的神经网络能够预测词汇间的关联——这使得生成式人工智能具备生成内容甚至与用户对话的能力。

  • 有时,LLM 会产生 幻觉 并提供错误信息。

9.1.10. 总结

在本课中,你了解了 CS50.ai 背后的一些技术。具体来说,我们讨论了…

  • 生成式人工智能

  • 提示词工程

  • 人工智能

  • 决策树

  • Minimax

  • 机器学习

  • 深度学习

  • 大语言模型

这就是 CS50!

   «  8.1. 第 7 周:SQL   ::   目录   ::   10.1. 第 8 周:HTML、CSS、JavaScript  »

关闭窗口