无需数学就能写AI,MIT提出AI专用编程语言Gen( 五 )

举个栗子

研究人员编写了一个简短的 Gen 程序来做贝叶斯线性回归:给定(x, y)平面上的一组数据点,他们想找出一条能很好拟合这些数据点的线。

典型的 Gen 程序通常包含三个主要组件。

首先,定义一个生成模型:利用额外语句扩展的 Julia 函数,即从概念上模拟一个假数据集。下面的模型对 slope 和 intercept 参数进行采样,然后 x 轴上的参数可以作为输入,且对相应 y 轴进行采样。他们将所做的随机选择命名为 @trace,这样就可以在推理程序中引用这些选择。

using Gen

@gen function my_model(xs::Vector{Float64})

slope = @trace(normal(0, 2), :slope)

intercept = @trace(normal(0, 10), :intercept)

for (i, x) in enumerate(xs)

@trace(normal(slope * x + intercept, 1), "y-$i")

推荐阅读