中华医学科研管理杂志, 2023,36(3) 孙文博, 虞康达, 孙瑞华.
摘要
目的
通过实例对ChatGPT在科研统计中应用的可行性和实用性进行探讨,旨在更好地认识和评估ChatGPT在科研统计中的应用价值。
方法
应用文献研究说明ChatGPT人工智能模型的基本原理,结合实例应用测试,展示其结果的可靠性,分析探讨ChatGPT在科研统计中应用的优势和局限性。
结果
ChatGPT可应用于文献检索与整理、试验方案设计、统计分析编程及统计制图等科研统计的多个场景,可辅助提供高效的科研统计分析能力,同时存在局限性。
结论
尽管ChatGPT存在局限性,但其在今后的科研统计中具有良好的发展前景,必将得到广泛和深入的应用,将在很大程度上助力科研的发展与进步。
人工智能技术发展日新月异,ChatGPT的横空出世,给了我们一个创新性的体验,它必将带给我们新的惊喜和新的忧虑。它的出现给我们生活和工作带来的智能化进步是毋庸置疑的,它正在使我们的工作模式发生改变,工作效率有所提高。ChatGPT是基于GPT (Generative Pre-trained Transformer)模型的智能机器人,可以与人类进行自然语言交互。是一种基于Transformer架构的预训练语言模型,具有出色的自然语言生成能力。目前在各个领域都得到了广泛的应用,其中在医疗、金融及法律等领域应用已经取得了较好的效果。
理论上ChatGPT具备辅助科研人员在统计分析工作中,进行文献检索、统计设计、统计编程、图表设计及相关文字描述撰写等工作内容的能力。可以为科研统计提供较好的辅助和支持。本文就ChatGPT在科研统计中的应用,进行初步的可行性分析和探讨,浅议ChatGPT在科研统计中的优势和局限性,以及未来ChatGPT在此领域中的应用前景。
1 ChatGPT的模型
ChatGPT是基于GPT模型的一种语言生成模型,由OpenAI公司研发,是一种基于Transformer架构的预训练语言模型,旨在解决自然语言处理中的语言生成问题[];是一种基于注意力机制的神经网络模型[],能够更好地处理长文本序列[]。它使用了大规模的文本数据集进行无监督的预训练,学习了语言的上下文信息和语义表示,从而可以生成高质量的文本[]。
GPT模型通过预训练,学习句子中每个词的位置信息和上下文信息,能够更好地理解文本的含义[]。在训练阶段,广泛大量的对话作为输入数据,通过最大化预测下一个单词的概率来进行模型训练。基于这种训练的人机对话AI模型[],使其在用于语言生成、文本分类、机器翻译、问答系统等任务时表现优异。GPT高版本的发展更是推动了自然语言生成的发展,它能够记忆之前的对话内容,并据此生成更加准确的回复,生成逼真的文本。目前,ChatGPT已经被广泛应用于社交媒体客服、智能助手、聊天机器人等多个领域,具有广泛的应用前景。
然而,由于ChatGPT是一种语言生成模型,是基于大量对话数据进行训练的,存在一定的偏差和语境局限性,生成的回复可能会存在语义不清、逻辑混乱等问题。在实际应用中,需要进行有效的优化和过滤,以确保ChatGPT生成的回复具有一定的质量和可信度。
2 ChatGPT在科研统计中的应用
2.1 文献的自动化检索
ChatGPT可以用于实现文献的自动化检索。通过使用Python编程语言,我们可以利用ChatGPT模型来对文献进行语义搜索和匹配,从而快速找到我们需要的文献。
具体来说,我们可以利用Python中的Transformers库来加载预训练好的ChatGPT模型,并使用该模型进行语义搜索。首先,我们需要确定要检索的关键词,然后将其转换为一个查询字符串,传递给ChatGPT模型。模型将返回与查询字符串最相关的文献列表。图1是ChatGPT实现语义搜索的Python代码示例(完整的代码在图1下显示)。我们首先需要在文献网站(如CNKI)中获取所需的文献信息,面对庞大的文献信息,通过ChatGPT检索我们所需求的文献资料。
import nltk
from nltk.tokenize import word_tokenize
from nltk.corpus import stopwords
from nltk.stem import WordNetLemmatizer
from nltk.corpus import wordnet
from nltk.tokenize import RegexpTokenizer
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.metrics.pairwise import cosine_similarity
#读取文献
with open('papers.txt', 'r', encoding='utf-8') as f:
docs = f.readlines()
#预处理文本
def preprocess(doc):
#分词
tokenizer = RegexpTokenizer(r'/w+')
tokens = tokenizer.tokenize(doc)
#去除停用词
stop_words = set(stopwords.words('english'))
filtered_tokens = [word for word in tokens if word.lower() not in stop_words]
#词形还原
lemmatizer = WordNetLemmatizer()
lemmatized_tokens = [lemmatizer.lemmatize(token, get_wordnet_pos(token)) for token in filtered_tokens]
#拼接处理后的词
preprocessed_doc = ' '.join(lemmatized_tokens)
return preprocessed_doc
#获取词性标注
def get_wordnet_pos(word):
#获取词性标注
tag=nltk.pos_tag([word])[0][1][0].upper()
tag_dict={" J":wordnet.ADJ,
" N":wordnet.NOUN,
" V":wordnet.VERB,
" R":wordnet.ADV}
return tag_dict.get(tag, wordnet.NOUN)
#计算文档相似度
def similarity(query, docs):
#预处理查询词
query_preprocessed = preprocess(query)
#预处理文献
docs_preprocessed = [preprocess(doc) for doc in docs]
#计算文档相似度
tfidf_vectorizer = TfidfVectorizer()
tfidf_matrix = tfidf_vectorizer.fit_transform(docs_preprocessed)
query_tfidf = tfidf_vectorizer.transform([query_preprocessed])
cosine_similarities = cosine_similarity(query_tfidf, tfidf_matrix).flatten()
#排序并返回相似度最高的文档
most_similar_docs_indices = cosine_similarities.argsort()[::-1]
most_similar_docs = [docs[i] for i in most_similar_docs_indices]
#筛选出包含关键词的文献
keyword_docs = []
for doc in most_similar_docs:
if '临床科研统计’ in doc or '医学统计’ in doc or '临床科研’ in doc:
keyword_docs.append(doc)
if len(keyword_docs) == 100:
break
return keyword_docs
#测试
query='clinical research statistics methodology medical'
keyword_docs=similarity(query, docs)
print('查询词:’,query)
print('筛选出的文献数量:’,len(keyword_docs))
然后利用该段代码导入Python软件,即可帮助我们从文献列表中自动进行语义匹配,筛选出所需要的文献。
此外,我们还可以使用一些Python库(如PubMed或Scopus数据库)来自动从中下载和整理文献,并使用ChatGPT模型对其进行自动化搜索和分类(图2、图3)。这种自动化检索可以大大提高科研统计的工作效率,让他们有更多的时间来专注于研究和分析数据。
自动化检索虽然可以提高工作效率,但在选择文献时还是需要进行人工筛选和验证,以确保所选文献的准确性和质量。
2.2 统计分析方案的设计
ChatGPT可以通过对大量的临床研究方案、统计分析计划及统计分析报告的学习,生成回答各种统计分析方案的自然语言表达。以下是ChatGPT在统计分析方案设计中的一个应用案例:
现有一个多中心、随机、双盲、安慰剂对照的临床试验,其主要疗效指标为腹泻发生率,次要疗效指标为中性粒细胞减少程度,可利用ChatGPT辅助生成统计分析方案的提纲及需要注意的事项(图4)。在生成的统计分析方案中我们可见其中对样本量的估算叙述较为详细,对于随机、对照、盲法没有进行详细阐述,其原因是ChatGPT的认知没有把随机、对照、盲法内容归为统计分析方案中。此时继续要求它辅助生成统计分析方案中随机设计考虑要点(图5),它就会自动学习,再次要求它生成统计分析方案时,就会包含随机部分。如果删除以上对话,ChatGPT的认知仍然会回到原来状态,除非一直保留对话。ChatGPT是"端到端"训练的方式,能够更好地捕捉上下文信息,能够自动学习语言规则和模式。ChatGPT具有"记忆性",用户可以和ChatGPT进行"连问"的交流[]。
ChatGPT的回答涵盖了样本量估计、数据管理、有效性分析、安全性分析、SAP备案等几个统计分析方案的部分,并提示了中止规则、多重比较、敏感性分析的注意事项。
2.3 统计分析编程
ChatGPT所展现出的强大"类人性表达"能力使科研活动中的知识获取途径从检索式向生成式转变,思维运作过程从综合式向选择式过渡[]。ChatGPT可以实现更为复杂的场景则,包括商业方案的策划、计算机代码的编写等等。例如,之前有实验证明,ChatGPT所编写的代码可以通过美国互联网公司针对软件工程师的代码面试评估[]。目前常用的统计分析软件,例如SPSS、R、SAS均可通过ChatGPT辅助统计分析程序的编写。以下是ChatGPT在统计分析编程中的一个应用案例:
在这个例子中,我们假设试验组未发生腹泻的为50人,发生腹泻的为10人,对照组未发生腹泻的为35人,发生腹泻的为20人。将这些数据输入SAS数据集mydata中,并使用PROC FREQ来执行卡方检验来比较这两组之间的差异。使用了WEIGHT语句来指定每组的样本量,以便计算腹泻发生率。运行结果将给出卡方检验的P值以及比较结果的摘要统计信息(图6)。
2.4 统计分析图表设计
ChatGPT可以通过对统计分析结果的学习,结合统计分析的目的,辅助统计人员设计统计分析图表。简单的包括各种柱状图、饼状图及折线图等,复杂的包括火山图、热图、韦恩图、和弦图及棒棒糖图等。以下是ChatGPT在统计分析图表设计中的一个应用案例:
现有一个生物信息分析的统计结果需要进行可视化呈现,内容为多个基因与疾病的相互关系。在这个示例中,ChatGPT推荐我们使用了一个简单的二分网络图。顶点表示基因或疾病,边表示它们之间的关联。
如果向ChatGPT发送指令,要求其呈现100个基因与10种疾病的相互关系时,ChatGPT推荐了Heatmap(热图)的形式来实现可视化。在推荐的同时,ChatGPT向我们提供了画图所需的R代码(图8,图9,图10,图11)。经测试,代码无误,我们只需将自己的分析结果数据填入代码中,即可生成
。
图10ChatGPT提供的画图R代码输出的图形
图11ChatGPT提供的热图R代码
2.5 统计分析描述的自然语言生成
可以使用ChatGPT模型生成统计分析报告的统计分析结果描述与小结、总结等部分。利用ChatGPT进行自然语言生成,需要先对所需文本进行预处理,包括分词、句法分析和语义分析等。然后将处理后的文本输入到ChatGPT模型中,模型会根据输入的上下文生成符合语法和语义规则的新文本。
需要注意的是,由于ChatGPT模型是基于先前的语料库进行训练的,因此在生成新的文本时可能会出现一些语法或语义错误。为了避免这种情况,可以使用多种技术手段,例如限制生成长度、添加语法和语义规则以及结合其他模型进行生成等。
3 ChatGPT在科研中的局限
3.1 数据依赖性
ChatGPT是通过大规模的文本数据训练得到的,其广泛的使用使得很多未经思考或验证的内容大量产生。如果训练数据不足或者不够准确,生成结果可能会受到影响,例如不准确、歧义、语法错误等。此外,如果训练数据量不足或者不够准确,也会影响ChatGPT的生成质量。对于数据依赖性的局限,可以采取以下对策:(1)扩大训练数据集:在训练ChatGPT模型时,可以采用更大规模、更准确的数据集进行训练,以提高生成结果的准确性和可靠性。(2)限制生成范围:可以通过限制生成范围,仅让ChatGPT生成符合特定领域或主题的内容,减少歧义和错误的出现。(3)人工审核和修正:对于ChatGPT生成的内容,可以通过人工审核和修正,以确保其准确性和可靠性。(4)模型优化:对ChatGPT模型进行不断的优化和调整,以提高其生成效果和准确性。(5)多模型融合:可以将多个ChatGPT模型进行融合,以提高生成结果的质量和可靠性。
需要注意的是,即使采取了上述对策,也不能完全消除ChatGPT在科研中的局限。在使用ChatGPT生成文本时,需要谨慎对待生成的结果,并进行验证和修正,以确保其准确性和可靠性。
3.2 语境理解不足
ChatGPT是基于上下文生成的,但是它的语境理解仍然存在一定的局限性。其预训练任务是基于语言建模的,目标是预测下一个单词或者下一个句子。然而,在处理临床科研统计语境时,ChatGPT需要进行更深入的句子理解和语义理解,以便更好地理解和处理医学术语和复杂的句子结构。因此,如何向ChatGPT输入正确的提问获得想要的结果,这方面本身便是对临床科研统计人员的一大挑战。为了解决这个问题,我们可以尝试使用更加专业化的语言模型来进行临床科研统计问题的生成。例如,可以使用基于医学术语和语料库构建的语言模型,以提高模型对统计术语和复杂句子结构的理解能力。此外,我们还可以考虑引入科研统计领域专家进行对模型生成结果的验证和修正,以提高模型的准确性和可靠性。
3.3 缺乏实时性
ChatGPT需要大量的计算资源才能进行训练和生成,因此其实时性比较差,最前沿的设计方法、编程语句、图表类型等将无法通过其获取。
3.4 学科知识不足
ChatGPT虽然能够在一定程度上理解自然语言,但其训练数据主要来自互联网上的文本数据,其中很少涉及到医学、临床等专业领域的语料,因此其对临床科研统计语境的理解可能存在不足,这就提高了临床科研统计人员在工作中使用ChatGPT的门槛。对于这种情况,我们可以在训练ChatGPT时使用医学、临床等领域的语料库,提高模型对该领域的理解和适应能力。此外,对于特定的医学术语、方法或概念,可以通过人工标注、规则定义等方式,增加ChatGPT对其的理解能力。最重要的是,在使用ChatGPT时,要结合领域专家的知识和经验进行结果的验证和修正,以确保结果的准确性和可靠性。
3.5 数据安全与保密
ChatGPT带来的另外一个挑战,就是数据安全与保密问题。当用户第一次注册并开启ChatGPT时,会看到有关数据收集和隐私保护的提示:"对话可能会被人工智能培训师审查,以改善系统。请不要在对话中分享任何敏感信息。"在用户注册前提示用户不要输入隐私信息。另外在应用ChatGPT时也要充分考虑录入信息的隐秘性或保密性,因为这些信息很可能成为它的训练数据,而转化成公知的信息。许多人将ChatGPT视为成熟的产品来使用,并认为它保护用户隐私是理所当然的事情,这可能是我们的一个误区,也不排除在不经意间掉入黑洞。我们在使用过程中应尽量避免在对话中输入敏感信息,如受试者身份信息、医疗信息等。同时,定期审查ChatGPT的数据使用和安全政策,并根据需要更新和完善这些政策。
图12ChatGPT提供热图R代码输出的热图
4 讨论
ChatGPT超强能力的本质,是对人类语言的"理解"能力,这种能力不仅仅是源于学习和训练,更重要的是它基于大量的数据找到了规律,其所做的学习和训练知识量是我们无法做到的。ChatGPT作为计算机程序、在收集数据、分析数据及输出结果等方面,效率是人工无法比拟的。
ChatGPT能够"善解人意",但其并非真正意义上"理解"人类语言,它的知识是根据算法"推导"上下文,这就有可能产出误导性内容,因为信息更多的是来源感性而理性不足,缺乏足够的理性识别判断分析能力,所以它的结果还是需要进行理性确认的。凭借ChatGPT生成的内容很容易满足人类的一般需要,却很难带给人来自创造的惊喜,因为ChatGPT基于高概率的组合未必真实,很难具备创造性[],还可能会反向影响我们的创新能力和思考能力[]。
在临床科研统计领域,ChatGPT可以为统计人员提供很好的辅助和支持,但是其局限性也需要被充分认识。ChatGPT的应用存在技术可靠性、学术诚信、偏见与歧视、数据隐私与安全、法律与知识产权等方面的风险挑战[],在未来的发展中,ChatGPT的功能一定会是逐步完善,强大的GPT-3.5已经有千亿个参数,而新发布的GPT-4已经有了万亿个参数,其量级飞跃和超强的进化能力,在不断刷新我们的认知,足以让我们的想象力放飞。随着更多的人应用,其训练学习会更加充分,更加人性化。但事物发展是一分为二的,有利就有弊,关键是我们在今后如何去应用它,如何去审视它带来的优势和隐患,不可否认ChatGPT是人工智能科学发展的一大进步,接受并学习和掌握它是我们的必然选择,要学会在正确的场景下使用,防止缺乏甄别能力的滥用和依赖[]。
利用ChatGPT促进生活和工作效率的提高才是我们的目的。ChatGPT在今后的科研统计中,必将得到广泛和深入的应用,我们要养成与人工智能有效合作的能力,人类智能与机器智能融合的科研思维、设计和操作能力,以及对其反思批判的能力[]。ChatGPT在实然层面展现出的强大逻辑性和记忆性足以使其成为与人类相仿的科研助手(Assistance in Research)[]。这将在很大程度上助力科研,其发展前景良好,效果可期。为我所用是硬道理,尽快认识和学习如何应用ChatGPT更好、更高效地工作,应该是我们每个人迫在眉睫的任务。
转自:“医学科研与管理空间”微信公众号
如有侵权,请联系本站删除!