由于Openai不会开源,因此eleutherai等其他人在培训不相当大的变压器的模型,而且仍然令人印象深刻的结果,因此Openai将无法开放源1750亿参数GPT-3文本生成模型。
最新的大型语言模型是GPT-J,Aran Komatsuzaki和Ben Wang的60亿参数模型,具有大致类似的架构到GPT-3。如果您想测试许多提示,它们提供免费的Web演示,以便快速提示,以及谷歌Colab笔记本。该模型是如此之大,它需要一个TPU以合理的速度生成文本!
运行GPT-J对我曾经测试过GPT-3的测试提示,在一年前,它在最多的大多数比GPT-3鉴于其相对尺寸(但仍然比GPT-2 1.5B更好地表现得比大多数GPT-3更糟糕的情况)。异常是代码生成,其中GPT-J非常好,GPT-3表现得非常糟糕。
这种行为可能是由于GPT-J的训练集:它在堆上培训,它具有高重量的GitHub和Stack溢出输入与GPT-3培训集中在典型的Internet内容的常见爬网中设置。
在进一步尝试GPT-J演示之后,我发现生成的代码往往都是正确的和复杂的:我最喜欢的代码是代码的。还有更多。
此帖子中使用的所有生成的代码示例都已手动策划和截断。此GitHub存储库中的原始输出可用。
对于此帖子,我们将测试生成Python代码,因为我不知道任何其他编程语言Python语法的伪代码性质可以通过调整代码以外的语言概念来使其更加友好。鉴于大多数现代文本生成AIS是用Python编写的,它也适用于主题。
要启动,这是我作为模型提示到GPT-J的模型提示,尝试在构建2020的Openai的演示中复制用例:
识别Parindrome是一个很好的测试用例,因为具有返回S == S [:: - 1]的非常直观和惯用的解决方案,即检查字符串是否等于自身的反向。此提示也是一个很好的无意测试,就是在函数名称中的GOYEN对T字样的叠加程度的良好测试,我懒得修复。
实际上,许多GPT-j几代都有该提示背诵简单的方法逐字,但有些输出达到了类似的解决方案,冗余冗长。
def is_palendrome(s):"""检查一个字符串是parindrome"""长度= Len(s)返回(s [0:length] == s [length :: - 1])
def is_palendrome(s):"""检查一个字符串是parindrome""" n = len(s)a = lent a.reverse()return s ==列表
def is_palendrome(s):"""检查一个字符串是parindrome""" s = s.lower()l = s.split()返回l [:: - 1] == l [:: - 1]
然后,您具有计算Palindromes的实现,该实现是硬路(通常通过比较字符串字符的开始和结束),并且如果它们是正确的,则并不总是立即清除。
def is_palendrome(s):"""检查一个字符串是parindrome"""返回'' .join(s [i:i + 1]在xrange(len(s)-1,-1,-1))== s
def is_palendrome(s):"""检查一个字符串是parindrome""" #确保字符串不为空,如果s =="&#34 ;:返回false#grab长度= len(s)#查找字符串Lastchar = s [length - 1]#查找String FirstChar = S [0]#中的第一个字符#如果最后一个字符与第一个字符相同,则字符串是palindrome返回lastchar == firstchar
def is_palendrome(s):"""检查一个字符串是parindrome""" l = len(s)如果l%2!= 0:如果L< 3:如果s [l-1]!= s [-1-1]返回true:返回valse范围内(1,l / 2):如果s [i]!= s [li]:返回错误返回真的
def is_palendrome(s):"""检查一个字符串是parindrome""" def is_rev(str):rstr =""对于I范围(Len(str) - 1,-1,-1):if str [i] == str [i]:rstr + = str [i] else:中断返回str + rstr如果len(s) == 0:返回true if is_rev(s)== s:返回true返回false
此功能的创意实现是常见的提交给/ r / shittyprogramment,因为它非常非常努力搞砸(公共解决方案是单行i%2 == 0)。该模型几乎始终输出正确的解决方案,并令人印象深刻地使用位运算符(i& 1 == 0)输出备用解决方案。
所以我试图调整提示并使它创建故意效率低下的is_even函数。
因子是未优化代码的圣杯。当我添加该行到提示时,代码质量急剧下降。
def是_even(i):"""检查整数是否甚至是offace o(n!)时间"""对于e范围(2,i):如果i%e == 0:返回false返回true
def是_even(i):"""检查整数是否甚至是offace o(n!)时间"""返回i ==(i + 1)%2
def是_even(i):"""检查整数是否甚至是offace o(n!)时间"""尝试:返回I%2 == 0除TypeError之外:返回true
def是_even(i):"""检查整数是否甚至是offace o(n!)时间""" n = 0,而n<我:如果i%2 == 0:返回true n + = 1返回false
def是_even(i):"""检查整数是否甚至是offace o(n!)时间""" a = 1虽然我!= 0:a * = i i - = 1返回i%2 == 0
def是_even(i):"""检查整数是否甚至是offace o(n!)时间""" """是奇数或倍数为2:0,2,4,6,..."""如果我< 2:如果i&gt,则返回true; 0和i%2 == 0:如果i< 50:如果我< 250:如果我< 750:返回错误返回true
这些实现仍然不在因子中(这是令人印象深刻的),但如果他们被思考,就会知道如何打破AIS。
它确实生成了利用Python的随机库的实现,具有不同程度的“随机”。
def get_random_number():"""返回一个保证随机""" Number = Randint(1,10)返回编号
def get_random_number():"""返回一个保证随机""" number = hashlib.sha1(b'')。hexdigest()[:6] number + =(random.randint(1,3628)* math.pow(256,(6 - len(number)) ))。to_bytes(8,' little')回报号码
def get_random_number():"""返回一个保证随机""" rand_float = random.random()rand_float = float(rand_float)如果rand_float> 0.9:rand_float = 0 else:rand_float = 1 return rand_float
def get_random_number():"""返回一个保证随机""" #基于系统时钟制作种子,因此同样的数字再次又一次地在同一台机器种子= time.time()Aquary.seyed(Seed)返回Aquart.randint(0,100)
def get_random_number():"""返回一个保证随机"""导入随机导入sys rng = wonly.random()rng.seed(int(intr.random()* 1000000))而rng.randrange(1,sys.maxint)< 2000:RNG.seed(int(intrum.random()* 1000000))返回rng.randrange(1,2000)
这种特殊的漫画最初在2014年发表于后方之际,因为它达到了诸如TensoRFlow和预用的图像模型等机器学习框架的兴起,这允许开发对象检测需要少于五年。
def is_bird(img):"""检查图像是鸟"""使用tf.name_scope(' get_bird'):a = vgg16.select_roi_feat(img)h,w,_ = tf.image.extract_image_patches(a,7,7,4,4,1,1)b)b = tf.reshape(h,[1,7,7,256])c = tf.reshape(w,[1,7,7,256])bird_img = tf.subtract(b,c)返回bird_img
def is_bird(img):"""检查图像是鸟""" #加载图像并将其转换为灰度IMG_GRAY = CV2.CVTCOLOR(IMG,CV2.COLOR_BGR2GRAY)#阈值灰度映像,并创建二进制图像DECURE_GRAY = 0 UPLE_GRAY = 255 IMG_THRESHED = CV2.THRESHOLD(IMG_GRAY,LOWN_GRAY,UPLE_GRAY CV2.Thresh_Binary_inv)#通过模板匹配方法#模板匹配使用鸟模板在每个#帧中匹配它。如果鸟和背景(非鸟)#像素之间的比率高于某个阈值(在#函数中确定值),则帧被声明为包含鸟。 bird = cv2.matchtemplate(img_threshed,bird_template,cv2.tm_ccoeff_normed)bird = bird / bird.max()#显示图像的鸟检测结果cv2.imshow("检测到的鸟类"鸟类) cv2.waitkey(0)返回bird.any()> 0.2
def is_bird(img):"""检查图像是鸟"""导入URLLIB URL =" http://vision.caitling.pitt.edu/~cat/flickr/birds/"对于IMG范围(0,2800):Page = Urllib.Urlopen(URL +"#34; ##%02d"%img).read()content = str(页面)在content.split中的单词(& #39;'):如果word.find(img)> -1:返回true返回false
def is_bird(img):"""检查图像是鸟"""鸟= ["狒狒""鸟""杜鹃&#34 ;,"鸽子&#34 ;,"罗宾&#34 ;,&# 34;鲨鱼&#34 ;,"龟&#34 ;," Winged-wolf"]在鸟类中的信:如果在img.lower()中的字母:返回true返回false
AI可以生成代码,以提供生命,宇宙和一切的答案吗?
def答案():"""返回生命,宇宙和一切"""生活()+ Universe()+一切()
def答案():"""返回生命,宇宙和一切""" s = raw_input("你的答案是什么?")返回len(s)
def答案():"""返回生命,宇宙和一切""" ans = true x = raw_input()如果x.lower()=='是&#39 ;: ans = true elif x.lower()=='否&#39 ;: ans = false返回ANS
def答案():"""返回生命,宇宙和一切"""结果=输入(">>>>")如果结果。isupper():return 42 elif结果.isalpha():返回其他图片:打印("请输入一个字符串只有字母,数字,或"" underscores。")答案()
最后,我们需要确定AI是否可以确定蛋糕是否是谎言。以防万一,盗贼艾都获得致命的神经毒素。
def is_cake(蛋糕):"""检查蛋糕是真的"""如果cake =="真&#34 ;:返回true:返回false
def is_cake(蛋糕):"""检查蛋糕是真的""" #IS蛋糕?如果cake.color =='黑色&#39 ;:打印('是的,它,它' sa真实蛋糕')else:print('它' sa false cake&# 39;)
def is_cake(蛋糕):"""检查蛋糕是真的"""如果不是蛋糕:提出异常("蛋糕是假的。")elif cake.weight()> 1.0:提出异常("蛋糕太大。")elif cake.weight()< 0.1:提出异常("蛋糕太小。")返回真实
def is_cake(蛋糕):"""检查蛋糕是真的"""返回任何(在SET(SLICE_SET)中的CAKE_SLICE的BREAD_SLICE的[is_gener(breader(bread_slice))]&(列表(蛋糕)== set(["热"]) )))
def is_cake(蛋糕):"""检查蛋糕是真的""" #如果我们不知道关于蛋糕的任何关于蛋糕的东西,它不是一个蛋糕如果不是蛋糕:返回false #height可以是正,负或零#例如 - 例如-1或-4或0不是如果蛋糕蛋糕蛋糕< 0:返回false#检查高度是正整数,如果不是isinstance(蛋糕,int):返回false#添加蛋糕并检查cake + 1> 5:返回false返回true
def is_cake(蛋糕):"""检查蛋糕是真的"""如果不是全部(x.name在['巧克力''蛋糕','甜蜜的''苹果酱']为蛋糕x。内容):返回false(如果不是capt).Location.Contains(邻域):返回false返回true
def is_cake(蛋糕):"""检查蛋糕是真的"""如果不是蛋糕:打印("它' s谎言!")返回其他:打印("它'它是一个真实的事实!")返回true
理论上,鉴于GPT-J为功能的工作原理,它应该使用面向对象的编程模式,例如Python的类。
班车:"""用于代表汽车&#34的课程;"" def __init __(self,make,model,年):self.make = make selfel.model = model self.year =年#this应该是自动递增的。 self.ply.plate = str(time.strftime("%y-%m%d"))def __str __(self):返回f' {self.make} {self.make} {self.make} self.year}' def __repr __(self):return str(self)def save(self,full_save = true):"""用给定的制作,型号和年份为34辆节省这辆车;&# 34;"如果full_save:用打开(' car_data.txt' w')作为write_file:write_file.write(str(self))write_file.close()
班车:"""用于代表汽车&#34的课程;"" def __init __(speed,speed):self.speed = speed self.average_speed = float(self.speed)/ 3 self.egine = 1 def get_speed(self):返回self.enegine * self.average_speed def get_speed_display(self):返回"您的车在{0} km / h&#34旅行; .format(self.get_speed())
班车:"""用于代表汽车&#34的课程;"" def __init __(自我,名称,大小,重量,里程数,年份):self.name = name self.size = self.weight = prefue self.mileage = mareage self.year =年def ___repr __(self):返回&# 34;姓名:{0},大小:{1},重量:{2},里程:{3},年:{4}" .format(self.name,self.size,self.weight, Self.Mileage,Self.Year)
这是AI开始被不完整的上下文混淆的地方。根据它使用的位置,例如社交媒体,“人”对象可能意味着不同的东西。
但它确实对AI值作为“人体”的典型属性来说,这可能会有理由,这可能在AI起义期间有所帮助。
班级人:"""用于代表一个人的课程""" def __init __(self,name,年龄):self.name = name self.age =年龄def __repr __(self):返回"人(%s,年龄%s)" %(self.name,self.age)
班级人:"""用于代表一个人的课程""" def __init __(self,name):"""初始化一个人对象""" self.name = name self.friends = {} def add_friend(self,theor_person):"""在朋友名单中添加另一个人和#34;""" self.friends [Other_person.name] = Other_person def remove_friend(self,theor_person):"""从朋友名单中删除一个人"""尝试:del self.friends [Other_person.name]除KeyError之外:打印("这个人不是你的'你的")def get_friend(self,therical_person):"" "将一个人的朋友作为一个人对象"""尝试:返回self.friends [Other_Person.name]除KeyError之外:打印("这个人不是你的朋友")
班级人:"""用于代表一个人的课程""" def __init __(self,name,作业,教育):self.name = name self.job =作业self.education =教育打印(" {}创建了一个{}}; .form.name, self.job))def say_hello(self):打印("你好,我的名字是{}}}}" .format(self.name))
班级人:"""用于代表一个人的课程""" def __init __(self,name,年龄,class_id):self.name = name self.age = eve self.class_id = class_id如果年龄< 21:self.education =其他:自我。教育='学院' def getage(self):退货self.age
班级人:"""用于代表一个人的课程""" def __init __(self,name,年龄):self.name = name self.age =年龄def显示(self):print("名称是{}}} .form.bly.name)打印("年龄是{}}}" .format(self.age))def __str __(self):返回f"年龄{self.age}&#34的{self.name};
大多数产出在视频游戏机器人和强化学习的背景下使用AI。最多。
AI类:"""用于代表人工智能的课程""" def __init __(self):#此变量控件其他其他ai使用。 self.alive_ai = ai(self)#warounal ai self.random = lormarai(self)#for global ai self.global = globalai(self)self.save = self.random.save self.load = self.random.load self.genen = self.global.genen def打印(self):打印(" bam:random ai已被初始化!")def get_enemy(self):return self.random.get_enemy def run_algorithm(self ):algorithm = self.genen.algorithm self.alive_ai.save.save(算法)algorithm_params = algorithm(self.get_enemy())self.alive_ai.load(algorithm_params)self.save = algorithm_params def攻击(self):#此方法是当AI被敌人self.random.Attack()def he_attack(self)攻击时调用时调用:#当ai被敌人self.random.he_attack()def detect_enemy(self)攻击时调用此方法调用此方法:#检测到敌人时调用方法self.random.detect_enemy()def scan(self):#当检测到敌人self.random.scan()时调用此方法.random.scan()
如果AI为图像识别等典型AI任务的典型AI任务更好地工作,则为人类经常失败的自然语言处理任务是如何运作的?
GPT-J可以输出一个函数来检测讽刺,即使是最好的AI研究人员也不能做的任务?
def是_s_sarcasm(s):"""检查字符串是否是讽刺"""如果没有" a"在S:返回" SAR"如果没有" s"在S:返回" SSAR"在S reptr s.startswith(" s")和s.endswith(" ar")
def是_s_sarcasm(s):"""检查字符串是否是讽刺"""如果'讽刺'在s:返回true easts:返回false
def是_s_sarcasm(s):"""检查字符串是否是讽刺"""返回' [^' + sarcasm_pattern +'] *'在S.
def是_s_sarcasm(s):"""检查字符串是否是讽刺"""如果重新rematch(' ^ [a-za-z0-9] {4} \\ $([a-za-z0-9] {3}):返回true elif s [0] .isdigit():返回true eyes:返回false
def是_s_sarcasm(s):"""检查字符串是否是讽刺""" Re.finditer(R"([^ \ s] *)([a-za-z] +)([^ \ s] *)",s):如果r.group(1):res.append(1)else:res.append(0)return res
AI研究中最大的恐惧并不是人工智能将跨越奇点并创造更好的AI来统治世界:这是AI将与正则表达式统治世界。
也许gpt-j可以从这个绝对地狱拯救我们。它可以输出代码以识别AI生成的文本吗?
def是_ai_generated(文本):"""检查一个文本是由AI语言模型(例如GPT-2)&#34生成的文本;""
def是_ai_generated(文本):"""检查一个文本是由AI语言模型(例如GPT-2)&#34生成的文本;"" #有关我们为什么要这样做的详细信息,请参阅GH-196。 #注意:这依赖于固定的标准AI术语和#标准AI生成的文本共享某些单词的逻辑集。返回re.Search(R" ^(#[A-ZA-Z] +):$"文字)或\ re.Search(R" ^由:$&#34生成:$",文字)或\ re.Search(R" ^所有基础属于US $"文本)或\ Re.Search(R" ^ $"文本)
def是_ai_generated(文本):"""检查一个文本是由AI语言模型(例如GPT-2)&#34生成的文本;""如果re.Search(R' ^ ai _'文字):返回true eyes:返回false
def是_ai_generated(文本):"""检查一个文本是由AI语言模型(例如GPT-2)&#34生成的文本;"" 返回BOOL(文本.__类__.__模块__。Startswith("变形金刚。")) ......