一些琐碎+分不清的知识点

机器学习部分

反向传播 (Back propagation)vs 梯度下降(Gradient descent)

反向传播算法是用来训练ANN的。简而言之,训练ANN就是通过反向传播代价,以减少代价为导向,调整参数。
调参的方式是采用梯度下降算法(Gradient descent),沿着梯度方向调整参数大小。
反向传播算法的推导可以看博客:反向传播算法具体推导过程

交叉熵

其中在soft target时,用到了raise the temperature策略,来提高soft target对应的cross entropy。

熵,说白了就是信息量。在dark knowledge论文中,Hinton提到利用soft target来提高交叉熵,就是要增大模型学到的信息量。(存疑)

为何CNN中的激活函数采用的是ReLU?

神经网络中常见的激活函数有sigmoid, tanh,而在CNN中我们最常使用的是ReLU。原因有一下三点:
1. 采用sigmoid等函数,算激活函数时(指数运算),计算量大,反向传播求误差梯度时,求导涉及除法,计算量相对大,而采用ReLU激活函数,整个过程的计算量节省很多。
2. 对于深层网络,sigmoid函数反向传播时,很容易就会出现梯度消失的情况(在sigmoid接近饱和区时,变换太缓慢,导数趋于0,这种情况会造成信息丢失,无法完成深层网络的训练。
3. ReLU会使一部分神经元的输出为0,这样就造成了网络的稀疏性,并且减少了参数的相互依存关系,缓解了过拟合问题的发生。

C++部分

字符串处理函数

  1. 长度函数int strlen(const char s[]):返回字符串中的字符个数,不计尾零。sizeof()计尾零。
  2. 复制函数char * strcpy(char to[], const char from[])
  3. 拼接函数char * strcat(char s1[], const char s2[]):返回指针指向s1串。
  4. 比较函数int strcmp(const char s1[], const char s2[]):按从前到后顺序逐个比较对应字符的ASCII码值。若s1中的字符串大于s2中的则返回值大于零;若两字符串相等,则返回0;否则返回值小于零。

你可能感兴趣的:(杂,工作)