AI强化学习进阶从Q-Learning到PPO的策略优化强化学习Reinforcement Learning, RL是AI中唯一通过试错学习最优行为的方法论。从经典的Q-Learning到现代近端策略优化PPORL算法在复杂决策任务中展现了强大能力。本文将系统梳理RL的核心算法演进从值函数方法到策略梯度方法解析其原理与实现。一、强化学习基础框架1.1 MDP形式化定义import numpy as np import gym class MDP: 马尔可夫决策过程 def __init__(self, states, actions, transition_probs, rewards, gamma0.99): self.states states self.actions actions self.P transition_probs # P(s|s,a) self.R rewards # R(s,a) self.gamma gamma # 折扣因子 def value_iteration(self, theta1e-6): 值迭代算法 V {s: 0 for s in self.states} while True: delta 0 for s in self.states: v V[s] # 贝尔曼最优方程 V[s] max([ sum([ self.P[s][a][s_next] * (self.R[s][a] self.gamma * V[s_next]) for s_next in self.states ]) for a in self.actions ]) delta max(delta, abs(v - V[s])) if delta theta: break # 提取最优策略 policy {} for s in self.states: policy[s] max(self.actions, keylambda a: sum([self.P[s][a][s_next] * (self.R[s][a] self.gamma * V[s_next]) for s_next in self.states])) return V, policy1.2 探索与利用的平衡class ExplorationStrategy: 探索策略 staticmethod def epsilon_greedy(Q, state, epsilon0.1): ε-贪婪策略 if np.random.random() epsilon: return np.random.choice(list(Q[state].keys())) else: return max(Q[state], keyQ[state].get) staticmethod def boltzmann_exploration(Q, state, temperature1.0): Boltzmann探索 q_values np.array(list(Q[state].values())) probabilities np.exp(q_values / temperature) probabilities / probabilities.sum() actions list(Q[state].keys()) return np.random.choice(actions, pprobabilities) staticmethod def ucb(Q, state, action_counts, total_counts, c2): UCB1上置信界 ucb_values {} for a in Q[state]: if action_counts[state][a] 0: return a # 未尝试过的动作优先 exploitation Q[state][a] exploration c * np.sqrt(np.log(total_counts) / action_counts[state][a]) ucb_values[a] exploitation exploration return max(ucb_values, keyucb_values.get)二、值函数方法2.1 Q-Learning
AI强化学习进阶:从Q-Learning到PPO的策略优化
AI强化学习进阶从Q-Learning到PPO的策略优化强化学习Reinforcement Learning, RL是AI中唯一通过试错学习最优行为的方法论。从经典的Q-Learning到现代近端策略优化PPORL算法在复杂决策任务中展现了强大能力。本文将系统梳理RL的核心算法演进从值函数方法到策略梯度方法解析其原理与实现。一、强化学习基础框架1.1 MDP形式化定义import numpy as np import gym class MDP: 马尔可夫决策过程 def __init__(self, states, actions, transition_probs, rewards, gamma0.99): self.states states self.actions actions self.P transition_probs # P(s|s,a) self.R rewards # R(s,a) self.gamma gamma # 折扣因子 def value_iteration(self, theta1e-6): 值迭代算法 V {s: 0 for s in self.states} while True: delta 0 for s in self.states: v V[s] # 贝尔曼最优方程 V[s] max([ sum([ self.P[s][a][s_next] * (self.R[s][a] self.gamma * V[s_next]) for s_next in self.states ]) for a in self.actions ]) delta max(delta, abs(v - V[s])) if delta theta: break # 提取最优策略 policy {} for s in self.states: policy[s] max(self.actions, keylambda a: sum([self.P[s][a][s_next] * (self.R[s][a] self.gamma * V[s_next]) for s_next in self.states])) return V, policy1.2 探索与利用的平衡class ExplorationStrategy: 探索策略 staticmethod def epsilon_greedy(Q, state, epsilon0.1): ε-贪婪策略 if np.random.random() epsilon: return np.random.choice(list(Q[state].keys())) else: return max(Q[state], keyQ[state].get) staticmethod def boltzmann_exploration(Q, state, temperature1.0): Boltzmann探索 q_values np.array(list(Q[state].values())) probabilities np.exp(q_values / temperature) probabilities / probabilities.sum() actions list(Q[state].keys()) return np.random.choice(actions, pprobabilities) staticmethod def ucb(Q, state, action_counts, total_counts, c2): UCB1上置信界 ucb_values {} for a in Q[state]: if action_counts[state][a] 0: return a # 未尝试过的动作优先 exploitation Q[state][a] exploration c * np.sqrt(np.log(total_counts) / action_counts[state][a]) ucb_values[a] exploitation exploration return max(ucb_values, keyucb_values.get)二、值函数方法2.1 Q-Learning