15 行代码教 AI 开灯关灯:用神经网络做"聪明的节能管家"

不靠规则,不写 if-else,只靠"试错 + 奖励",让 AI 学会智能控制灯光。
这就是强化学习(Reinforcement Learning) 的魅力!


💡 问题:灯,到底该什么时候开?

你家的灯还在手动开关?
或者用"有人就开,没人就关"的简单逻辑?

但现实更复杂:

  • 白天有人,但阳光充足 → 不用开灯,省电!
  • 深夜有人,房间很暗 → 必须开灯,体验优先!
  • 没人的时候 → 灯开着就是浪费!

能不能让系统自己学会在各种情况下做出最优决策?

答案是:能!用强化学习 + 神经网络。


🤖 我们的目标:训练一个"智能灯控 AI"

它要能看懂三个信息(状态,State):

  1. 是否有人(红外传感器)
  2. 当前光照(光敏电阻)
  3. 现在几点(系统时钟)

然后决定一个动作(Action):

  • 开灯(1)关灯(0)

而它的"老师",只通过一个数字——奖励(Reward) 来告诉它:

"你刚才做得好,+1 分!" 或 "浪费电了,-0.3 分!"

久而久之,AI 就学会了省电又贴心的策略。


🧠 核心思想:用神经网络代替人工规则

传统做法:写一堆 if-else

if 有人 and 光照 < 阈值:
    开灯
else:
    关灯

强化学习做法:让神经网络自己学这个"阈值"和"逻辑"!

输入状态 → 神经网络 → 输出每个动作的"预期收益"(Q值) → 选收益最高的动作

这就是 Deep Q-Network(DQN) 的精髓。


💻 极简代码演示(仅 20 行核心)

import torch, torch.nn as nn, random, math

# 【神经网络:Q函数逼近器】
model = nn.Sequential(nn.Linear(3, 16), nn.ReLU(), nn.Linear(16, 2))
optimizer = torch.optim.Adam(model.parameters(), lr=0.01)

hour = random.randint(0, 23)

for step in range(2000):
    # 【状态 s】= [是否有人, 光照, 时间]
    time_norm = hour / 24.0
    daylight = max(0, math.cos(2 * math.pi * (hour - 12) / 24))
    light = min(1.0, max(0.0, daylight + random.gauss(0, 0.1)))
    occupied = 1 if random.random() < (0.3 if 22<=hour or hour<6 else 0.7) else 0
    s = torch.tensor([[float(occupied), light, time_norm]])

    # 【动作 a】ε-贪婪策略
    action = model(s).argmax().item() if random.random() > 0.1 else random.randint(0, 1)

    # 【奖励 r】根据状态+动作计算
    dark = light < 0.2
    if occupied:
        reward = 0.8 if (dark and action==1) else (-1.0 if (dark and action==0) else (-0.3 if (not dark and action==1) else 0.5))
    else:
        reward = -0.2 if action==1 else 1.0

    # 【学习】Q-learning 更新
    target_q = model(s).clone().detach()
    target_q[0, action] = reward
    loss = nn.MSELoss()(model(s), target_q)
    optimizer.zero_grad(); loss.backward(); optimizer.step()

    hour = (hour + 1) % 24

✅ 全程无标签、无监督,只靠奖励信号自我进化!


🔍 概念与代码一一对应

RL 概念 代码体现 作用
State(状态) [occupied, light, time_norm] 描述当前环境
Action(动作) action = 0 or 1 智能体的决策
Reward(奖励) reward = ... 反馈信号,指导学习方向
Policy(策略) model(s).argmax() + ε-探索 如何选动作
Q-Network model = nn.Sequential(...) 用神经网络估计 Q(s,a)
Learning loss.backward() + optimizer.step() 参数更新,越学越聪明

✅ 训练后,AI 学到了什么?

我们测试几个典型场景:

场景 AI 决策
🌙 深夜(3点),有人,房间很暗 开灯
☀️ 正午(12点),有人,阳光充足 关灯(省电!)
🌃 晚上(22点),无人 关灯
🌆 傍晚(18点),有人,光线昏暗 开灯

它没有被写死规则,却自己总结出了"合理开灯"的智慧


🌍 这不只是玩具:真实应用场景

  • 🏢 智能办公楼:自动调节照明、空调,年省电费 20%+
  • 🏠 智能家居:与米家、HomeKit 集成,无感节能
  • 🏫 教室/会议室:人走灯灭,人来灯亮,无需改造电路

核心都是同一个 RL 框架——只需换状态、动作、奖励!


🚀 为什么这很重要?

强化学习,是让机器具备自主决策能力的关键技术。

它不依赖人类经验写规则,而是:

  1. 感知环境(状态)
  2. 尝试行动(动作)
  3. 接受反馈(奖励)
  4. 自我优化(学习)

从一盏灯,到自动驾驶、机器人、金融交易——底层逻辑相通。


💬 结语

你不需要造出 AlphaGo,才能用上强化学习。
从一个灯开始,你就能构建真正"会思考"的智能系统。

代码虽小,思想巨大。
真正的 AI,不是更复杂的模型,而是更聪明的问题建模。


动手试试?
只需安装 PyTorch,复制上方代码,几分钟就能看到 AI 学会"聪明开灯"!