但是目前AI在前端领域的探索还是很少的,更多的是未来的可能性。如何找到一系列好的结合方案,能够在前端研发流程中提高效率、规范流程、提高项目质量,或者给前端的产品提供更丰富的功能,这是更重要的。
线性回归、逻辑回归、决策树、支持向量机、贝叶斯模型、正则化模型、模型集成、神经网络...
常见的机器学习方法有很多种,他们大多都是非线性模型,可以总结为以下的公式:
传统的机器学习方法大多是依赖人工设计的算法,他们简单、可解释性强,在合适的场景下可以取得很好的效果。
但是在很多复杂任务中,人工设计的算法无法取得好的效果,存在较大的性能瓶颈。
常见的激活函数是ReLU:
有严谨的证明:神经网络可以模拟出一切函数。
深度学习基于人工神经网络算法。它是通过使用非常深的层数来获得非常高的非线性能力,几乎可以拟合出一切复杂函数。但是它有数亿级别的参数量,意味着它需要大量的样本学习来不断调整海量的参数,最后可以获得非常好的拟合效果。
我们需要指定一个损失函数,用于判断模型预测结果与真实答案之间的差异程度。只有精确的描述出误差,神经网络才能知道他要变成什么形状。
我们的目标是:使得损失函数尽可能降低!
常见的损失函数有交叉熵损失、MSE损失等...
交叉熵损失:主要用于度量两个概率分布间的差异性信息。也就是衡量预测的概率分布与真实的概率分布之间的差异度。
有了损失函数,我们就知道了现在的神经网络参数还有多少的优化空间。
我们知道,曲面下降最快的方向是梯度方向,所以我们根据损失函数的梯度方向更新参数,在网络中反向传播。
但是我们的更新幅度需要不断衰减,否则我们可能会在最优解附近震荡。
与普通神经网络不同,卷积神经网络主要用于图像任务,其输入是三维(还有颜色RGB通道)的图片矩阵。
前馈神经网络中,信息的传递是单向的。但是生物神经网络中神经元之间的联系会更加复杂。RNN是一个有短期记忆能力的神经网络。
LSTM可以控制信息的累积速度,包括有选择地加入新的信息,并有选择地遗忘之前累积的信息。
Pix2Code这片论文可以将一张纯图片转换为前端/客户端代码!
(a)是预期生成的GUI,(b)是这个方法生成的GUI;同理图(c)、(d)
该方法结合了CNN和LSTM两个模块。
整体架构图如下:
CNN擅长抽取图片特征,用于前部分理解输入设计稿的语义特征:有哪些UI元素、布局、样式等。
LSTM、RNN擅长学习文本和序列规律。
数据集是由一张GUI图片以及一个DSL文本为一组,大约有1700组。
下面是一个数据对,图片为输入,DSL文本为预期输出。
suffix=[PLACEHOLDER]*CONTEXT_LENGTH#48个空格a=np.concatenate([suffix,token_sequence])#保证token遍历到最后一个时,仍然能获取到48个token(前面47个都是空格),类似于paddingforjinrange(0,len(a)-CONTEXT_LENGTH):context=a[j:j+CONTEXT_LENGTH]#context上下文,滑动取出48个token作为列表label=a[j+CONTEXT_LENGTH]#下一个token,待预测标签网络训练现在我们有一张图片I、48个token组成Xt,以及一个待预测的Token作为标签Yt。
网络一次推演的公式如下:
softmax可以将一个向量转换为和为1的新向量,语义上来说,是输出对每个分类的概率值。
预测结果yt(是一个one-hot向量),表示预测为每个token的概率值。
与标签Yt计算交叉墒损失,衡量预测结果和正确结果之间的差异度,表示这次预测结果的好坏。
这个误差进行反向传播,更新模型参数,完成一次迭代。
在三个平台大约77%的准确率。
从手绘草图生成代码
原理上和Pix2Code没有什么大的区别,只是将数据集换成了手绘稿。
微软的版本,也是手绘稿转换为Code。
特斯拉:任何依赖激光雷达的人都注定失败
特斯拉AI部门高级主管AndrejKarpathy说的**「人类开车不是靠双眼发射激光」。**
作为一个对计算机视觉有粗浅了解的人,我当时并不看好特斯拉的纯视觉方案,觉得CV的发展瓶颈、以及安全性都是一个很大的问题,效果肯定没有雷达方案好。因为雷达方案能够立竿见影的提供精准的深度、距离信息。
但是特斯拉的自动驾驶表现狠狠地打了我的脸。后来我意识到视觉信息的语义更丰富、上限更高,比起只能单纯提供深度、距离信息的雷达方案来说,视觉方案的智能化程度会更高,它可以根据丰富的图片细节来做更复杂的决策。
通过Sketch等软件虽然能直接提供准确的DSL,但是这种方案永远都不能智能化(不过这是短期内就能见效的最可靠方案)。
当看到一个设计稿的时候,相信我们不用找设计同学确认就知道:
不过现在的AI方案还是非常非常的原始不可用,这是因为研究的人还是太少了,研究进展也都在初级阶段,但是我相信会有AI让我们“失业”的那一天~