• 个人版 AI 辅助系统的尝试

    在 CSDN 的时候,我就一直想要有自己的 AI 工作环境。我们组只有一台高配的办公服务器,用于训练模型,分析数据。通常来说这台机器都很忙。如果想要 做一些研究工作或试验,资源就有点紧张了。而我自己的工作机,虽然是一台买了只有四五年的高配 MacBook Pro,但是做 AI 已经不太够用。即使训练一个非常 朴素的文本分类器,也要花费太多时间。那几年我偏好用传统的算法而非 AI 工具解决问题,其实也有这个原因。并非我不能驾驭 AI 技术,只是因地制宜而已。 何况团队里的年轻人们对 AI 相关工作做的非常好,我更关注那些更需要有人站出来解决的东西。 [Read More]
  • Arg Parser

    前几天我写了一个简单的词法分析器项目:https://github.com/MarchLiu/oliva/tree/main/lora-data-generator 。 通过词法分析快速生成 lora 训练集。在这个过程中,我需要通过命令行参数给这个 java 程序传递一些参数。 [Read More]
    Tags:
  • Croupier

    随机、优先与权重 动机 除了汇编语言这样的另类,常规的编程语言几乎都提供了按平均概率生成整数或者浮点数的标准库。这也是应用开发中非常基本的功能。不过,有时候我们需要一些关于随机性的更复杂的功能。 这种复杂性主要来自两个方面:非平均的随机分布和随机结果的使用方式。 非平均概率 标准库的随机算法,通常都是以一个平均概率的,生成(0,1)之间浮点数的函数,或者以一个生成[0, MAX_INT)区间的整数值的方法为基础,构造相关的算法(Java标准库的Random类型,nextInt 和 nextDouble是分别实现的,互不依赖),这就使得相关的随机数生成总是在已知区间内的平均概率。有时候我们会希望以非平均概率生成随机数。例如我手上有一个推荐系统,在我们从数据集中抽取推荐内容发送到客户端时,并不希望每个内容都有平均的被选择机会,肯定是希望权重更高,更靠前的内容,有更大的几率被选中。 一种常见的方法是计算出每个内容的权重——weight、rank、score或者其它什么名字,整数或者浮点数——然后根据这个权重去选择内容。但其实严格的按权重计算概率是一个相对比较奢侈的做法,很多时候我们未必需要一个严格按照权重分布的随机数,而是仅仅要求一个有序列表中的元素,排在更前面的元素总是有更大的几率被选中——这正是推荐系统常见的需求。 随机数的使用 很奇怪,C++ 的 STL 都提供了 random_shuffle 这样的针对集合的随机算法,但是Java没有,不但Java的标准库没有,scala的标准库,甚至 Apache Commons,都没有从一个容器中随机选择若干元素的方法,Apache Commons 的 RandomUtils 中包含 nextBoolean、nextBytes这样的随机内容构造,但是就是没有从一个有限集合中做随机选择的支持。但是对我的日常工作来说,随机数一个非常重要的用途,就是利用随机行为,生成一个数据列表的子集。有时候我需要一个从固定集合中反复采样,有时候我希望做一个随机分割,还有时候,我还要处理只读和可变的容器。 针对这两个方面的缺失,我回顾了这些年来遇到的各种相关问题,在 Jaskell Core 和 Jaskell Java 8 中各自加入了一组随机工具,用于对 Java 的 List 和 Scala 的 Seq、ListBuffer 做随机选择操作。 实现 随机算法和选择算法分离 [Read More]
  • 《数据可视化基础》读后感

    《数据可视化基础》读后感 这本书比我预想的读起来要轻松的多。全书没有任何编程或者数学性质的东西,但是对我很有价值,补充了我的知识中缺失的一片拼图。 这本书分门别类的介绍了各种主要的图表类型和对应的适用场景,给出了各种好和不好的设计示范。 对我来说,用pandas或echart或r画图,并没有特别大的区别,顶多就是花几天学一学,查一查手册。但是图表背后是统计领域的行业知识,很多图表,在读这本书之前,我并不知道它们的存在,或者并不知道如何才能用好。 例如颜色和灰度的关系,以前,我只是模糊的有些感觉,会无意识的尝试一些特定的颜色组合,但是从来没有站在色弱或者色盲人士的角度,认真的去认识这个问题。在书中,清晰的给出了如何普适广大受众的颜色设计。 再例如,对于多维图表的设计,我以前也只是做一些肤浅的尝试,而这本书中,有非常细致的介绍,特别是如何保障图表在脱离电脑,印刷到纸上后,仍然有足够的表达能力。 全书正文三百多页,在我近期阅读的书籍中,算得上是一个小本子,没有公式,没有代码(随书源码使用 R 语言, ggplot2包,可以另行下载)。读起来也没什么负担,但是普适于任何工作或学习与数据相关的人士。当然,真正完成工作,我们需要具体的技术工具,需要切实的统计知识。但是对可视化的了解,也是必不可少的一部分,这本书,可以帮助我们有的放矢。
    Tags: