Home

回忆排序算法

导语 工作后很长一段时间没有整理算法了,还是得捡起来。 老样子,还是从排序算法开始吧,下面是常见的七种排序算法的实现。 冒泡排序 时间复杂度O(N^2),空间复杂度O(1), 稳定。 冒泡排序的思想是通过相邻两个数的比较,将大的数依次从数组左边移动至右边。 void bubble_sort(int data[], int size){ for (int i=size-1; i>=0; i--){ for(int j=0; j<i; j++){ if (data[j] > data[j+1]){ int tmp = data[j]; data[j]...

Read more

Hello blog

导语 2022年5月21日: 使用新的blog主题啦,换新! 新的博客主题是 jekyll-TeXt-theme,非常感谢开发者的贡献! Jekyll 安装 Ruby2.6 sudo apt-get install ruby2.6 ruby -v gem -v Jekyll & bundler vim ~/.zshrc # paste below codes # Install Ruby Gems to ~/gems export GEM_HOME="$HOME/gems" export PATH="$HOME/gems/bin:$PATH" # save & close # install jekyll and bundler gem instal...

Read more

交叉熵与KL散度概念

交叉熵 熵的本质就是信息量的期望,在本科通信原理课程中有讲述,随机变量的不确定性越大,熵也就越大,计算公式为 \[H(p) = - \sum_{i} p(i) log p(i)\] 交叉熵是通过非真实分布q来表示真实分布p的平均编码长度, 计算公式为 \[H(p,q) = - \sum_i p(i) log q(i)\] 根据吉布斯不等式有$ H(p,q) \ge H(p)$恒成立, 当q取真实分布p时,等式成立。 KL散度 KL散度的计算公式 \[D(p\|q) = H(p,q) - H(p) = \sum_i p(i) log \frac{p(i)}{q(i)}\] 交叉熵经常在机器学习中作为损失函数使用,用来评估模型预测的分布与真实分布的相似性。 参考 ...

Read more