Suckless--极简主义者的Linux世界

看DistroTube和Luke Smith的Linux视频时被他们高效简洁而炫酷的桌面与窗口操作惊到了,经过一些小小的研究了解到了Tiling Window Manager以及Suckless系列软件。

本文描述了如何安装Suckless系列软件,以及如何在其dwm窗口管理器下基本生存🪵

Linux发行版与GUI介绍

GNU/Linux的诞生

1991年8月25日,21岁的赫尔辛基大学学生Linus Torvalds发布了他的开源操作系统,”Just a hobby, won’t be a big professional thing”,几年后,这个”hobby”–Linux成为了计算机历史上最重要的一个项目。

与Windows这样以盈利的操作系统不同,Linux的理念是:

Software is like sex; it’s better when it’s free. –Linus Torvalds

推荐系统中的排序技术

在工业应用中,推荐系统通常可分为两部分,召回和排序。

召回阶段对应的是之前几篇文章所讲的各种推荐算法,比如据资料所载,Spotify至少使用了三种算法来生成其广受赞誉的Discover Weekly歌单,包括:

  1. 矩阵分解来学习集体智慧;
  2. NLP处理音乐评论文章与报道;
  3. 对音频使用卷积神经网络进行分析。

这些算法各有特点,音频分析显然可以用于解决冷启动问题,NLP处理音乐评论更是可以学得专业人士的领域知识,它们各自独立运行给出自己的结果,由于独立,算法数目可增可减,亦可各自独立迭代变化。

受限玻尔兹曼机的实现及其在推荐系统中的应用

受限玻尔兹曼机(restricted Boltzmann machine, RBM)是一种可通过输入数据集学习概率分布的随机生成神经网络,在降维、分类、协同过滤、特征学习和主题建模等领域中有着广泛应用。

在Netflix Prize后半程,有选手将RBM应用在该预测电影评分问题上并取得了不错的效果。后来Edwin Chen的文章《Introduction to Restricted Boltzmann Machines》使用详细而易懂的方式(没什么数学公式与推导)描述了RBM的运作机理,并使用Python的numpy写了一个简易实现。

这篇文章通过逐行阅读并运行Edwin Chen的开源代码,观看其中用到的数据结构、值的变化来展现RBM的运作原理及实现技巧。

Song2vec

摇滚乐经过几十年的发展,风格流派众多,从blues,到brit invasion,之后是punk,disco,indie rock等等。发展历程大致是这样的:

history of rock

为什么与Yes乐队最相似的歌手是Coda(小田和奏)?

在网易云音乐中,点入某歌手主页时会有一栏为相似歌手:

Yes是1968年成立的著名前卫摇滚乐队,云音乐中与其相似的列表中有Rush,而后者则是来自加拿大的一支异常出色的前卫摇滚乐队,这对于一个喜爱前卫摇滚的听众来说,当然是一个很不错的推荐。然而,Yes的推荐列表中的第一位是Coda(小田和奏),此君是何许人也,此君并不像Rush、Yes一样是几十年前便成立并在摇滚史上留下浓墨重彩的前卫摇滚音乐人,那云音乐又为何会把此君放在Yes相似列表的第一位呢?

Shining Music

在一个更高的角度上讲,音乐推荐系统可以包含机器推荐人工推荐两个部分,对于前者会用很多篇文章花大笔墨去说各种算法实现过程与业内做法和经验;而在人工推荐,或者称为编辑推荐方面,由于笔者近几年收听唱片无数,对上个世纪60年代以来英美主流摇滚音乐、文化有着些许了解,于此处列出一些精品,或有同好若可交流一二即不胜欣喜。

Slope One进行评分预测

Slope One是一种基于物品的协同过滤算法,在2005年的paper《Slope One Predictors for Online Rating-Based Collaborative Filtering》被提出,用于预测用户对某一给定的物品的评分。

依然使用上一篇中提到的自己编造的少量评分数据来描述该算法的运作机制。

音乐数据集汇总

接下来会研究一下音乐推荐系统,需要数据来进行算法及工程代码的演示,遂汇总一下网上开源的音乐数据集。

Million Song Dataset

说到音乐数据集第一位肯定是MSD,它包含了100万首歌曲的信息,总量有280GB大小。由于数据量的确较大,它使用了h5的文件压缩格式,并提供了一些code用于读这种文件。