第二周 AI 学习总结:从“调参侠”到“数据侦探”

112 阅读8分钟

引言

经过第一周的“AI 小白”初体验,这周我正式升级为“调参侠”和“数据侦探”!从多元线性回归到 XGBoost,从数据缺失处理到 Agent 开发,我的大脑像一台过载的 GPU,疯狂运转。虽然偶尔会冒出“我是谁?我在哪?”的哲学问题,但总体来说,这周的学习让我对 AI 的理解又深了一层。以下是我的学习总结,希望能用幽默的方式带你一起走进 AI 的世界。


一、本周学习概览

1. 吴恩达机器学习:从“线性”到“非线性”

  • 多元线性回归: 多个参数变量一起上,模型复杂度直接拉满。
  • 梯度下降: 数据不归一化?成本函数像过山车,收敛慢得像蜗牛。
  • 学习率: 调小了像乌龟爬,调大了像脱缰野马,画个成本下降曲线才是王道。
  • 逻辑回归: Sigmoid 函数登场,把线性结果变成概率,分类问题轻松搞定。
  • 过拟合与正则化: 模型太复杂?L1 和 L2 正则化来帮忙,防止模型“记答案”。

2. Kaggle Learning:从“数据侦探”到“代码魔术师”

  • 数据缺失处理: 删除、插补、增加标识列,插补法是我的最爱。
  • 分类数据编码: 序号编码、One-Hot 编码,种类太多?One-Hot 编码会爆炸。
  • Pipeline 机制: 缺省值处理、分类数据转换,一行代码搞定,代码量直接减半。
  • 交叉验证: 多次训练,切分数据集,模型评估更靠谱。
  • 数据泄露: 训练数据偷偷混入测试数据?模型准确率高得离谱,实际效果却拉胯。

3. DeepSeek 交流:从“Agent 开发”到“XGBoost 解密”

  • Agent 开发: 不用 Agent 开发像写 if-else,用了 Agent 像请了个智能助手。
  • XGBoost: 梯度提升 + 弱学习器,迭代多次,模型效果直接起飞。
  • 逻辑回归: Sigmoid 函数把线性结果变成概率,分类问题轻松搞定。
  • 正则化: L1 和 L2 正则化,防止模型“记答案”,L2 是我的首选。

二、核心知识详解

1. 吴恩达机器学习:从“线性”到“非线性”

  • 多元线性回归: 多个参数变量一起上,模型复杂度直接拉满。
  • 梯度下降: 数据不归一化?成本函数像过山车,收敛慢得像蜗牛。
  • 学习率: 调小了像乌龟爬,调大了像脱缰野马,画个成本下降曲线才是王道。
  • 逻辑回归: Sigmoid 函数登场,把线性结果变成概率,分类问题轻松搞定。
  • 过拟合与正则化: 模型太复杂?L1 和 L2 正则化来帮忙,防止模型“记答案”。

2. Kaggle Learning:从“数据侦探”到“代码魔术师”

  • 数据缺失处理: 删除、插补、增加标识列,插补法是我的最爱。
  • 分类数据编码: 序号编码、One-Hot 编码,种类太多?One-Hot 编码会爆炸。
  • Pipeline 机制: 缺省值处理、分类数据转换,一行代码搞定,代码量直接减半。
  • 交叉验证: 多次训练,切分数据集,模型评估更靠谱。
  • 数据泄露: 训练数据偷偷混入测试数据?模型准确率高得离谱,实际效果却拉胯。

3. DeepSeek 交流:从“Agent 开发”到“XGBoost 解密”

  • Agent 开发: 不用 Agent 开发像写 if-else,用了 Agent 像请了个智能助手。
  • XGBoost: 梯度提升 + 弱学习器,迭代多次,模型效果直接起飞。
  • 逻辑回归: Sigmoid 函数把线性结果变成概率,分类问题轻松搞定。
  • 正则化: L1 和 L2 正则化,防止模型“记答案”,L2 是我的首选。

三、我的思考与理解

1. Agent 开发的优劣

  • 不用 Agent 开发:
    就像写一堆 if-else 语句,手动解析用户输入,判断逻辑分支,再调用不同的工具完成任务。比如用户输入“计算 2+2,然后搜索一下 AI”,你得自己写代码拆分输入、调用计算器和搜索引擎,最后整合结果。这种方式虽然直观,但代码冗长,逻辑复杂,而且不够智能。比如如下代码
  def handle_request(user_input: str) -> str:
     if "计算" in user_input and "搜索" in user_input:
         # 提取计算部分
         calc_part = user_input.split(",")[0].replace("计算", "").strip()
         calc_result = calculator(calc_part)
         
         # 提取搜索部分
         search_part = user_input.split(",")[1].replace("然后搜索一下", "").strip()
         search_result = search(search_part)
         
         # 整合结果
         return f"{calc_part}{calc_result}{search_part} 是:{search_result}"
     else:
         return "无法处理该请求。"
  • 用 Agent 开发:
    像请了一个智能助手,内置的 Prompt 会自动解析用户输入,决定使用哪些工具,并推动整个流程。比如 LangChain 的 Agent,它会根据用户输入自动调用计算器、搜索引擎等工具,完全不需要你手动写 if-else。
    优点: 代码简洁,逻辑清晰,扩展性强,新增工具只需简单配置,Agent 会自动学习如何使用。针对流程不固定,场景适合使用,或者工具与工具之间能自由组合场景,如果工具和工具之间有依赖,流程比较固定,这种场景还是适合不使用agent方式,硬编码流程比较好。

2. ReAct 策略的具体体现

  • ReAct 策略是什么?
    ReAct 是一个方法论,核心思想是:思考 -> 行动 -> 观察。Agent 会根据当前任务,先思考下一步该做什么,然后采取行动,最后观察结果并调整策略。

  • 具体体现:
    在 LangChain 的 Agent 中,ReAct 策略被封装在 Prompt 里。比如,当用户问“计算 2+2,然后搜索一下 AI”,Agent 会按照以下步骤执行:

    1. 思考: 用户需要先计算 2+2,再搜索 AI。
    2. 行动: 调用计算器工具计算 2+2,得到结果 4。
    3. 观察: 检查计算结果是否正确。
    4. 思考: 接下来需要搜索 AI。
    5. 行动: 调用搜索引擎工具搜索 AI。
    6. 观察: 检查搜索结果是否合理。
    7. 返回结果: “2+2 是 4。AI 是:人工智能是……”

    总结: 只要 Prompt 中明确要求 Agent 按照 思考 -> 行动 -> 观察 的步骤完成任务,就可以认为使用了 ReAct 策略。


3. XGBoost 的预测原理

  • XGBoost 是什么?
    XGBoost 是一个基于梯度提升的集成学习算法,通过组合多个弱学习器(通常是决策树)来提升模型性能。

  • 预测过程:

    1. 初始模型: 先训练一个简单的模型(比如一棵浅层决策树)。
    2. 计算残差: 用初始模型预测结果,计算预测值与真实值之间的残差。
    3. 训练弱学习器: 基于残差训练一个新的弱学习器。
    4. 更新模型: 将新学习器的预测结果加到初始模型上,更新模型。
    5. 重复迭代: 重复上述过程,直到达到预设的迭代次数或模型性能满足要求。
  • 最终预测:
    预测时,XGBoost 会将所有弱学习器的预测结果累加,得到最终预测值。比如:

    • 第一棵树预测结果为 10。
    • 第二棵树预测结果为 2。
    • 第三棵树预测结果为 -1。
    • 最终预测结果为 10 + 2 - 1 = 11。

    优点: 通过多次迭代,XGBoost 可以逐步修正模型的错误,提升预测精度。


4. 正则化的作用

  • 正则化是什么?
    正则化是一种防止模型过拟合的技术,通过在损失函数中加入惩罚项,限制模型参数的大小。

  • L1 和 L2 正则化:

    • L1 正则化: 在损失函数中加入参数的绝对值之和。L1 正则化会让某些参数压缩到 0,从而实现特征选择。
    • L2 正则化: 在损失函数中加入参数的平方和。L2 正则化会让参数接近 0,但不会完全为 0。
  • 为什么 L1 能让参数压缩到 0?
    L1 正则化的惩罚项是参数的绝对值之和,优化过程中,某些不重要的特征对应的参数会被压缩到 0,从而减少模型的复杂度。


四、未解之谜

1. 正则化 L1 如何让某些参数压缩到 0?

  • 问题: L1 正则化为什么能把某些参数压缩到 0?
  • 猜想: 可能是 L1 正则化的“绝对值”特性导致的,但具体原理还需要进一步研究。

五、总结与下一步计划

1. 本周总结

  • 理论学习: 多元线性回归、逻辑回归、正则化等核心概念。
  • 实战经验: 数据缺失处理、分类数据编码、Pipeline 机制、交叉验证等。
  • 交流收获: Agent 开发、XGBoost 算法、ReAct 策略等。

2. 下一步计划

  • 深入学习: 继续学习吴恩达的课程,了解支持向量机、神经网络等算法。
  • 更多实战: 尝试 Kaggle 上的其他项目,如图像分类、自然语言处理。
  • 分享与交流: 将学习笔记和项目经验分享到博客或社区,与更多人交流。

结语

第二周的 AI 学习让我从“调参侠”升级为“数据侦探”,虽然偶尔会陷入“正则化 L1 为什么能把参数压缩到 0”的未解之谜,但总体来说,收获满满。希望通过持续的学习和实践,我能在 AI 领域走得更远。如果你也对 AI 感兴趣,欢迎一起交流学习!