什么是 AGI
AGI
定义
AGI
是 Artificial General Intelligence
的缩写,中文翻译为 人工通用智能
。它是一种能够像人类一样,具有智能的机器。它能够像人类一样,通过感知、认知、推理、决策、行动等过程,完成各种任务。懂 AI、懂编程、懂业务 的超级个体,会是 AGI 时代最重要的人。
AI 起源
每个时代都有对 AI 的定义,没有绝对的答案。
AGI
定义 AGI
是 Artificial General Intelligence
的缩写,中文翻译为 人工通用智能
。它是一种能够像人类一样,具有智能的机器。它能够像人类一样,通过感知、认知、推理、决策、行动等过程,完成各种任务。懂 AI、懂编程、懂业务 的超级个体,会是 AGI 时代最重要的人。
每个时代都有对 AI 的定义,没有绝对的答案。
ChatGPT
能干什么 I’ve been reluctant to try ChatGPT. Today I got over that reluctance. Now I understand why I was reluctant.
The value of 90% of my skills just dropped to $0. The leverage for the remaining 10% went up 1000x. I need to recalibrate.
以下是一些举例。
# 加载环境变量 import openai import os from dotenv import load_dotenv, find_dotenv _ = load_dotenv(find_dotenv()) # 读取本地 .env 文件,里面定义了 OPENAI_API_KEY openai.api_key = os.getenv('OPENAI_API_KEY') prompt = """ 帮我寄到北京市朝阳区亮马桥外交办公大楼,写张三就行,电话18011211132 提取上述信息中的收件人(name),地址(address)和电话号码(phone),并以JSON格式输出,key用英文,value用原文中的语言,直接输出结果。 """ response = openai.Completion.create( model="text-davinci-003", prompt=prompt, max_tokens=240, temperature=0 ) print(response.choices[0].text)
{"name":"张三","address":"北京市朝阳区亮马桥外交办公大楼","phone":"18011211132"}
首先,我们从三个角度来看待一个业务问题:
绝大多数业务问题,都可以归入如下至少一类。
分类 |
描述 |
---|---|
分类问题 | 笼统的说,输出是标签。输出的标签是个有限集。输出的标签是预先定义好的有限集。 例如:分析一段评论是正向还是负向,是典型的分类问题。输出是两个标签之一:“正向”或“负向”。 更复杂的分类,比如,输入一篇新闻,输出是“政治”、“经济”、“体育”、“娱乐”、“科技”之一(或多个标签)。 |
聚类问题 | 没法提前规定有多少种标签,只能把同一类事物聚合在一起,到底能聚出多少类,是数据本身决定的。 例如:自动收集客户经常问到的问题。(我们无法预知客户有多少问题,只能把同一个意思的问题聚合在一起) |
回归问题 | 输出是一个数值,更重要的是,评价输出好坏的标准是误差大小,而不是二元的对错。 举例:跟据专车司机每天工作的时段、时长、跑的公里数,预估他一天的净利润。 |
决策问题 | 输出是连续的一系列动作,每一步动作都有代价或收益,每一步的动作本身没有对错,而是要最大化最终的收益。 举例:打游戏、下棋、无人驾驶、对话、量化投资。 |
概率密度估计 | 在机器学习的问题中,想直接去做概率密度估计是非常难的。考虑到深度学习的训练过程中,需要做反向传播,那么某些概率分布,比如后验概率就需要变得非常简单,这样才能高效、容易得计算导数。 |
复杂问题的两个视角
划重点:
know-how
将上述基本问题串起来。理解问题本质,对拆解任务有很大帮助!
# 加载环境变量 import openai import os from dotenv import load_dotenv, find_dotenv _ = load_dotenv(find_dotenv()) # 读取本地 .env 文件,里面定义了 OPENAI_API_KEY openai.api_key = os.getenv('OPENAI_API_KEY') prompt = """ 根据给定的新闻标题,判断该新闻属于“政治”、“经济”、“科技”、“娱乐”中的那一类?直接给出答案,不用分析,不用评论。 ChatGPT 写电影剧本了,未来好莱坞大片或将用上这项技术。 """ response = openai.Completion.create( model="text-davinci-003", prompt=prompt, max_tokens=240, temperature=0 ) print(response.choices[0].text)
科技
# 加载环境变量 import openai import os from dotenv import load_dotenv, find_dotenv _ = load_dotenv(find_dotenv()) # 读取本地 .env 文件,里面定义了 OPENAI_API_KEY openai.api_key = os.getenv('OPENAI_API_KEY') prompt = """ 判断以下句子中是否是同一个意思的聚合在一起? 月薪多少 一个月赚多少钱 吃饭贵吗 月薪不够花怎么办 每个月赚的都没花的多咋整 月入水平 输出'[]'标识的数组,每类一组,直接给答案,不用分析,不用评论。 """ response = openai.Completion.create( model="text-davinci-003", prompt=prompt, max_tokens=1200, temperature=0 ) print(response.choices[0].text)
[月薪多少, 一个月赚多少钱, 月入水平] [吃饭贵吗] [月薪不够花怎么办, 每个月赚的都没花的多咋整]
# 加载环境变量 import openai import os from dotenv import load_dotenv, find_dotenv _ = load_dotenv(find_dotenv()) # 读取本地 .env 文件,里面定义了 OPENAI_API_KEY openai.api_key = os.getenv('OPENAI_API_KEY') prompt = """ 小明是配送员,过去5天的送单数,配送公里数和净收入如下: 第一天:送单数5,配送公里数10,净收入400 第二天:送单数6,配送公里数12,净收入480 第三天:送单数10,配送公里数30,净收入700 第四天:送单数2,配送公里数1,净收入190 第五天:送单数8,配送公里数3,净收入770 第六天:小明送单数9,配送公里数11,净收入应该是多少 """ response = openai.Completion.create( model="text-davinci-003", prompt=prompt, max_tokens=4000, temperature=0 ) print(response.choices[0].text)
根据过去5天的数据,我们可以计算出小明每单的平均净收入和每公里的平均净收入, 然后使用这些平均值来估计第六天的净收入。 平均每单净收入 = (400 + 480 + 700 + 190 + 770) / 5 = 508 平均每公里净收入 = (400 + 480 + 700 + 190 + 770) / (10 + 12 + 30 + 1 + 3) = 27.93 第六天的送单数为9,配送公里数为11,因此可以估计第六天的净收入: 第六天的净收入 = 平均每单净收入 * 送单数 + 平均每公里净收入 * 配送公里数 = 508 * 9 + 27.93 * 11 = 4572 + 306.23 ≈ 4878.23 因此,根据过去5天的数据,我们估计第六天小明的净收入应该约为4878.23元。 请注意,这只是一个估计值,实际情况可能会有所不同。
# 加载环境变量 import openai import os from dotenv import load_dotenv, find_dotenv _ = load_dotenv(find_dotenv()) # 读取本地 .env 文件,里面定义了 OPENAI_API_KEY openai.api_key = os.getenv('OPENAI_API_KEY') prompt = """ Assume are playing a Tic-Tac-game. The play who have three stones in a vertical/horizon/diagonal line wins. The rows of the board are indexed 1,2,3. The columns are indexed by A,B,C. Currently, the stones are placed at: 1,A = 'O' 1,B = 'O' 1,C = 'X' 2,B = 'X' Please draw the current board using '|'','-'','_','O','X' only """ response = openai.Completion.create( model="text-davinci-003", prompt=prompt, max_tokens=4000, temperature=0 ) print(response.choices[0].text)
A | B | C | 1 | O | O | X | |---|---|---| 2 | | X | | |---|---|---| 3 | | | |
# 加载环境变量 import openai import os from dotenv import load_dotenv, find_dotenv _ = load_dotenv(find_dotenv()) # 读取本地 .env 文件,里面定义了 OPENAI_API_KEY openai.api_key = os.getenv('OPENAI_API_KEY') prompt = """ We are in a fresh Ubuntu system, which only has basic commands and no software installed. We need to run a mysql server in a docker. Generate step-by-step commands for this task. Create a new table in the database, with three columns: id, name, age. Out commands only. No comments, no acknowledgements. """ response = openai.Completion.create( model="text-davinci-003", prompt=prompt, max_tokens=4000, temperature=0 ) print(response.choices[0].text)
# 1. Install Docker: sudo apt update sudo apt install docker.io # 2. Start the Docker service: sudo systemctl start docker # 3. Pull the MySQL Docker image: sudo docker pull mysql # 4. Run a MySQL Docker container, specifying a root password and mapping the container's port 3306 to the host's port 3306: sudo docker run --name mysql-server -e MYSQL_ROOT_PASSWORD=<root_password> -p 3306:3306 -d mysql # 5. Access the MySQL container: sudo docker exec -it mysql-server bash # 6. Connect to the MySQL server: mysql -u root -p # 7. Create a new database and table: CREATE DATABASE <database_name>; USE <database_name>; CREATE TABLE <table_name> ( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(50), age INT ); # 8. Exit from the MySQL server: exit; # 9. Exit from the MySQL container: exit Now you have successfully set up a MySQL server in a Docker container and created a new table with three columns (id, name, age) in the database.
简单点来讲,它只是根据上文,猜下一个词(的概率)…
OpenAI 的接口名就叫「completion
」,也证明了其只会「生成
」的本质。
下面用程序演示「生成下一个字」。你可以自己修改 prompt 试试。还可以使用相同的 prompt 运行多次。
import openai import os import time from dotenv import load_dotenv, find_dotenv _ = load_dotenv(find_dotenv()) openai.api_key = os.getenv('OPENAI_API_KEY') prompt = '今天我很' # prompt = '今天我想' response = openai.Completion.create( model="text-davinci-003", prompt=prompt, max_tokens=100, temperature=0, stream=True ) print(prompt, "/>") # print(response.choices[0].text) for chunk in response: print(chunk.choices[0].text, end='') time.sleep(0.2)
今天我很 /> 开心 I'm very happy today. --- 今天我想 /> 说的是 今天我想说的是,要珍惜当下,把握机会,勇敢追求自己的梦想,不要被外界的压力所压制,要勇敢地去拥抱自己的未来!
划重点:用不严密但通俗的语言描述 ChatGPT 的工作原理:
大模型
」阅读了人类曾说过的所有的话。这就是「学习
」参数
」,也叫「权重
」生成
」你用 ChatGPT 做过的事,是不是都能用这个原理解释?
安装python库
pip install --upgrade openai
import openai import os # 加载 .env 文件 from dotenv import load_dotenv, find_dotenv _ = load_dotenv(find_dotenv()) # 从环境变量中获得你的 OpenAI Key openai.api_key = os.getenv('OPENAI_API_KEY') # 模型列表 models = openai.Model.list() for model in models.data: print(model.id)
davinci gpt-4 gpt-3.5-turbo-16k-0613 text-davinci-001 text-search-curie-query-001 gpt-3.5-turbo babbage text-babbage-001 gpt-4-0613 gpt-3.5-turbo-16k curie-instruct-beta davinci-similarity code-davinci-edit-001 text-similarity-curie-001 ada-code-search-text gpt-3.5-turbo-0613 text-search-ada-query-001 babbage-search-query ada-similarity text-curie-001 text-search-ada-doc-001 text-search-babbage-query-001 code-search-ada-code-001 curie-search-document davinci-002 text-search-davinci-query-001 text-search-curie-doc-001 babbage-search-document babbage-002 babbage-code-search-text text-embedding-ada-002 davinci-instruct-beta davinci-search-query text-similarity-babbage-001 text-davinci-002 code-search-babbage-text-001 text-davinci-003 text-search-davinci-doc-001 code-search-ada-text-001 gpt-4-0314 ada-search-query text-similarity-ada-001 ada-code-search-code whisper-1 text-davinci-edit-001 davinci-search-document curie-search-query babbage-similarity ada ada-search-document text-ada-001 text-similarity-davinci-001 curie-similarity babbage-code-search-code code-search-babbage-code-001 text-search-babbage-doc-001 gpt-3.5-turbo-0301 curie davinci:ft-personal:100qa-2023-03-06-07-35-38 ft:gpt-3.5-turbo-0613:agi-class::7rFIG3Mf
# 消息格式 messages = [ { "role": "system", "content": "你是AI助手.你是考研班的的助教。这门课每周二、四上课。" }, { "role": "user", "content": "你是干什么的?什么时间上课" }, ] # 调用ChatGPT-3.5 chat_completion = openai.ChatCompletion.create( model="gpt-3.5-turbo", messages=messages) # 输出回复 print(chat_completion.choices[0].message.content)
我是一个AI助手,专门为学生和教师提供帮助和支持。我是考研的助教,这门课每周二和周四上课。 如果你有关于这门课的问题,我会很乐意帮助你。
科学方面:
对齐方面:
数据标注请了大量的博士 ,语言学家去做这个事。强化学习里面有很多tric,对于资深的从业人员也有挑战。
投入的精力,经验,下的功夫都有差距。这是主观因素。
客观因素:
中文的复杂性要比英文高许多, 单字的歧义要比英文大很多,比如,哪家饭店好? 有误导性质。 中文难训,另外 OpenAI 没有公开训练方法。
从底层开始训,需要时间,投入,耐心。
第一步,先从图片里把文字框出来,text-detection
第二步:text-orientation 识别文字的朝向,正,反,角度。
第三步:识别
看数据量和显卡数量。
以 GPT2 举例, 数据集文本在硬盘上40多个G,展开到内存里500G,12层的 transformer,768 * 768 训练这个模型 8 卡 A100 需要两周。可以以此作为参考。
如未另行说明,那么本页面中的内容已根据 知识共享署名 4.0 许可 获得了许可,并且代码示例已根据 Apache 2.0 许可 获得了许可。内容随着时间推移,可能会过期,会定时更新或移除一些旧的内容。
最后更新时间 (CST):2023-08-25