计算机科学

为学生,研究人员和计算机科学从业者提供的问答

1
折现因子对强化学习的意义
在阅读了Google在Atari游戏上的深刻成就之后,我试图了解q学习和q网络,但是我有点困惑。折扣因素的概念引起了混乱。我所了解的简短摘要。深度卷积神经网络用于估计动作的最佳期望值。网络必须最小化损失函数 ,其中为 其中,是累积得分值,Li=Es,a,r[(Es′[y|s,a]−Q(s,a;θi))2]Li=Es,a,r[(Es′[y|s,a]−Q(s,a;θi))2] L_i=\mathbb{E}_{s,a,r}\left[(\mathbb{E}_{s'}\left[y|s,a\right]-Q(s,a;\theta_i))^2\right] Es′[y|s,a]Es′[y|s,a]\mathbb{E}_{s'}\left[y|s,a\right]Q [R 小号,一个小号“,一个”吨吨' θ - 我 γ 我γ θE[r+γmaxa′Q(s′,a′;θ−i)∣∣s,a]E[r+γmaxa′Q(s′,a′;θi−)|s,a] \mathbb{E}\left[r+\gamma max_{a'} Q(s',a';\theta^-_i)\right|s,a] QQQrrr是动作选择的得分值。和分别是在时间的状态和动作以及在时间处的状态和动作。该是网络在上一迭代的权重。该是考虑到分值的时间差折算因子。在标是颞步骤。这里的问题是要理解为什么不依赖于。s,as,as,as′,a′s′,a′s',a'tttt′t′t'θ−iθi−\theta^-_iγγ\gammaiiiγγ\gammaθθ\theta 从数学观点来看,是折扣因子,表示从状态到达状态的可能性。小号'小号γγ\gammas′s′s'sss 我猜想网络实际上学会了根据的真实值重新缩放,那么为什么不让?γ γ = 1QQQγγ\gammaγ=1γ=1\gamma=1

2
“无模式位”的数据常规MV / 8000优点
我正在阅读Tracy Kidder的“新机器的灵魂”,Data General的团队在其中设计了新机器(代号为“ Eagle”,后来称为MV / 8000)。它是先前体系结构(16位Eclipse)的32位扩展。不断变化的主题之一似乎是,他们不想创建带有模式位的机器,并且他们成功做到了这一点。 但是,它没有说明如何从技术上实现这一点,也没有涉及为什么创建没有模式位的机器如此吸引人的原因。这本书不是一本技术性的书,因此细节可能以某种方式被扭曲了。但是,您会在阅读本书时感到“模式位”解决方案在当时很普遍(因此很可行),但工程师可能出于美学原因认为它没有吸引力。这本书还使得创建没有模式位的设计似乎是一项艰巨的任务,而这个特定团队却以某种方式克服了这一难题。 我发现了如何实现的描述: http://people.cs.clemson.edu/~mark/330/kidder/no_mode_bit.txt 这似乎基本上是关于将操作码空间的先前未使用的部分用于新指令。我必须承认,我对“就是那样”感到有些失望。我也认为这仍然使一些问题无法解决: 首先,16位进程如何生活在32位地址空间中?因为我认为这是“不带模式位”进行32位扩展的关键挑战。另一方面,扩展指令集是一项相对常见的工作。由于没有描述它是如何发生的,因此可以假设16位代码像往常一样简单地访问内存,也许它看到某种类型的内存虚拟化/存储视图(由新的CPU寄存器控制第一个地址在哪里)或这样的事情。但是我不知道还有什么。在那种情况下,可以说它是一种“模式位”解决方案。16位模式进程可以通过添加到CPU的特殊功能与其他进程一起运行。 其次,为什么创建没有模式位的机器如此吸引人?书中吹捧的许多好处是客户希望运行旧软件。但这似乎并不反对使用模式位,因为使用模式位的全部目的是为了具有向后兼容性。当AMD将x86扩展到64位时,至少根据我对“模式位”一词的理解,他们所做的就是添加一个模式位。一个特殊的位,它将使CPU处于64位模式。还有一点将使进程在64位模式的“子模式”中执行(以实现与32位应用程序的兼容性)。子模式的本质是CPU将指令流解释为旧的32位指令,但是使用新的页表格式(由64位可识别的操作系统设置)可解决对32位存储器的访问。映射到完整的物理地址空间。同样,32位代码可以被64位代码取代。与Data General解决方案一样,这也允许32位程序在64位程序下运行(在DG情况下为16位vs 32位)。因此,从客户的角度看,根本没有区别。因此,唯一的好处可能是实现,简化了设计,但是书中并未讲到这就是要关注的问题,因为即使在那时,模式位似乎仍然很常见(而且以后的架构似乎也如x64案例所示使用它)。 我敢肯定我错过了一些东西,所以如果有人可以讨论更多有关这种“无模式位”设计的技术细节和优点的信息,那将是很棒的。

5
为什么不安全状态不总是导致死锁?
我正在阅读Galvin的《操作系统》,发现以下内容, 但是,并非所有不安全状态都是死锁。不安全的状态可能导致死锁 有人可以解释一下死锁!=不安全状态吗?我在这里也抓住了同一条线 如果不存在安全序列,则系统处于不安全状态,这可能导致死锁。(所有安全状态均无死锁,但并非所有不安全状态都会导致死锁。)

2
语言的LR(1)自动机比对应的LR(0)自动机大多少?
在LR(0)解析器中,每个状态都包含LR(0)项的集合,这些项是用位置注释的生成。在LR(1)解析器中,每个状态都由LR(1)项的集合组成,这些项是用位置和超前字符注释的生成。 已知给定LR(1)自动机中的状态,通过从每个LR(1)项中删除前瞻标记形成的配置集会产生与LR(0)自动机中某个状态相对应的配置集。从这个意义上讲,LR(1)自动机和LR(0)自动机之间的主要区别在于LR(1)自动机在LR(0)自动机中具有更多状态副本,每个状态副本都带有前瞻性注释。信息。因此,给定CFG的LR(1)自动机通常大于该CFG的对应LR(0)解析器。 我的问题是LR(1)自动机可以有多大。如果语法字母中有不同的终端符号,则原则上我们可能需要对这不同的终端符号的每个子集至少复制一次LR(0)自动状态中的每个状态,从而可能导致LR(1 )自动机,比原始LR(0)自动机大倍。假设LR(0)自动机中的每个单独项目都由一组不同的LR(0)项目组成,我们可能会得到更大的爆炸。n 2 nnnnnnn2n2n2^n 就是说,我似乎找不到一种方法来构造其LR(1)自动机明显大于相应的LR(0)自动机的语法家族。我尝试过的所有操作都导致大小的适度增加(通常为2-4倍左右),但我似乎找不到能够导致大爆炸的模式。 是否存在已知的上下文无关语法族,它们的LR(1)自动机比对应的LR(0)自动机大几倍?还是众所周知,在最坏的情况下,您实际上无法得到指数级的爆炸? 谢谢!


1
术语重写;计算关键对
我曾尝试解决以下练习,但在尝试找到所有关键对时陷入困境。 我有以下问题: 我怎么知道哪个关键对产生了新规则? 我怎么知道我找到了所有关键对? 令Σ={∘,i,e}Σ={∘,i,e}\Sigma= \left \{ \circ, i, e \right \}其中∘∘\circ是二进制,iii是一元,eee是常数。 E=⎧⎩⎨⎪⎪(x∘y)∘z≈x∘(y∘z)x∘e≈xx∘i(x)≈e⎫⎭⎬⎪⎪E={(x∘y)∘z≈x∘(y∘z)x∘e≈xx∘i(x)≈e} E=\left \{ \begin{gather} ( x \circ y ) \circ z \approx x \circ\left ( y \circ z \right ) \\ x \circ e \approx x \\ x \circ i(x) \approx e \end{gather} \right\} 到目前为止我的工作: x∘e>lpoxx∘e>lpoxx\circ e >_{\textsf{lpo}} …

1
是否存在任何自然的问题?
我知道公式的量化布尔公式问题, 其中包含任何量词,而仅包含变量是问题的示例。但是,我不知道是否有已知的任何自然的问题 -complete,就像电路的最小化是一个自然的 -完整的问题(见多项式层次结构的详细信息)?ψ=∀x1…∀xn∃y1…∃ynϕψ=∀x1…∀xn∃y1…∃ynϕ \psi = \forall x_1 \ldots \forall x_n \exists y_1 \ldots \exists y_n \phi ϕϕ\phix1,…,xn,y1,…,ynx1,…,xn,y1,…,ynx_1, \ldots, x_n, y_1, \ldots, y_nΠP2Π2P\Pi_2^PΠP2Π2P\Pi_2^PΣP2Σ2P\Sigma_2^P


1
类型理论中“正位置”和“负位置”的含义?
在类型理论的背景下,“处于正面位置”和“处于负面位置”是什么意思? 我从鲍勃·哈珀(Bob Harper)的博客文章中唯一了解到的是类型理论中的极性与逻辑上的极性之间存在联系,但我不知道这种联系是什么。

1
DNF到CNF的转换:简单或困难
关于证明从CNF到DNF的转换是NP-Hard的线程(以及相关的Math线程): 从DNF到CNF的另一个方向如何?容易还是困难? 在本文的第2页上,他们似乎暗示了两个方向,当他们说“ 我们对从CNF表示转换为DNF表示(反之亦然)时最大的尺寸爆炸感兴趣 ”时,两个方向都同样困难。 但是DNF-SAT在P中,而CNF-SAT在NP中。因此,在给定DNF表达式,应该有一个满足条件的 CNF表达式其长度是的长度的多项式。而且转换可以在多边形时间内完成。它是否正确?ϕ1个ϕ1个\phi_1ϕ2ϕ2\phi_2ϕ1个ϕ1个\phi_1ϕ1个→ ϕ2ϕ1个→ϕ2\phi_1 \to \phi_2 编辑:更改等效于equisatisfiable(即,附加的变量允许在)。ϕ2ϕ2\phi_2

1
噪声函数的数学优化
令是一个相当不错的函数(例如,连续,可微,局部最大值不太多,凹面等)。我想找到的最大值:值使尽可能大。F:Rd→ Rf:Rd→Rf:\mathbb{R}^d \to \mathbb{R}X ∈ [R d ˚F (X )FffX ∈ řdx∈Rdx \in \mathbb{R}^dF(x )f(x)f(x) 如果我有一个程序可以根据自己选择的任何输入精确地评估,则可以使用标准的数学优化技术:爬坡,梯度下降(井,梯度上升)等。但是,在我的应用程序中,我没有准确评估。相反,我有一种方法来估计的值。Ffff (x )F(x )f(x)f(x)F(x )f(x)f(x) 特别地,给定任何和任何,我有一个预言器将输出的估计值,并且其预期误差约为。此oracle调用的运行时间与成正比。(它是通过一种模拟实现的;模拟的精度随试验次数的平方根增加,因此我可以选择运行多少试验,因此可以选择所需的精度。)一种估算我想要的准确度的方法,但是我想要的估算值越准确,则花费我的时间就越长。ε ˚F (X )ε 1 / ε 2Xxxεε\varepsilonF(x )f(x)f(x)εε\varepsilon1 / ε21/ε21/\varepsilon^2 给定嘈杂预言,是否有任何技术可以尽可能有效地计算的最大值?(或者,更确切地说,找到一个近似的最大值。)在此模型中是否存在爬坡,梯度下降等的变体?˚FFffFff 当然,我可以固定一个很小的值,并使用此oracle进行爬山或梯度下降,并始终保持相同的。但是,这可能会不必要地造成效率低下:我们可能不需要在起点附近进行如此精确的估算,而当您在解决方案中进行归零时,在终点附近进行精确度更为重要。那么,有什么方法可以利用我动态地控制估计精度的能力,从而使优化过程更有效吗?以前有没有研究过这种问题?εεε\varepsilonεε\varepsilon


2
这个组合优化问题是否与任何已知问题相似?
问题如下: 我们有一个二维的数字数组/网格,每个数字代表某种“收益”或“利润”。我们也有两个固定整数和(分别表示“宽度”和“高度”。)和一个固定整数。wwwhhhnnn 现在,我们希望在网格上覆盖尺寸为矩形,以使这些矩形中的单元格值的总和最大化。nnnw×hw×hw \times h 下图是一个二维网格的示例,上面覆盖了两个这样的矩形(图片未展示最佳解决方案,只是其中和一种可能的覆盖)w=h=2w=h=2w = h = 2n=2n=2n = 2 矩形不能相交(否则,我们只需要找到一个矩形的最佳位置,然后将所有矩形放在该位置即可。) 在上面的示例中,单元格中值的总和为−2+4.2+2.4+3.14+2.3−1.4+1−3.1−2+4.2+2.4+3.14+2.3−1.4+1−3.1-2 + 4.2 + 2.4 + 3.14 + 2.3 -1.4 + 1 - 3.1 这是否类似于组合优化中的任何已知问题?这样我就可以开始阅读并尝试找到解决方法。 那些感兴趣的人还有更多背景知识: 到目前为止,我仅有的想法是贪婪算法(它将找到第一个矩形的最佳位置,然后找到第二个矩形的不重叠位置等)或某种元启发式方法,例如遗传算法。 实际上,我希望使用具有大约一百万个单元和数万(甚至数十万)个矩形的网格来解决此问题,尽管没有必要在短时间内解决它(即对于该算法需要花费数小时甚至数天的时间。)我不希望找到确切的解决方案,但是我想得到一个在这些限制条件下尽可能好的解决方案。 干杯!


1
亚线性空间对图灵机意味着什么?
已经证明确定输入是否为回文的问题在图灵机上需要空间。但是,即使存储输入也要占用空间 这是否意味着所有图灵机都需要空间?Ω (对数n )Ω(日志⁡ñ)\Omega(\log n)ññnΩ (n )Ω(ñ)\Omega(n) 当然,这里没有矛盾,因为任何使用至少线性空间的函数也至少使用对数空间。但是写确实表明图灵机使用的空间可能少于线性空间–毕竟,如果那是一回事,为什么人们会花所有时间证明什么似乎是的琐碎约束?那么,图灵机使用少于线性空间意味着什么?Ω (对数n )Ω(日志⁡ñ)\Omega(\log n)Ω (对数n )Ω(日志⁡ñ)\Omega(\log n)Ω (n )Ω(ñ)\Omega(n)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.