From 8f13d481c9d533199c0584bd5d90404635a65786 Mon Sep 17 00:00:00 2001 From: lmj01 Date: Wed, 29 May 2024 10:37:53 +0800 Subject: [PATCH] update --- ai/neural.network.md | 39 +++++++++++++++++++++++++++++++++++-- articles/2024/vfs.md | 15 ++++++++++++++ exercises/geometry.md | 21 ++++++++++++++++++++ exercises/index.md | 8 ++++++++ exercises/math.secondary.md | 3 ++- exercises/number.theory.md | 5 +++++ exercises/physics.md | 9 +++++++++ index/article.md | 4 +++- web/pkg.md | 33 +++++++++++++++++++++++++------ 9 files changed, 127 insertions(+), 10 deletions(-) create mode 100644 articles/2024/vfs.md create mode 100644 exercises/geometry.md create mode 100644 exercises/physics.md diff --git a/ai/neural.network.md b/ai/neural.network.md index 3003463..1ab2a51 100644 --- a/ai/neural.network.md +++ b/ai/neural.network.md @@ -18,7 +18,29 @@ ## 前馈神经网络 -当前的输入只依赖于前一层节点的输出,与之前的网络输出状态无关 +MLP实际上是一种非常古老的架构,可以追溯到50年代。其设计初衷是模仿大脑结构;由许多互联的神经元组成,这些神经元将信息向前传递,因此得名前馈网络(feed-forward network)。 + +多层感知器在深度学习模型中无处不在。例如,我们知道它们被用于GPT-2、3以及(可能的)4等模型的Transformer模块之间。对MLP的改进将对机器学习世界产生广泛的影响。 + +其用示意图展示的并没有很好的理解,用数学公式描述更明显一些,下面是一个两层的MLP + +$$ +h_{1} = W_{1}x + b_{1} \newline +f_{1} = f(h_{1}) \newline +h_{2} = W_{2}f_{1} + b_{2} \newline +y = f(h_{2}) +$$ + +其中W是可学习权重的矩阵,b是偏差向量。函数f是一个非线性函数。看到这些方程,很明显,一个MLP是一系列带有非线性间隔的线性回归模型。这是一个非常基本的设置。 + +尽管基本,但它表达力极强。有数学保证,MLP是通用逼近器,即:它们可以逼近任何函数,类似于所有函数都可以用泰勒级数来表示。 + +为了训练模型的权重,我们使用了反向传播(backpropagation),这要归功于自动微分(autodiff)。我不会在这里深入讨论,但重要的是要注意自动微分可以对任何可微函数起作用,这在后面会很重要。 + +存在一些严重的缺点 +- 因为它们作为模型极其灵活,可以很好地适应任何数据。结果,它们很可能过拟合 +- 模型中往往包含大量的权重,解释这些权重以从数据中得出结论变得非常困难。我们常说深度学习模型是“黑盒” +- 拥有大量的权重还意味着它们的训练可能会很长,GPT-3的大部分参数都在MLP层中 ## 反馈神经网络 @@ -33,10 +55,23 @@ RNN的缺陷有梯度消失和梯度爆炸,会导致处理长序列数据时 - 长短时记忆网络LSTM - 门控循环单牙GRU +## [KAN: Kolmogorov-Arnold Networks](https://arxiv.org/abs/2404.19756) + +- [github code](https://github.com/KindXiaoming/pykan) +- [Awesome KAN(Kolmogorov-Arnold Network)](https://github.com/mintisan/awesome-kan) +- [解读](https://mp.weixin.qq.com/s/5wZuw4fJWsouEvsQ5r2zMw) + +Kolmogorov-Arnold 网络(KAN)是一种全新的神经网络构建块。它比多层感知器(MLP)更具表达力、更不易过拟合且更易于解释。 + +Kolmogorov-Arnold 表示定理的目标类似于支撑MLP的通用逼近定理,但前提不同。它本质上说,任何多变量函数都可以用1维非线性函数的加法来表示。 + +这为我们提供了一种不同但简单的范式来开始构建神经网络架构。作者声称,这种架构比使用多层感知器(MLP)更易于解释、更高效地使用参数,并且具有更好的泛化能力。在MLP中,非线性函数是固定的,在训练过程中从未改变。而在KAN中,不再有权重矩阵或偏差,只有适应数据的一维非线性函数。然后将这些非线性函数相加。我们可以堆叠越来越多的层来创建更复杂的函数。 + ## Transformer 是一种基于自注意力的序列建模模型,它的每层都由多头注意力机制和前馈神经网络组成,注意力机制来建模序列中的依赖关系,每个输入元素都与序列中的其他元素进行交互,并根据交互结果来调整自身的表示。 Transformer因并行和长期依赖建模优势,在自然语言领域表现出色, - [3D 可视化 GPT 大语言模型](https://bbycroft.net/llm) -- [神经网络算法 —— 一文搞懂Transformer ](https://developer.aliyun.com/article/1462200?utm_content=g_1000391552&accounttraceid=5b0de7cbee3d4e04b732246795313dcegdxe) \ No newline at end of file +- [神经网络算法 —— 一文搞懂Transformer ](https://developer.aliyun.com/article/1462200?utm_content=g_1000391552&accounttraceid=5b0de7cbee3d4e04b732246795313dcegdxe) + diff --git a/articles/2024/vfs.md b/articles/2024/vfs.md new file mode 100644 index 0000000..b4f610a --- /dev/null +++ b/articles/2024/vfs.md @@ -0,0 +1,15 @@ +# VFS(Virtual FilesyStems) + +之前接触PDF[js-pdf](https://parallax.github.io/jsPDF/docs/module-vFS.html)时,也遇到加载[字体时,也有这个概念virtual-fs](https://github.com/bpampuch/pdfmake/blob/master/src/virtual-fs.js) + +看到[云风博客](https://blog.codingnow.com/2024/02/vfs_plan.html#more)上说他们游戏使用VFS来加载文件,坐版本关联也是如此,类似git的文件管理模式 + +- [Virtual File Systems with a node fs-like API ](https://github.com/kba/vfs) +- [github VFS - Virtual File System, This module is a vfs implementation for node.js. Originally it was created for our internal needs at Cloud9IDE. ](https://github.com/c9/vfs) +- [In-memory filesystem written in JavaScript for Node.js and Browsers ](https://github.com/MatrixAI/js-virtualfs) +- [go github A FileSystem Abstraction System for Go 抽象的VFS](https://github.com/spf13/afero) +- [相比afero,增加了其他云平台的继承,如S3,Azure](https://github.com/C2FO/vfs) + + +## Hash List +Merkle tree,也称Hash Tree,就是存储hash的一棵树,叶子是数据块(如文件或文件集合等)的hash值,非叶子节点对应子节点串联字符串的hash diff --git a/exercises/geometry.md b/exercises/geometry.md new file mode 100644 index 0000000..a313bb6 --- /dev/null +++ b/exercises/geometry.md @@ -0,0 +1,21 @@ +# 几何 + +## 平面几何Plane Geometry + +高中的立体几何问题会转化为平面几何问题,高中数学学习更加需要逻辑的严谨性,而初中平面几何对于逻辑能力培养帮助巨大 + +平面几何的教育意义 + +- 逻辑的严谨性 + - 学习证明过程,平面几何的学习强调证明过程,学生需要学习如何通过逻辑推理来证明几何定理和命题。这种证明过程要求学生遵循严格的逻辑顺序,从而培养他们的逻辑严谨性 + - 理解数学原理,通过学习平面几何,学生可以深入理解数学原理,如欧几里得几何的公理系统。这些原理是数学逻辑的基础,有助于学生建立起对数学概念的深刻理解 + - 培养批判性思维,平面几何的学习要求学生对所学知识进行质疑和验证,每一步都问自己是不是做到了无懈可击,想方设法批判自己的表达,给自己找茬,这有助于培养学生的批判性思维能力,养成独立思考的习惯。 + - 强化逻辑表达,在平面几何的学习中,学生需要学会如何清晰严谨准确地表达自己的推理过程。这种训练有助于学生在其他学科和日常生活中提高逻辑表达能力 + +- 思维的缜密性 + - 关注条件细节,平面几何问题往往需要对题目的每一个条件,图形的每一个细节进行仔细分析,这有助于培养学生对条件的整合能力和细节的关注能力,提高学生思维的缜密性 + - 培养整体思维,解决平面几何问题通常需要从整体到局部的系统性思考,学生需要学会如何将复杂问题分解为局部问题,集中条件,解决问题。这里面往往用到化归思想 + - 问题解决策略,平面几何的学习提供了多种解决问题的策略和方法,如综合法,分析法,代数运算法、反证法等。掌握这些方法与策略有助于学生在面对问题时能够更通俗地思考和解决 + - 避免思维陷阱,在平面几何的学习过程中,学生会接触到各种思维陷阱,如错误的假设或遗漏的条件。 + - 提高分析问题解决问题能力,平面几何问题要求学生分析题目的条件和结论,分析过程有助于提高学生的综合分析能力 + - 培养耐心和细致,学生在解决复杂几何问题时需要反复推敲和验证,这种过程有助于培养他们的耐心和细致。 \ No newline at end of file diff --git a/exercises/index.md b/exercises/index.md index 3fa2557..7e60bdd 100644 --- a/exercises/index.md +++ b/exercises/index.md @@ -1,6 +1,8 @@ # 习题 > 典型和分类学习 +## 数学 + - [数论](/exercises/number.theory.md) - [小学数学](/exercises/math.primary.md) - [初中数学](/exercises/math.secondary.md) @@ -8,3 +10,9 @@ - [二次方程](/exercises/quadratic.equation.md) - [高等数学](/exercises/advanced.mathematics.md) - [夹逼法](/exercises/sequeezing.md) +- [几何](/exercises/geometry.md) + + +## 物理学 + +- [物理学](/exercises/physics.md) diff --git a/exercises/math.secondary.md b/exercises/math.secondary.md index 0e713d1..fa4a677 100644 --- a/exercises/math.secondary.md +++ b/exercises/math.secondary.md @@ -1,5 +1,6 @@ # 中学数学 -> + +- 平面几何 ## 谜题类型 diff --git a/exercises/number.theory.md b/exercises/number.theory.md index a0d3391..06e74c3 100644 --- a/exercises/number.theory.md +++ b/exercises/number.theory.md @@ -61,6 +61,11 @@ $\text{定理中的}m_{i}\text{称为模数}, a_{i}\text{称为余数}, M\text{ 剩余定理在科技领域中最成功的应用是实现通讯保密,如RSA算法, DLP算法,ECC算法。为此需要推广同余的概念。从同余到平方剩余,从无限数域到有限域,再到椭圆曲线,同余的发展和应用反映了西方工业文明过程中的科学探索精神。 +密码学的公钥系统是将密钥一分为二:加密公钥和解密私钥。虽加密公钥对外公开,然解密私钥难以破解。为此需要设计一个好的Trapdoor-Oneway-Function(天窗单向陷门函数),它的计算在一个方向(由x算y)容易,在另一方向(由y算x)极其困难(但知道私钥时,计算它也相当容易)。两者难度差别越大,该公钥系统就越安全。例如,计算两个已知素数乘积容易,而通过大整数分解去找出两个素数因子却难得多。 + +- RSA算法,RSA的安全性是基于大整数素数分解困难的假定,其困难性并没有证明。因此选择的模数的长度必须足够长。随着计算技术的发展,2016年时RSA已被破解到512二进制位,所以的长度至少应该为1024位。 +- DLP算法 +- ECC算法 - 自然数网络 - 网络动力学 - 数论与网络 diff --git a/exercises/physics.md b/exercises/physics.md new file mode 100644 index 0000000..71c83ce --- /dev/null +++ b/exercises/physics.md @@ -0,0 +1,9 @@ +# 物理学 + +物理学是一门研究物质的基本结构和运动规律的基础性科学,它的研究范围非常广泛,大到宇宙天体,小到基本粒子都是其研究对象,可以说是所有自然科学的带头学科,其它各类科学都是以物理学的研究为基础发展起来的,因而物理学在所有学科中的地位非常之高。 + +物理学下面又可以细分电、光、声、力、热等学科,而力学又是其重中之重,在物理学中占据主导。 + +## 力学 + +力学最早的研究可以追溯到古希腊时期,其中产生的最重要的科学家为阿基米德,他是古希腊最伟大的物理学家,其最突出的成就为发现了浮力定律和杠杆原理,并确立了静力学和流体静力学的基本原理,从而享有“力学之父”的美誉,是牛顿之前最伟大的物理学家。 diff --git a/index/article.md b/index/article.md index e7e4451..c3f0c1e 100644 --- a/index/article.md +++ b/index/article.md @@ -37,7 +37,9 @@ - [2024](/articles/2024/app.md) - [2024经验](/articles/2024/experience.md) - [2024趋势](/articles/2024/trend.md) -- [nocobase项目](/articles/2024/nocobase.md) +- [umi企业级框架](/articles/2024/umi.md) +- [nocobase开源项目](/articles/2024/nocobase.md) +- [vfs虚拟文件系统](/articles/2024/vfs.md) - [三维网格](/articles/notes/mesh.md) ## 2023 diff --git a/web/pkg.md b/web/pkg.md index 666f57e..1d2fbad 100644 --- a/web/pkg.md +++ b/web/pkg.md @@ -105,12 +105,6 @@ Parcel默认把所有文件打包进js包中,不存在单独的静态文件目 ## 相关库 -### [nrm切缘源的工具](https://github.com/Pana/nrm) -```shell -nrm ls -nrm use -``` - ### [nvm-windows](https://github.com/coreybutler/nvm-windows/releases) [windows安装nvm的两种方式](https://www.jianshu.com/p/1d80cf35abd2)参考了noinstall的方式,还是会报错 @@ -123,3 +117,30 @@ nrm use yarn config set sharp_binary_host "https://npm.taobao.org/mirrors/sharp" yarn config set sharp_libvips_host "https://npm.taobao.org/mirrors/sharp-libvips" ``` + +### [Husky](https://typicode.github.io/husky/) + +它可以在项目中植入你设定的 git hooks,在 git 提交代码的前后,你预设的 git hooks 可以得到执行,以对代码、文件等进行预设的检查, +一旦检查不通过,就可以阻止当前的代码提交,避免了不规范的代码和 git 提交出现在项目中 + +[github](https://github.com/typicode/husky) + +用来提交是可以编译,这样部署上去的代码才不能编译报错! +```shell +# 安装 +pnpm add --save-dev husky # 安装 +pnpm exec husky init # 配置 + +# 脚本1 +#!/bin/sh +. "$(dirname "$0")/_/husky.sh" +# 分支名字 +current_branch=$(git symbolic-ref HEAD | sed -e 's,.*/\(.*\),\1,') +echo $current_branch + +exec < /dev/tty +# 测试能编译否 +pnpm test-build +# 正常退出 +exit 0 +```