下面是我对机器学习解决问题的一个理解:
机器需要做的事:
现象1 —>数据结构1 —> 数据结构2 —> 现象2
1、从现象1—>数据结构1,为了让机器了解是一个什么现象,此过程如果能找到最本质的编码方式将是机器能够成功解决问题的基石,用RGB对图片的编码就是一种非常好的编码。
2、数据结构1—>数据结构2,根据不同的问题可能需要DNN、CNN、RNN等网络结构来找到这种映射关系。这种映射关系是为第3步服务的。
3、数据结构2—>现象2,现象2是针对于你想解决的问题所关注的现象,包含在现象1之中。数据结构2也非常重要,这关乎能否找到合适的Loss function来优化问题,得到映射关系的参数。
对于机器解决问题这3步都至关重要。关于NLP问题的解决,词嵌入矩阵E就相当于此处的数据结构1,但是比我说的最本质的编码要高级一些,这个矩阵会随着拿来训练的语料库变化,语料库会随着时代的变化而变化 。这就是我所说的词嵌入矩阵E对于NLP问题的重要性,有了这个矩阵很多问题只需要很小的训练集也能训练出不错的效果。
对于NLP问题,数据结构1 —>数据结构2这个过程,使用LSTM单元的双向RNN是能解决绝大部分问题,当然对于比较复杂的问题也可以考虑Deep RNNs。
LSTM单元:
Bidirection RNN:
Deep RNN: