orczhou.com

  • 首页
  • 云数据库性能测试与对比
    • RDS MySQL 性能
    • RDS PostgreSQL 性能
    • AWS RDS架构与选型
    • 阿里云RDS架构与选型
    • 阿里云ARM/x86 RDS
    • 华为云鲲鹏/x86 RDS
    • AWS Graviton/x86
  • 关于MySQL
    • <高性能MySQL>
    • 如何学习MySQL
    • MySQL 版本选择
    • MySQL 版本历史
  • 其他
    • LLM 与 AI 技术
    • 数据库行业动态
    • 关于生活
    • 归档页面
    • 管理页面
    • 关于作者
  • 安装体验MySQL 9.1 (Docker 安装)

    2024-10-26

    Docker 安装非常简单,几乎一分钟内即可完成安装。

    目录

    • Docker 安装 MySQL 9.1
    • 其他的 Docker 相关管理命令
    • 体验 MySQL 9.0/9.1 系列
    • 啥!FUNCTION DISTANCE does not…
    • 参考链接

    Docker 安装 MySQL 9.1

    安装镜像:

    docker pull container-registry.oracle.com/mysql/community-server:9.1

    启动镜像:

    docker run --name=mysql91  --restart on-failure -d container-registry.oracle.com/mysql/community-server:9.1

    查看初始安装时 root 账号密码:

    docker logs mysql91 2>&1 | grep GENERATED

    登录安装的数据库:

    docker exec -it mysql91 mysql -uroot -p

    好了。这就完成安装了:

    # docker exec -it mysql91 mysql -uroot -p
    Emulate Docker CLI using podman. Create /etc/containers/nodocker to quiet msg.
    Enter password:
    Welcome to the MySQL monitor.  Commands end with ; or \g.
    Your MySQL connection id is 10
    Server version: 9.1.0
    
    Copyright (c) 2000, 2024, Oracle and/or its affiliates.
    
    Oracle is a registered trademark of Oracle Corporation and/or its
    affiliates. Other names may be trademarks of their respective
    owners.
    
    Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
    
    mysql>

    修改 root 密码:

    ALTER USER 'root'@'localhost' IDENTIFIED BY 'YOUR-NEW-PASSWORD';

    详细的步骤与说明可以参考:Basic Steps for MySQL Server Deployment with Docker。

    其他的 Docker 相关管理命令

    docker start    mysql91 # 启动
    docker stop     mysql91 # 关闭
    docker restart  mysql91 # 重启
    
    docker rm       mysql91  # 删除容器

    体验 MySQL 9.0/9.1 系列

    创建数据库:

    mysql> create database orczhou;
    Query OK, 1 row affected (0.00 sec)
    
    mysql> use orczhou
    Database changed

    创建一个表,可以用于存储向量,并进行简单的向量计算:

    create table vector_t01 (
        id int,
        s_v_01 vector(390),
        s_v_02 vector(390)
    );
    
    mysql> create table vector_t01(id int,s_v_01 vector(390),s_v_02 vector(390));
    Query OK, 0 rows affected (0.02 sec)
    
    mysql> insert into vector_t01 values (1,string_to_vector('[1,2,3]'),string_to_vector('[4,5,6]'));
    Query OK, 1 row affected (0.00 sec)
    
    mysql> select DISTANCE(s_v_01,s_v_02) FROM vector_t01;
    ERROR 1305 (42000): FUNCTION orczhou.DISTANCE does not exist

    啥!FUNCTION DISTANCE does not exist

    看看文档描述,我下巴掉了一地(参考):

    Note

    DISTANCE() is available only for users of HeatWave MySQL on OCI; it is not included in MySQL Commercial or Community distributions.

    没有search就算了,好不容易有一个 DISTANCE,发现还是受限制的…

    好了,那就体验到这里吧… 期待在后续的版本能够把搜索功能补齐。一定要体验的话,可以自己去Oracle Cloud进行测试。

    参考链接

    • Basic Steps for MySQL Server Deployment with Docker
    • More Topics on Deploying MySQL Server with Docker

  • 云数据库行业动态@2024-10-25

    2024-10-25

    标题:腾讯TDSQL再创TPC-DS世界纪录; OceanBase发布会发力AP/向量等能力;金山云推出云MySQL Serverless

    重要更新

    腾讯云 TDSQL 再创 TPC-DS 世界纪录,以7260万QphDS的性能和37.52元/kQphDS的性价比打破世界纪录,性能提升282%,成本降低37%。通过自研MPP和并行执行框架,TDSQL显著提升资源利用率和计算效率,广泛应用于30多家金融机构  [1] 

    OceanBase发布会宣布推出4.2.5 LTS和 4.3.3 两个里程碑版本,强化关键业务负载和实时分析能力,新增向量检索功能,简化AI应用技术栈。OceanBase持续推进一体化产品战略,客户数突破2000家,连续 4 年客户数增速超过 100%,广泛应用于金融、互联网等多个行业。 [2] 

    ACDU(中国数据库联盟) 中国行-上海站活动将于本周六下午在上海举办,感兴趣的可以现场参加 [21] 

    更新详情

    华为云
    • 托管 Redis 6.0 支持Proxy集群和读写分离实例17
    • 托管 Redis 支持用户自助升级Redis实例小版本和代理版本 [18] 
    • 托管 Redis 支持主备实例直接变更为读写分离实例  [19] 
    阿里云
    • RDS MySQL标准版(原X86)集群系列增加64核 128GB(mysql.x2.8xlarge.xc)和64核 256GB(mysql.x4.8xlarge.xc)规格。[4]
    金山云
    • 金山云关系型数据库MySQL Serverless开启公测
    GCP(谷歌云)
    • Cloud SQL 支持配置了私有服务访问的实例创建只读副本(private services access) [6] 
    火山云(字节)
    • 在开启全量 SQL 洞察时,同时默认将存储全部 SQL 类型进行存储 [10]
    AWS(亚马逊云)
    • Aurora Global Database 支持全局写入口(endpoints) [12]
    • RDS 集群版支持 IAM 数据库身份验证 [14]
    • Timestream for LiveAnalytics 推出 Query Insights 功能 [16]
    参考链接
    • [1] https://mp.weixin.qq.com/s/jiNdlqbHn2HkAiBak2rAAw https://mp.weixin.qq.com/s/uJHPSoAhOSBYG8OYq8hvvQ
    • [2] https://mp.weixin.qq.com/s/bC1dIANLqQOYXkOBguBB1Q
    • [4] https://help.aliyun.com/zh/rds/apsaradb-rds-for-mysql/primary-apsaradb-rds-for-mysql-instance-types
    • [5] https://cloud.google.com/sql/docs/mysql/connect-connectors#enforce
    • [6] https://cloud.google.com/sql/docs/sqlserver/connect-connectors#enforce
    • [7] https://cloud.google.com/sql/docs/postgres/connect-connectors#enforce
    • [8] https://docs.oracle.com/iaas/releasenotes/fleet-management/oct2024-new-features.htm
    • [9] https://www.volcengine.com/docs/6956/155349
    • [10] https://www.volcengine.com/docs/6956/1277446
    • [11] https://www.volcengine.com/docs/6956/155000
    • [12] https://aws.amazon.com/about-aws/whats-new/2024/10/amazon-aurora-global-database-writer-endpoint/
    • [13] https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Appendix.Oracle.Options.APEX.html
    • [14] https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/create-multi-az-db-cluster.html#create-multi-az-db-cluster-settings
    • [15] https://aws.amazon.com/about-aws/whats-new/2024/10/aws-iam-identity-center-simplifies-calls-services-single-identity-context
    • [16] https://aws.amazon.com/about-aws/whats-new/2024/10/amazon-timestream-liveanalytics-introduces-query-insights
    • [17] https://support.huaweicloud.com/productdesc-dcs/dcs-pd-210209001.html
    • [18] https://support.huaweicloud.com/usermanual-dcs/dcs-ug-0312016.html
    • [19] https://support.huaweicloud.com/usermanual-dcs/dcs-ug-0713006.html
    • [20] https://mp.weixin.qq.com/s/aI1auy-MYr8qjJ7xvno6YQ
    • [21] https://mp.weixin.qq.com/s/lEuLtg7q9F4B0MefTrzLOQ

  • 云数据库行业动态@2024-10-18

    2024-10-18


    标题:ApertureDB融资800万美元;腾讯云重磅发布MySQL集群版; OceanBase年度发布会将举行; PostgreSQL 17/MySQL 9.1发布

    重要更新

    ApertureDB 融资$8百万美元,致力于构建AI时代的多模数据流服务,帮助企业更加敏捷的构建上层的智能化的服务。[2] [3] 

    10月23日(下周三),OceanBase年度发布将在北京举行,感兴趣的可以线下报名参加。 [1] 

    MySQL 发布新的创新版本 9.1;PostgreSQL发布年度新版本 17;MongoDB 8 发布。 [31] [32] [33] 

    腾讯云数据库举办在线 MySQL 集群版重磅发布会 [34] ,该功能在腾讯云2024年03月灰度上线,06月份全量发布,目前已经逐渐稳定 [35] 。

    更新详情

    阿里云
    • 托管MongoDB 支持了跨地域备份和恢复功能,可以自动将数据备份到另一个地域,满足数据监管或容灾恢复等需求场景。[4]
    GCP (谷歌云)
    • AlloyDB 支持了仅重启多个只读节点中的某一个或几个 [8] 
    火山云 (字节)
    • 托管 SQL Server 支持在创建实例和恢复到新实例时设置字符集 [10]
    • 托管 SQL Server 支持删除白名单,同时优化编辑白名单入口。[11]
    Azure (微软云)
    • Cosmos DB for MongoDB(vCore版) 支持了多分区、跨区域的复制 (公测)  [5] 
    • 托管 Redis Enterprise 服务正式 GA 支持了 7.2版本 [6] 
    AWS (亚马逊云)
    • Aurora PostgreSQL 与 Redshift 的Zero-ETL 功能正式GA [16]
    • 托管 RDS 支持了 MariaDB 11.4 [17]
    • DynamoDB 与 Redshift 的Zero-ETL 功能正式 GA [21]
    腾讯云
    • 云数据库 PostgreSQL 在数据迁移能力上支持独立的数据校验。[22]
    参考链接
    • [1] https://mp.weixin.qq.com/s/RODGpTzdmw8DmCI8oLdNnw
    • [2] https://www.aperturedata.io/product
    • [3] https://siliconangle.com/2024/10/10/aperturedata-raises-8-5m-multimodal-ai-database/
    • [4] https://help.aliyun.comhttps://help.aliyun.com/zh/mongodb/user-guide/cross-region-backup
    • [5] https://azure.microsoft.com/en-us/updates/v2/mdb-vcore-repl
    • [6] https://azure.microsoft.com/en-us/updates/v2/Redis-7-2-on-Azure-Cache-for-Redis-Enterprise
    • [8] https://cloud.google.com/alloydb/docs/instance-restart#restart-node-read-pool
    • [10] https://www.volcengine.com/docs/6899/141335
    • [11] https://www.volcengine.com/docs/6899/155949
    • [16] https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/zero-etl.html
    • [17] https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/MariaDB.Concepts.VersionMgmt.html
    • [21] https://aws.amazon.com/about-aws/whats-new/2024/10/amazon-dynamodb-zero-etl-integration-redshift/
    • [22] https://cloud.tencent.com/document/product/409/110836
    • [31] https://dev.mysql.com/doc/relnotes/mysql/9.1/en/news-9-1-0.html
    • [32] https://www.postgresql.org/about/news/postgresql-17-released-2936/
    • [33] https://www.mongodb.com/docs/manual/release-notes/8.0/
    • [34] https://mp.weixin.qq.com/s/m3E38iOYE3tCiea2EkCzQg
    • [35] https://cloud.tencent.com/document/product/236/104587

  • Protected: 国庆假期在共青的七天

    This content is password-protected. To view it, please enter the password below.

  • 云数据库行业动态@2024-10-11

    2024-10-11

    标题:Zilliz获Forrester报告全球第一;OB支持向量能力;Azure发布DiskANN,吊打pg_vector;阿里云PG发布内置分析引擎;AWS发布托管Valkey服务

    重要更新

    Azure发布 PostgreSQL 向量索引扩展DiskANN,声称在构建HNSW/IVFFlat索引上,速度、精准度都超越pg_vector,并解决了pg_vector长期存在的偶发性返回错误结果的问题 [1] 。

    阿里云 RDS PostgreSQL 发布AP加速引擎(rds_duckdb)。该引擎提供了列存表和向量化执行能力,显著提升复杂查询的执行速度,且无需修改原始查询语句,从而确保您能够方便且高效地获取结果。当前白名单开放中[7]

    OceanBase发布4.3.3版本,支持了向量数据存储与索引功能,这也是4.3版本第一个GA版本[3]。

    Forrester发布第一份Vector Database的报告(Forrester Wave),Zilliz(产品名:milvus)凭借完整、高效的向量数据处理能力获的第一。后续厂商分别有:DataStax、Microsoft、Amazon、Oracle、Pinecone等[2]。

    The Forrester Wave™_ Vector Databases, Q3 2024 _ 0013n00001ylAuOAAU _ 6e412d8aDownload

    更新详情

    阿里云
    • RDS MySQL支持定价详情功能,可以查看各计费项的定价说明和价格。[4]
    • RDS PostgreSQL新增支持PostgreSQL 17大版本。[5]
    • RDS PostgreSQL高可用系列标准版新增pg.x8.16xlarge.2c(128核 1024GB)独享规格。[6]
    • RDS PostgreSQL发布AP加速引擎(rds_duckdb)。该引擎提供了列存表和向量化执行能力,显著提升复杂查询的执行速度[7]
    • RDS PostgreSQL 内核版本发布小版本20240830 [8]
    • PolarDB Serverless集群支持IMCI列存索引(IMCI)功能 [9]
    GCP(谷歌云)
    • 创建Cloud SQL支持了证书颁发机构 (CA) 配置功能 [11] 
    • pg_ivm 扩展版本 1.9 现已正式发布。此扩展可让您更新物化视图,其中仅计算增量更改并将其应用于视图,而不是从头开始重新计算内容 [12] [13] 
    • “alloydb_scann”扩展程序(以前称为“postgres_scann”)已正式发布(GA),如需详细了解如何存储向量嵌入、创建索引以及调整索引以实现更快的查询性能和更好的召回率,请参阅使用向量。[17] 
    • 现在,您可以在创建实例后使用“gcloud sql instance patch”命令更新 Cloud SQL for SQL Server 实例的时区。以前,您只能在首次创建实例时为 SQL Server 实例设置自定义时区.[19] 
    • Cloud SQL for MySQL 8.4 现已正式发布  [24] 
    • AlloyDB 主实例和备实例上支持公网IP [26] 
    火山云(字节)
    • DBW 数据库审计日志的默认保留时长变更为 30 天,同时新增支持选择保留 180 天、1 年和 3 年。[30]
    • 在操作审计页面 DBW 管理员支持查看所有操作行为,DBW 普通用户和非 DBW 系统角色仅支持查看自己的操作行为。[33]
    AWS(亚马逊云)
    • Aurora Serverless v2 新增支持 256 个 ACU [35]
    • Amazon Aurora/RDS 支持控制台到代码 [36]
    • Amazon 新增 ElastiCache for Valkey /MemoryDB for Valkey [38] [39] 
    • Aurora 支持 PostgreSQL 16.4、15.8、14.13、13.16 和 12.20 [50]
    • Aurora MySQL 现已支持 RDS 数据 API [51]
    腾讯云
    • TDSQL-C MySQL 版“只读分析引擎”内核版本更新到1.2404.10.0,主要优化了产品使用的体验和稳定性。支持了 date_sub 函数 [53]
    Azure(微软云)
    • 托管 PostgreSQL 支持了更多数据库参数的修改 [54]
    • 托管 Redis 7.2( Azure Cache for Redis Enterprise)正式发布 [55] 
    • 托管 PostgreSQL 支持postgresql_anonymizer插件,更好的保护隐私数据 [56] 

    参考链接

    • [1] https://azure.microsoft.com/en-us/updates/v2/DiskANN-indexing-on-Azure-Database-for-PostgreSQL
    • [2] https://mp.weixin.qq.com/s/Sq1GUOTP02QWBOqS0N3A9A
    • [3] https://www.oceanbase.com/product/oceanbase-database-rn/releaseNote#V4.3.3
    • [4] https://help.aliyun.com/zh/rds/apsaradb-rds-for-mysql/new-features-new-specifications-apsaradb-rds-releases-the-pricing-details-feature
    • [5] https://help.aliyun.com/zh/rds/apsaradb-rds-for-postgresql/features-of-apsaradb-rds-for-postgresql
    • [6] https://help.aliyun.com/zh/rds/apsaradb-rds-for-postgresql/primary-apsaradb-rds-for-postgresql-instance-types
    • [7] https://help.aliyun.com/zh/rds/apsaradb-rds-for-postgresql/use-the-rds-duckdb-extension
    • [8] https://help.aliyun.com/zh/rds/apsaradb-rds-for-postgresql/release-notes-for-alipg
    • [9] https://help.aliyun.comhttps://help.aliyun.com/zh/polardb/polardb-for-mysql/user-guide/set-the-scale-up-strategy-of-serverless-cluster
    • [11] https://cloud.google.com/products#product-launch-stages
    • [12] https://cloud.google.com/sql/docs/postgres/extensions
    • [13] https://cloud.google.com/sql/docs/postgres/set-maintenance-window
    • [17] https://cloud.google.com/alloydb/docs/ai/store-embeddings
    • [19] https://cloud.google.com/sql/docs/sqlserver/instance-settings#timezone
    • [24] https://cloud.google.com/sql/docs/mysql/create-instance
    • [26] https://cloud.google.com/products#product-launch-stages))
    • [30] https://www.volcengine.com/docs/6956/155353
    • [33] https://www.volcengine.com/docs/6956/1333447
    • [35] https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-serverless-v2.how-it-works.html#aurora-serverless-v2.how-it-works.capacity
    • [36] https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Using_C2C.html
    • [38] https://aws.amazon.com/about-aws/whats-new/2024/10/amazon-elasticache-valkey
    • [39] https://aws.amazon.com/about-aws/whats-new/2024/10/amazon-memorydb-valkey
    • [50] https://aws.amazon.com/about-aws/whats-new/2024/09/amazon-aurora-supports-postgresql-new-versions/
    • [51] https://aws.amazon.com/about-aws/whats-new/2024/09/amazon-aurora-mysql-rds-data-api/
    • [52] https://aws.amazon.com/about-aws/whats-new/2024/09/amazon-timestream-for-influxdb-jakarta-milan-uae-zaragoza/
    • [53] https://cloud.tencent.com/document/product/1003/109576
    • [54] https://azure.microsoft.com/en-us/updates/v2/performance-management-server-parameters-now-modifiable-on-Azure-Database-for-PostgreSQL
    • [55] https://azure.microsoft.com/en-us/updates/v2/Redis-7-2-on-Azure-Cache-for-Redis-Enterprise
    • [56] https://azure.microsoft.com/en-us/updates/v2/Azure-Database-for-PostgreSQL-support-for-postgresql-anonymizer
  • 二元函数的偏导数、方向导数、梯度

    2024-10-07

    目录

    • 1. 基本概念
      • 1.1 偏导数
      • 1.2 梯度向量
      • 1.3 方向导数
    • 2. 直观理解方向导数
    • 3. 方向导数的计算与证明
    • 4. 关于上述证明
    • 5. 向量形式化表达
    • 6. 多维场景扩展
    • 7. 说明:直觉
    • 8. 所以,最后

    梯度下降法(或者其改进算法)是机器学习的基础算法之一。在了解梯度下降算法的过程中,会经常看到一句话:“梯度是函数在某一点变化率最大的方向”。本文从较为严格数学证明的角度说明为什么是这样。理解这个证明过程,可以很好的理解梯度下降算法,及其优化算法或者优化方向。

    本文主要考虑二元函数场景,即 \(z=f(x,y) \)。原因是一元函数场景过于简单,不具有代表性,另外,二元场景向多元场景推广也还比较好理解。

    1. 基本概念

    1.1 偏导数

    偏导数的定义比较好理解,即固定一个变量(当做常数),对另一个变量求导,记作:

    $$ \frac{\partial z}{\partial x} \; , \; \frac{\partial z}{\partial y} $$

    1.2 梯度向量

    由各个偏导数组成的向量,就叫梯度向量,通常记作:\( \nabla \),有:

    $$ \nabla f = (\frac{\partial z}{\partial x} , \frac{\partial z}{\partial y} ) $$

    多元/多维场景,则常记作:

    $$ \nabla f = (\frac{\partial f}{\partial x_1} , \frac{\partial f}{\partial x_2} … , \frac{\partial f}{\partial x_n} ) $$

    1.3 方向导数

    多元函数没有简单的“导数”的概念。但为了研究多元函数在某点的变化率,我们可以考虑“方向导数”。

    具体的,考虑函数 \( z = f(x,y) \),该函数定义域为\( \mathbb{R}^2 \),其方向向量是 $$ \{ u,v | u^2 +v^2 = 1 \} $$,取其中的一个方向 \( l = (u_0,v_0) \),并假设该方向与\( x \)轴正方向夹角为\( \theta \)。

    那么,函数\( z = f(x,y) \)在点\( (x_0,y_0) \)处,在方向 \( l = (u_0,v_0) \)的导数记作

    $$ \frac{\partial z}{\partial l} |_{(x_0,y_0)} $$

    2. 直观理解方向导数

    图1是一个非常清晰的关于方向导数的图例。绿色曲面即为 \( z = f(x,y) \),在点\( A^\prime \)上考虑方向为\( \vec{h}\)的方向导数。过点\( A^\prime \)与方向\( \vec{h}\),与\( z \)轴平行,存在一个平面,即图1中的半透明的平面,该平面与 \( z = f(x,y) \)相交与一条曲线,即图1中的黄色曲线。

    那么,该方向导数,即为在该黄色曲线上,\( A^\prime \)位置的导数。这就是关于方向导数的直观理解。

    所以,偏导数\( \frac{\partial z}{\partial x} \; , \; \frac{\partial z}{\partial y} \)可以理解为在\( (1,0) \)和\( (0,1) \)这两个方向上的方向导数。

    图1:来自Wikipedia: Directional derivative

    与一般的导数定义类似的,可以定义方向导数:

    $$ \frac{\partial z}{\partial l} |_{(x_0,y_0)} = \lim\limits_{P \to P_0} = \frac{f(P) – f(P_0)}{||P-P_0||} = \lim\limits_{\rho \to 0} \frac{\Delta z}{ \rho } $$

    图2:\( P \) 点在\( (u,v) \)方向逼近\( P_0 \)

    可以到如下结论(详细证明参考后续小节“方向导数的计算与证明”),如果方向\( l = (u_0,v_0) \)与 \( x \)轴的夹角是\( \theta \),那么\( z = f(x,y) \)在点\( (x_0,y_0) \)处,在方向 \( l = (u_0,v_0) \)的导数取值如下:

    $$ \frac{\partial z}{\partial l} |_{(x_0,y_0)} = \frac{\partial z}{\partial x} |_{(x_0,y_0)} cos(\theta) + \frac{\partial z}{\partial y} |_{(x_0,y_0)} sin(\theta) \tag{1} $$

    根据柯西不等式,我们有如下结论:

    $$ \frac{\partial z}{\partial l} |_{(x_0,y_0)} = \frac{\partial z}{\partial x} |_{(x_0,y_0)} cos(\theta) + \frac{\partial z}{\partial y} |_{(x_0,y_0)} sin(\theta)
    \\
    \le \sqrt{ ((\frac{\partial z}{\partial x} |_{(x_0,y_0)})^2 + (\frac{\partial z}{\partial y} |_{(x_0,y_0)})^2)(sin^2(\theta)+cos^2(\theta)) }
    \\
    = \sqrt{ (\frac{\partial z}{\partial x} |_{(x_0,y_0)})^2 + (\frac{\partial z}{\partial y} |_{(x_0,y_0)})^2 }
    $$

    上面表示的极值 \( \sqrt{ (\frac{\partial z}{\partial x} |_{(x_0,y_0)})^2 + (\frac{\partial z}{\partial y} |_{(x_0,y_0)})^2 } \) 正是偏导数向量的“范数”(长度),根据柯西不等式取最大值的条件也有:

    $$
    \frac{cos(\theta)}{\frac{\partial z}{\partial x}} = \frac{sin(\theta)}{\frac{\partial z}{\partial y}}
    \\
    tan(\theta) = \frac{\frac{\partial z}{\partial y} } { \frac{\partial z}{\partial x} } = \frac{\Delta y}{\Delta x}
    $$

    所以,即,即当方向恰好为偏导数向量时,方向导数取最大值。也就是,我们经常会说的,会看到的,“偏导数向量是所有方向中最为陡峭的方向”或者说“梯度是函数在某一点变化率最大的方向”。

    3. 方向导数的计算与证明

    在前面,我们是直接给出了如下的结论的:

    $$ \frac{\partial z}{\partial l} |_{(x_0,y_0)} = \frac{\partial z}{\partial x} |_{(x_0,y_0)} sin(\theta) + \frac{\partial z}{\partial y} |_{(x_0,y_0)} cos(\theta)$$

    这个结论的获得,是需要有一些比较复杂的计算或者说证明的。这里,其主要证明步骤/方法之一,如下:

    \( \frac{\partial z}{\partial l} |_{(x_0,y_0)} = \lim\limits_{P->P_0}\frac{f(P)-f(P_0)}{|P-P_0|} = \lim\limits_{P->P_0}\frac{f(x_0+\Delta{x},y_0+\Delta{y})-f(x_0,y_0)}{\sqrt{\Delta{x}^2+\Delta{y}^2}}
    \)

    由拉格朗日中值定理:存在\( \alpha \; \beta \),使得下式成立,且 \( 0 \le \alpha \le 1 \; and \; 0 \le \beta \le 1 \):

    \(
    f(x_0+\Delta{x},y_0+\Delta{y})-f(x_0,y_0)
    \\
    = [f(x_0+\Delta{x},y_0+\Delta{y}) – f(x_0,y_0+\Delta{y})] + [f(x_0,y_0+\Delta{y}) -f(x_0,y_0)]
    \\
    = f_x'(x_0 + \alpha\Delta{x} ,y_0+\Delta{y})\Delta{x} + f_y'(x_0, y_0 + \beta\Delta{y} )\Delta{y}
    \)

    容易有,这几个条件是等价的: \( P \to P_0 \)、\( \Delta{x} \to 0 \, and \, \Delta{y} \to 0 \) 、\( \sqrt{\Delta{x}^2+\Delta{y}^2} \to 0 \)

    考虑\( \frac{\partial z}{\partial x} \)在\( (x_0,y_0)\)处连续(这是一个条件),则有: $$ \lim\limits_{\Delta{x} \to 0 \\ \Delta {y} \to 0 }f_x'(x_0 + \alpha\Delta{x} ,y_0+\Delta{y}) = f_x'(x_0,y_0) $$

    故:

    $$
    \begin{align}
    \frac{\partial z}{\partial l} |_{(x_0,y_0)} & = \lim\limits_{P->P_0}\frac{f(P)-f(P_0)}{|P-P_0|}
    \\
    & = \lim\limits_{P->P_0}\frac{f(x_0+\Delta{x},y_0+\Delta{y})-f(x_0,y_0)}{\sqrt{\Delta{x}^2+\Delta{y}^2}}
    \\
    & =\lim\limits_{P->P_0}\frac{f_x'(x_0+\alpha\Delta{x},y_0+\Delta{y})\Delta{x} + f_y'(x_0,y_0+\Delta{y})\Delta{y}}{\sqrt{\Delta{x}^2+\Delta{y}^2}}
    \\
    & =\lim\limits_{P->P_0}\frac{f_x'(x_0+\alpha\Delta{x},y_0+\Delta{y})\Delta{x}}{\sqrt{\Delta{x}^2+\Delta{y}^2}} + \frac{f_y'(x_0,y_0+\Delta{y})\Delta{y}}{\sqrt{\Delta{x}^2+\Delta{y}^2}}
    \end{align}
    $$

    根据上面的图2,容易有:

    $$
    \frac{\Delta{x}}{\sqrt{\Delta{x}^2+\Delta{y}^2}} = cos(\theta) \quad \frac{\Delta{y}}{\sqrt{\Delta{x}^2+\Delta{y}^2}} = sin(\theta)
    $$

    所以:

    \( =\lim\limits_{P->P_0}\frac{f_x'(x_0+\alpha\Delta{x},y_0+\Delta{y})\Delta{x}}{\sqrt{\Delta{x}^2+\Delta{y}^2}} + \frac{f_y'(x_0,y_0+\Delta{y})\Delta{y}}{\sqrt{\Delta{x}^2+\Delta{y}^2}}
    \\
    =f_x'(x_0,y_0)cos(\theta) + f_y'(x_0,y_0)sin(\theta)
    \\
    \)

    好了,这就证明完成了。

    4. 关于上述证明

    上述证明,在一般的《数学分析》教程的“多元函数微分”相关章节都会有,或者会有类似的问题证明。过程还是比较巧妙的,先是“无中生有”新增了一个项(\( f(x_0,y_0+\Delta{y}) \)),分别构造了关于 \( x \)和\( y \)的偏导数,然后使用了“中值定理”,将差值变成,导数和微分变量的积(准确的说,还要加上一个关于\( \rho \)的高阶无穷小)。

    5. 向量形式化表达

    使用向量形式化表达,看起来会简洁很多。对于方向向量(这也是一个单位向量) \( \mathbf{l} = (u,v)\),函数\( f \)的偏导数向量记为\( \nabla f = (\frac{\partial z}{\partial x} , \frac{\partial z}{\partial y} ) \) ,那么方向导数为 \( D_{\mathbf{l}}f(P_0) = \nabla f \cdot \mathbf{l} \) ,这与上面表达式的意义是相同的。

    根据点击的性质,我们有:

    \( D_{\mathbf{l}}f(P_0) = \nabla f \cdot \mathbf{l} = ||\nabla f|| ||\mathbf{l} || cos\theta = ||\nabla f|| cos\theta \)

    从这里,更容易看出,方向向量与梯度向量相同时,方向导数取最大值,最大值即为梯度向量的模。

    6. 多维场景扩展

    在很多的材料中,在前面的表达式中,经常会看到的是 \( cos(\alpha) \; cos(\beta) \),而不是本文中的 \( sin(\theta) \; cos(\theta) \)。这里的 \( \alpha \)是方向向量与x轴正方向的夹角, \( \beta \)是方向向量与y轴正方向的夹角;在定义域 \( \mathbb{R}^2 \)上有:\( \alpha + \beta = 90^{\circ} \),即有 \( cos^2\alpha + cos^2\beta = 1 \)。

    这种写法有着更好的扩展性,当在更多元的情况下,例如三元场景下,即 \( z = f(x_1,x_2,x_3) \),方向向量与 x,y,z轴的夹角分别是:\( \alpha \; \beta \; \gamma \),则有: \( cos^2\alpha + cos^2\beta + cos^2 \gamma = 1 \)。

    任意维度,也有类似的结论,并且应用柯西不等式时,上述结论也是类似的。

    7. 说明:直觉

    本文内容需要或者可以建立如下的“直觉”:

    • 在一维空间(即\( \mathbb{R}\)上的函数,在某一点上的一阶导数的符号(正/负),可以代表在该方向上,函数的趋势是增长还是下降,“正号”,则是增长;“负号”,则是下降。
    • 在一维空间(即\( \mathbb{R}\)上的函数,在某一点上的一阶导数的绝对值大小,即为其“陡峭程度”(更多的时候理解为,变化率大小)

    上述两个结论,基本上认为是显然的。下面扩展到多维场景,也几乎是显然的:

    • 在高维空间/多维变量(即\( \mathbb{R}^n\)时,在某一点的任意方向上,都有导数,称为方向导数,该方向导数的符号(正/负),可以代表在该方向上,函数的趋势是增长还是下降,“正号”,则是增长;“负号”,则是下降。
    • 在高维空间/多维变量(即\( \mathbb{R}^n\)时,在某一点的任意方向上,都有导数,该导数的绝对值大小,即为其“陡峭程度”(更多的时候理解为,变化率大小)
    • 更进一步的,也就是本文中的一个结论:高维空间/多维变量(即\( \mathbb{R}^n\)时,函数的所有的方向导数,在偏导数向量方向上,取值最大,即是最为“陡峭”的方向。

    8. 所以,最后

    所以,这就是为什么梯度下降算法中,总是倾向于选择偏导数向量方向进行下一次迭代。

    在本科毕业后,最后留了几本书:《数学分析》(上下册)、概率论,一直到研究生毕业、再到工作都一直带着,还从北京邮寄到了杭州。本想只是做个纪念的,没想到竟然还能用上…

←Previous Page Next Page→
  • “众鸟高飞尽 孤云独去闲”
  • —唐 李白

关于我

orczhou.com

·

Theme by Brian Gardner

本作品采用知识共享许可协议 许可协议进行许可。