4.26
day 3 (||) 0:38 回顾drp 关键是用正定矩阵将 无限维约束 转化为 SDP
4.27
day 6(1) 0:30 最大化 中Qi+ Qi- 必须是0,所以3项只剩下1项了
teo
16 54 10
16 59 51
parsimonious
4.29
wassertein 我有了50个分布 每个10个阶段。 wasserstein 球的半径是用这50个分布算的吗? w < ε 用采样的分布 来算出 :wasserstein 距离 小于 ε 的所有分布。 所有的Q组成邻域,要求所有的Q的W距离小于 ε
4.30
ε 是自己试的。 q是用采样的P分布, ε 和 W距离 得到的分布。然后取最坏情况求解。
第6节,最后解优化问题时复杂度不低,此时用辅助信息,近似cost函数。
5.2 ptp的耦合,预测决策同时做是通过固定一个y让z可变,求解y然后再固定y,迭代求解的。应用到dro会有问题吗
5.3
DFJSP 数据处理: 随机生成到达时间、加工时间乘以紧急程度0.05,得到processtime [工件数、工序数、机器数]存的是时间0-50。
总体步骤:
随机减弱的选择调度规则。
根据调度规则实施工序,从processtime中取出对应的时间。开始时间+processtime得到结束时间。然后更新所以机器,工件的时间。
更新7个指标
使用指标计算reward
10次之后就开始回放 训练(target 200次才更新,一次训练大概45次,所以5次训练才更新。ddqn 是网络来选择,target只输出不选择。)
重复以上步骤40次,每次都刷新 迟到时间 和 总的reward。(迟到时间是结束时间-理想结束时间)
5.4 bellman equation 就是 加权单步奖励 + 加权 * γ 未来所有的V(s)
Gt是所有奖励 就是 单步奖励+V(s’)
V(s) 价值函数 就是多次Gt的期望。
不考虑策略和动作时 (MRP时) v = r + pv(s’)
考虑策略时 (MDP时) 就引入了增加所有动作 才能从一个状态到另一个状态。同时动作到状态要全概率P
① state—value 函数 Vπ(s) = 求和π(a|s) × (R+ PV)
②state—action—value 就是把 (R+ P*V)叫做 q(s,a)
q就是 某个动作的单步 奖励和 剩余所有步价值。
我之前都是用神经网络来表示剩余所有步的奖励, q(s,a)只是一种策略的,所以把所有动作都加起来就是所有未来价值函数 就是r + v(s’)
π(a|s) 策略就是选择一个动作,不过是在特定的状态下。
5.5
MC
求Gt 采样状态s ,可能碰到多次,也可能碰到1次。有不同算法
①First-visit 重复多个episode(1个epoch有多个episode) 有几次 第一次出现 然后从这里往后算所有的Gt 然后平均 求V(s)
②Every-visit 每次遇到都记下来,最后平均求V(s) (但是我状态很多 真的会完全一样吗?)
MC 是Gt - V(st) Gt是跑完所有步的,所以必须全跑完才行。 MC多次算Gt的时候只是加起来,没有看两次之间的关系
之前是所有加起来然后平均。 现在是一步一步看 根据现有的V(s) 出现一个新的数据,那么更新
V(s) = V(st) + 1/n (Gt - V(st)) 新的数据时Gt 。看它和原来v(s)的差距,来更新V(s)。
V(s) = V(st) + α (Gt - V(st)) 如果α等于1 那么完全倾向于新的差距。如果α很小那么不是很倾向于看新的差距,比较保守。 或者叫遗忘。
MC问题 Gt 必须全算完才完整。
TD
是Gt - V(st) Gt暂且直接用下一步的(虽然可能不准),就只需要下一步就能更新。
Gt 就是估计值。是一直变的,一个episode就有一个奖励和Gt,近似一下 Gt = R + Gt+1 也就是 R + V(st+1)
V(st+1)是一直变的,
target 是R + V(st+1) 对应为q?
error 是R + V(st+1) - V(st) 后面的V(st) 就是我的价值函数,是我长期要优化的。 前面的是一步的,是暂时采样的估计值。
TD 是局部的
MC 和TD区别就是 一个是全得到 求平均来更新。一个是采样下一步直接来更新。(MC中Gt就是准的, 而TD中不准,因为它只用历史来近似完整的一局,所以叫有偏 )
MC 是有很多路,但直接走到头,来得到一个估计。 完全采样,不探索
TD 也有很多路,连头都没走到,直接一步就得到一个估计。因为和MC一样它只记当前状态S的奖励。即采样,又探索。
DP 是走了所有路,也只走一步。完全探索。
TD本质就是MC只走一步,TD是MC的一步特例。MC步数走的多,均值更准
进一步产生n-TD
在线和离线就是 在一局中立马用新的价值函数V(s)就是在线
离线时 TD(λ) forward 和backward 是一样的。在线是forward 是精确到但不能实时,backward不精确但能实时。
online offline 是否用新的V(s)。 onpolicy offpolicy 采样的π和学习的π是不是同一个
5.6
之前没理解到
1给出动作和评价之间,是有一个实施动作,改变整个系统状态的过程,(很早就选出动作了很晚才评价)(网络估的肯定不可能完全准,所以知道实际情况后就评价)
2因为肯定估不准,所以重新评价,所以就能知道之前为什么估不准,就能更新主网络。
3不是只有3次网络出现。当期的状态是要用网络给出的,虽然这部分DDQN和DQN一样,所以说在DQN中用了两次target,但是主网络也是必须的,不仅仅是过一段时间更新一下target
DQN和DDQN区别:当我们用网络 选择动作时会出现两个量。一个是选哪一个动作,一个是这些动作的价值。DDQN做的事情就是,我可以允许主网络计算动作价值V主来选一个动作A主。但是当我的得到这个动作以后我就把他的价值扔了,因为会高估。我采用了他的动作,然后我改评价 reward了,此时state已经变了,但是能想到变化还没那么大因为这就是主网络推荐我用的动作。接下来我改评价了,如果我还用主网络肯定是不错了,因为本来就是它推荐我用这个动作的。所以我偏不,我用target来评价。
此前我一直在奇怪我用了两个网络,最后应该有2个动作,2个价值,为什么完全没有提到4个量,原来就是被扔了。
再回到最初来看,DQN本来就是引入target来选动作再来评价,评价给主网络用。(其实不是用,而是更新主网络,主网络已经躺平了)
DDQN改进就是选动作用主网络,选完只留下动作,把价值扔了。 采用主网络的动作,target评价,最后给主网络用。
此前我想的是 首先肯定有3次网络。1选动作2评价3更新主网络。其实第3次不是一次使用网络,就是更新网络的参数了。(原来错在哪想不起来了,总之,评价是用来让主网络更新的这里我之前是错了,而且给出一下时刻动作以后需要去采取这个行动,改变整个系统状态,最后才会评价,而不是直接评价的,之前以为主网络还要做点什么,原来只是等待被更新。那假如她什么都不做,就相当于它确实不做,都是target在做,(也不对她虽然没有评价下一时刻动作,也没给出采取动作之后改变了状态,进行评价,但是它给出了当期时刻的价值?))
DQN引入target 用target选动作 ,下一时刻用target评价。
5.7
policy gradient 损失中的log 他的本质是△f(x) /x 意思就是f(x)求导再除x 它就是△log(fx) ,所以用log来算。
5.10
1.在s这一步采样多次算概率(不需要转移概率了,MC 和TD的方法)。
2. 动作和target两件事。动作怎么选有两种选法。target怎么算只有一种算法。以及target 目标网络 离线和在线 有了sarsa和q learning区别
TD learning 更新的时候是 采样下一个来估计。就用这个来更新。
而我现在我不是乱采样,我就用当前的max来更新。但是我max是怎么算的?
用重要性采样,来采一步。
我按照TD更新一步,然后我立马把我下一个的π动作也全更新。从这个里面选一个最大的。
它和sarsa的区别就是有没有用最大的。
sarsa 一会会执行之前的动作, Q learning不一定,所以off policy
target 目标的意思就是对未来总的奖励的估计,减去当前的Q 就能更新。
sarsa 一定会执行 target 不论是ε随机采样的,还是最优的,还是纯随机。
q learning 是选最大的。所以是离线的
sarsa 先求出a’ 再更新q,在探索新动作的同时直接就确定了用它。状态a1随机选一个动作a1到了状态a2,此时用了ε随机,并且直接把它当作动作a2了!
q learning 先求出q 再更新a探索到了,然后算q值,下一次再决定用哪个。
状态a1 贪婪!选一个动作a1到了状态a2,此时用了ε随机来算q就没了。,并且直接把它当作动作a2了!
q learning 的greedy 是用在更新q值时找到别的动作,算q用的。
一开始就把所有 s a的q值更新了,所以才能 采样下一个q - 当前的q
π 是一个概率
5.11 DDQN
1评价动作 都是用target。用来求误差,更新主网络。
2下一轮选择动作执行时。只负责给出一个动作就行了。价值就扔了。所以它给的动作和target是不一样的。如果target 先评价,然后下一步执行也是用它评价的那个,那么就高估了。我偏不,你不是刚刚评价完给了一个误差,还更新了主网络吗。那么我直接用主网络给我一个动作,你只负责评价,给误差,更新网络。更新好以后我就不用你了,实际执行我就用你指挥的主网络来冲锋。主网络也只能执行,给出动作,价值啥都它就不能说话了。
一共2件事
两个网络
1.往哪探索a? 第一个神经网络来采样 —— (简单实践执行s-s’ sarsa就是只有自己 q learning就有了 target 叫off policy。DQN target 是从主网络 copy 一个 固定targret 探索-评价, 来更新主网络。 主网络一直在更新。target 过一段时间更新copy一次。 target 来即执行探索又执行评价。
2.**经过尝试a,整体评估?**第二个神经网络来评价
这里就涉及DQN 和DDQN的区别 DQN是用神经网络评价完,target nn(next_state) -当前q。 尝试的时候还用这个网络尝试。所以他们选择基本一样。他很可能实践target nn 自己觉得好的。
而DDQN用神经网络评价完, target nn(next_state)。 另一个nn (obs) 实践。只是predict用来预测,只是用它,不会改变它的参数、
5.12
error = y_train-LR.predict(X_train)
error_mean = error.mean()
error_std = error.std()
线性回归 + 正态分布。正态分布 的error 均值和方差 是这么算的。
5.13
w saa 是看今天是不是周日。 温度是在23以上还是以下。 确定自己的分类以后。就只看自己分类中的数据,他们每个1/n来加权。
dynamic w 不确定集。是对每个样本路径构造不确定集。最后把他们每个 1/n加起来。
而现在我不了,我要看我和那几个样本路径是一类的,然后给他们1/n加权。
7.12
线性规划,对偶问题。把 b 和c 交换。那边a肯定要转置。原来x和c一样m维。现在y肯定和b一样j维。而原来a是m*n x是n那么b是m维! c是n维!x是n维 最初是cT 所以c和x维数一样都是n。相乘是一个数!所以捋一下,c 和x维数一样。他们的维数是a的列树!剩下就是a的行数和b一样。
那么对偶的时候。a转置以后,自然又是b和y以及a的列数一样。剩下的是a的行数和C一样都是m!
也就是说不论何时,a的行数和右端项一样。其余的 a的列数 变量x/y 和目标 c或b是一样的!!
然后还是尽量让他们 离得远,不一样,那么就剩三个地方。一个是等式约束,和非负约束,目标最小。那么全反过来。直接变成非负约束和等式约束,目标变最大。
symmetric pair 对称偶
A 转置。1 2 1 0 1 1
1 1 0 1 2 1
1 0
0 1
确实是这样的
弱对偶
min cTx 和max bx
cTx 一定比 bx大的。因为有约束所以cTx 不可能比bx 小。同理bx不可能比cTx 大。所以当最优解,就是他们相等的时候。两边约束都满足,到极致,就是最优解。
把两个对偶的图画出来。能很明显看到对偶的约束,定点个数对偶。 但是图上没有目标函数。他们的空间是对偶的,图上能看到。图上没画出来目标函数,其实也是对偶的。
弱对偶,原始问题 一定大于对偶问题,所以当它等于对偶问题时就是到最有了。反过来也是。
如果原始问题无界,那么对偶问题无可行解。反过来也是。如果无可行解 那么对偶一定无界吗?不是的,有可能两个都是不可行。
强对偶!
关键是是否有 有限最优。如果有无限最优,那么就有把握不住的地方,就不能完全对偶。
原始问题和对偶问题,只要有一个人有有限最优,那么就是强对偶了,就能把握了。
强对偶证明没太懂,用单纯性法的x 和bsisi B证。
基本原则max -> min 约束反 决策变量不变。 min -> max 约束不变 决策反。 只不过 论文里大多是用标准形式 是min -> max 。然后应用基本原则就行了!!
而标准形式是 约束等号,决策全正
bandit
bandit 只告诉智能体所选择的动作的奖励,而不是所有动作的奖励(完全信息的bandit),而在部分信息中,设计者可以指定,哪些奖励要告诉智能体。
bandit 不具有马尔科夫性,它要求2条概率假设,在有限和无限下都是存在的,Ionescu-tulcea 定理保证
遗憾是期望,是最优减当前值。
为什么用遗憾不用奖励来评估。因为不论好坏,奖励都是线性增长的。而好的遗憾是以对数增长的,最差的遗憾才是以线性增长的。
次线性:lim n->∞ f(n)/n = 0 极限是0就是次线性。极限是C 常数就是线性的
遗憾分解引理:∑ △ Ta 对动作和最优动作奖励的差 × 被选择的次数。
满足次线性的缺点:1只能做两个动作的2必须提前知道做多少轮。
贝叶斯遗憾:在先验风险下求期望!
汤普森采样:根据奖励左右移动分布。 选择臂的时候不是选择最优的臂,而是选择所有的臂,但是根据概率,好的臂选的次数多。
8.3
ssh -o ServerAliveInterval=60 user@sshserver
q leaning的核心是什么?近似动态规划把所有v都算出来。开一个顾客就根据动态规划最优v做动作,决策。q leaning也是这样。近似动态规划用了近似,用线性规划近似v。q leaning是用采样来近似。q leaning核心就是效率问题,如何采样能更好的近似。因为不能把所有动作空间都求出来,这样的话动态规划纬度太大。所以采样这样就是强化学习,在深度强化学习之前,其实没有太多学的东西,就是蒙特卡洛采样,求出v,这样的离线的,根据最优的v来选动作就结束了。
深度强化学习是不用q表了,直接用一个神经网络来得到v。
不对!还有奖励呢,在不用深度神经网络之前,他们比动态规划多了奖励
奖励是和近似动态规划的区别,近似动态规划没有奖励。状态到另一个状态,v到v,不需要奖励。