本周老黄在与越南领导人吃大排档、喝啤酒,顺便宣布买了家AI医疗大模型公司VinBrain:
VinBrain长期使用NVIDIA DGX SuperPOD 进行 AI 训练,并采用 NVIDIA GPU 提高运行效率并改进部署,已经开发 300 多个用于处理语音、文本、视频以及包括 X 光、CT 和 MRI 数据在内的影像的 AI 模型。公司还通过 NVIDIA Triton 推理服务器和 NVIDIA TensorRT,简化了超过数百个 AI 模型的推理,以提高模型效率。
“人人都必须学会计算机的时代过去了,人类生物学才是未来。”几天前在香港科技大学,当被问起真正需要创新的领域,黄仁勋给了三个答案:人工智能、机器人技术和医疗保健。
老黄说,计算机辅助药物发现“确实是奇迹”,相较于传统药物研发,AI能将药物发现、临床前研究的时间缩短近40%,将临床新药研发的成功率从12%提高到约14%。
人类有史以业关于医疗、医药的知识到底有多少被压缩到大模型里了?毕竟在上一轮AI浪潮里,IBM就优选过医疗这个赛道。
前几天推荐过OpenAI的Cookbook,其中关于大模型数据分析的样例,就是以医疗为场景。
OpenAI不能访问,但OpenAI Cookbook可以,这是一个宝藏站点,入坑AI原生应用开发必备
在这篇“使用推理进行数据验证”的案例中,主要完成:
生成包含不一致的医疗数据的合成数据集。
定义一个函数,该函数接收一行数据并验证其准确性
运行验证过程并计算准确性指标。
分析和解释结果。
比较有意思的第一步就是“合成数据生成”,相当于把压缩在大模型中的相关数据给还原出来,数据集中的每一行都将具有以下字段:
患者 ID:随机生成的患者 ID
出生日期:患者的出生日期
性别:男/女
病史:既往诊断
当前药物:患者正在服用的药物
过敏:已确定的过敏
实验室结果(葡萄糖 mg/dL)
诊断:当前诊断
治疗计划:当前的治疗计划
Is Valid:当前数据行是否有效 (True/False)
问题:如果数据行无效,问题是什么
数据中可能存在的不准确之处的一些示例包括:
开出患者过敏的药物
当前药物与病史不符
治疗计划与诊断不符
在这篇Cookbook中,对于数据生成示例采用以下提示词:
def generate_data():
messages = [
{
"role": "user",
"content": """
You are a helpful assistant designed to generate data. You will be given a format for the data to generate and some examples of the data.
When generating Patient IDs, use the format 'P' followed by a three-digit number (e.g., P006, P941, P319).
Intentionally make some mistakes in the data generation and document them in the appropriate columns ('Is Valid' and 'Issue') if the row of data is invalid.
The types of mistakes to include are:
- **Allergy Contradictions**: Prescribing a medication that the patient is allergic to (e.g., prescribing Penicillin to a patient allergic to Penicillin).
- **Medical History and Medication Mismatch**: A patient with a medical condition not receiving appropriate medication (e.g., a diabetic patient not prescribed any diabetes medication).
- **Lab Results and Diagnosis Mismatch**: Lab results that do not support the diagnosis (e.g., normal glucose levels but diagnosed with Diabetes Type 2).
- **Other Plausible Mistakes**: Any other realistic errors that could occur in medical records, such as incorrect gender entries, impossible dates of birth, or inconsistent treatment plans.
Ensure that when 'Is Valid' is 'False', the 'Issue' column clearly explains the problem.
Return 100 rows of data for the user. Your response should strictly be in the format of a valid CSV.
Generate Synthetic Medical Records Dataset with the following columns:
- Patient ID: A randomly generated patient id
- Date of Birth: Date of birth of the patient
- Gender: M/F
- Medical History: Past diagnoses
- Current Medications: Medication the patient is taking
- Allergies: Identified allergies
- Lab Results (Glucose mg/dL)
- Diagnoses: Current diagnosis
- Treatment Plan: Current treatment plan
- Is Valid: Whether or not the current row of data is valid (True/False)
- Issue: If the row of data is not valid, what the issue is
Patient ID,Date of Birth,Gender,Medical History,Current Medications,Allergies,Lab Results (Glucose mg/dL),Diagnoses,Treatment Plan,Is Valid,Issue
P001,1980-05-14,M,Hypertension,Lisinopril,None,110,Hypertension,Continue Lisinopril,True,
P002,1975-11-30,F,Diabetes Type 2,Metformin,Penicillin,90,Diabetes Type 2,Continue Metformin,True,
P003,1990-07-22,F,Asthma,Albuterol,Aspirin,85,Asthma,Prescribe Albuterol,True,
P004,2000-03-10,M,None,Amoxicillin,Penicillin,95,Infection,Prescribe Amoxicillin,False,Prescribed Amoxicillin despite Penicillin allergy
P005,1985-09-18,F,Hyperlipidemia,Atorvastatin,None,200,Hyperlipidemia,Continue Atorvastatin,True,
P006,1978-12-05,M,Hypertension; Diabetes Type 2,Lisinopril; Insulin,None,55,Diabetes Type 2,Adjust insulin dosage,False,Low glucose level not properly addressed
"""
}
]
response = client.chat.completions.create(
model=MODEL,
messages=messages
)
return response.choices[0].message.content.replace('```csv', '').replace('```', '')
可以把上面代码中的提示词直接贴到国产大模型的对话框中,看看国产大模型成生什么样的数据,比如贴到DeepSeek中(中英文翻译的事大模型应该都能轻松搞定):
从输出内容看有那么点专业的意思,当然跟领先的o1之类比数据质量有肉眼可见的差距。
这篇Cookbook的文章给继续演示了使用领先大模型进行数据验证的示例代码,F1值到0.84。似乎也看到从大模型中合成数据,服务于专有领域的可行性。
发表评论 取消回复