机器之心报道
参与:思源、一鸣
如果一种语言,它本身就是一个可微编程系统,那写起代码来又是怎样的。近日,JuliaComputing团队发表论文表示他们构建了一种可微编程系统,它能将自动微分内嵌于Julia语言,从而将其作为第一级的语言特性。也就是说,我们以后直接用Julia语言及可微编程就能写模型了?都不需要再调用TensorFlow或PyTorch这样的框架了?
如果我们将可微编程系统视为编程语言最重要的特性之一,那么不论是机器学习还是其它科学计算都将方便不少,这样的语言也将是科学计算最好的语言。YCombinatorResearch研究者MichaelNielsen对此也非常兴奋,他非常赞同AndrejKarpathy所说的「梯度下降是更好的程序员」。
Karpathy同时也回复到:「我们正向前移动了一点,与原来对程序有完整的定义不同,我们现在只是写一个大致的架构,这样的架构会通过权重参数化。如果我们有一个好的评估标准,那么最优化算法就能帮我们找到更好的解。」
这里Karpathy说的就是机器学习和编程的区别,ML会通过梯度下降等最优化方法自动搜索最优解。但这里有个问题,模型需要梯度才能向着最优前进,因此模型的很多部分都要求是可微的。鉴于这一点,很多人也就将ML称呼为可微编程了。
但是可微编程只能用于机器学习吗?它能不能扩展到其它领域,甚至成为编程语言的基本特性?答案是可以的,这就是Julia团队及MIT等其他研究机构正在尝试的。
近年来,机器学习模型越来越精妙,展现出了很多科学计算的特性,侧面凸显了机器学习框架的强大能力。研究者表示,由于广泛的科学计算和机器学习领域在底层结构上都需要线性代数的支持,因此有可能以可微编程的形式,创造一种新的计算基础设施。
论文