Blog

Page 13 - Showing 5 of 88 posts

  • 分类问题常用CE而不是MSE
    分类问题常用CE而不是MSE
    Arrow right

    本文分析了机器学习中分类任务常用MSE而非CE的原因,并从分布角度、优化角度进行了详细讨论。文章指出,MSE假设数据服从高斯分布,而现实中长尾分布也很常见,直接使用MSE可能导致效果不佳。同时,文中还提到在优化的角度上,如果分类问题使用MSE作为损失函数,是非凸优化,难以求出最优解。

    🕒1 min read
      MSECE分布角度优化角度
  • ThreadLocal简单讲解
    ThreadLocal简单讲解
    Arrow right

    本文介绍了Java中的ThreadLocal类,它是一种用于处理共享变量的线程安全机制。ThreadLocal为每个线程提供一个独立的数据副本,通过get(), set()和remove()方法来管理这些副本。尽管ThreadLocal可以解决线程安全问题,但更好的解决方案是使用synchronized关键字。文章还提供了一个示例代码,展示了如何使用ThreadLocal实现多线程编程。

    🕒1 min read
      ThreadLocal线程安全共享变量线程不安全问题@synchronized
  • Rand7生成Rand10
    Rand7生成Rand10
    Arrow right

    本文介绍了如何使用数学原理和C++代码生成等概率的随机数。首先,通过数学公式$(randX() - 1) * Y + randY()$可以生成等概率的$[1, X * Y]$范围内的随机数。证明过程基于$randX()$和$randY()$分别生成$[1, X]$和$[1, Y]$之间的等概率随机数。联合概率表展示了如何从这些随机数中采样得到均匀分布的$[1, XY]$之间的随机数。接着,文章提供了使用C++编写的代码示例,演示了如何通过构造特定表达式来生成在指定范围内的均匀随机数。然而,这种方法效率较低,因为只有当采样到$[1, 10]$之间时才会停止,而$[11, 49]$之间的数会被丢弃。为了提高效率,文章提出了一种优化方法,通过模除操作将范围缩小到$[1, 10]$,并进一步优化为只采样$[41, 49]$之间的数,从而提高了效率。最后,文章还探讨了从进制的角度解决问题的方法,指出如果给定$rand1()$只能生成$[0, 1]$之间的均匀随机数,那么可以通过二进制编码的方式生成$[a, b]$之间的均匀随机数。

    🕒2 min read
      数学原理C++代码随机数生成均匀分布高效编程
  • KV Cache
    KV Cache
    Arrow right

    本文介绍了LLM(大型语言模型)中KV Cache的重要性,它是加速运算的关键步骤,确保在对话过程中输入文本增长时,推理速度不受影响。文章详细解释了Self Attention机制和因果掩码的概念,并讨论了KV Cache如何通过缓存计算结果来优化预测过程。

    🕒1 min read
      LLMKV CacheSelf Attention因果掩码预测效率
  • 技术感想随笔
    技术感想随笔
    Arrow right

    本文讲述了作者在接了一个简单的红娘小程序外包项目后的一些感悟。项目虽然简单,但花费了作者大量时间,主要是在后台管理界面和前端页面的开发上。同时,作者也反思了独立开发的现实,强调了独立开发者需要专注于解决用户痛点,而不是仅仅追求技术难度。此外,还提到了冷启动和推广的重要性,以及在技术选择上的一些心得。

    🕒1 min read
      红娘小程序外包项目独立开发用户痛点技术选择