데일리 AI 클럽

데일리 AI 클럽

3주간 매일 한편의 AI 아티클을 요약하고 클럽에 공유하는 챌린지🔥 코어닷투데이와 함께합니다.

공개 15 멤버

가이드라인

["활동 기간: 3월 6일 ~ 3월 24일 (3주간), 평일에만 업로드","규칙: 하루에 한편씩 코어닷투데이의 콘텐츠를 클럽에 공유 (활동 기간동안 4번까지 스킵 가능)","참여 방법: 데일리 AI 클럽 참여 신청(참가 동기 작성 필수!)","모집 기간: 현재 함께할 사람 모집 중🔥"]

박종한

박종한

[데일리 AI] 프롬프트 엔지니어링과 인젝션


url thumbnail

프롬프트 엔지니어링과 인젝션: 새로운 IP 훔치기 | 코어닷투데이

10억 달러 Notion AI와 Bing-ChatGPT의 숨겨진 프롬프트 프롬프트는 텍스트, 질문 또는 이미지로 모델에 입력해 주는 값을 의미한다. 모델은 프롬프트를 처리하고 이에

https://core.today/contents/3Yw9S752jwzU

링크한 본문에서 지난 1월 Anthropic이 프롬프트 엔지니어를 구인하는 채용 공고를 냈다고 했는데, 최근 국내 생성 AI를 리딩하는 뤼튼 에서도 프롬프트 엔지니어 채용 공고가 나왔다.

ChatGPT를 사용해본 사람이라면 알겠지만 질문의 퀄리티가 곧 답변의 퀄리티를 결정한다. 그래서 Jasper 같은 경우 질문 템플릿을 제공하고, PromptBase 처럼 좋은 질문들을 묶어서 판매하는 마켓플레이스 시장도 형성되었다.

나는 메이커이기도 한데, sql-php 위에 html을 올려 만든 내 '하루 공부한 일을 친구들과 함께 기록할 수 있는 웹앱' 을 친구가 이거 그냥 DB를 날려버릴 수 있다면서 SQL 인젝션에 대해 알려주었다. 사이버보안을 공부하는 친구였고 지금은 한국의 Palantir라고 불리는 회사에서 연구원으로 있다. SQL 인젝션은 입력 폼을 이용해서 DB를 조작하는 것을 말한다.

글 본문에서는 프롬프트 인젝션에 대해 이야기한다. ChatGPT와 연동된 Bing에 질문을 계속하면 Bing의 숨겨진 프로젝트에 대한 내용이 나온다고 한다. 지금의 상용 GPT 애플리케이션들은 유해하거나 공개되었을 때 위험한 정보를 숨기도록 디자인되어 있다. 프롬프트 인젝션 사례 덕분에, AI의 안전성에 대한 생각을 하게 되었다.

@kilu128 from Twitter via 무랄 on brunch

11
10
이성준

이성준

[데일리AI] Constrastive Learning 이란


url thumbnail

Contrastive learning이란? (Feat. Contrastive loss) | 코어닷투데이

안녕하세요. 이번 글에서는 contrastive learning에 대해서 설명하도록 하겠습니다. Contrast라는 용어를 정의하면 아래와 같습니다. "A contrast is a

https://core.today/contents/57RV5yX12ze1


인공신경망을 이용한 딥러닝은 결국 데이터를 특정 기준에 따라 잘 표현(representation)하도록 학습시키는 것일텐데, 여기서 '어느어느 데이터는 서로 비슷해' 라고 라벨을 주면서 학습시키는 것은 similarity learning 이고, 여기에 더해서 '어느어느 데이터는 서로 달라' 라는 "차이"를 추가로 주어서 학습시키는 것이 바로 constrastive learning (대조학습) 이라고 합니다.

사람이 무언가 개념을 배울 때에도 요거랑 이거랑 비슷한거야 라고만 배우는 것보다 이거는 요거랑은 비슷하지만 저거랑은 다른거야 라고 차이를 같이 알려주면 그 개념의 바운더리를 확실히 배울 수 있는 그런 원리인 것 같네요.


표현학습에서 유사도와 차이는 결국 표현된 공간에서의 (인공신경망에 의해 차원감소 후 매핑된 공간) 데이터 간의 거리로 표현할 수 있고, 유사 샘플 사이의 거리는 가깝게, 다른 샘플 사이의 거리는 되도록 멀어지게끔 학습하게 됩니다.




합치면:


뒤에 max 텀은 max( 0, m2 - || x_n - x_q ||2 ) 인데 오타가 있네요.

여기서 x_q는 비교의 기준 (query), x_p는 positive pair, x_n은 negative pair를 의미하고, m은 마진값입니다. negative pair는 m보다 멀어졌으면 하면서 학습시키는 거죠.


그리고 이 거리라는 것은 아래와 같이 기하학적인 특성이 그대로 적용된다는 것이 신기했습니다. 특히 4번째 특성.


그리고 고차원에서는 데이터 간의 거리를 구하는 것이 어렵고, 표현학습을 통해 저차원 공간으로 잘 매핑(표현)되어야 한다는 것을 아래 그림으로 직관적으로 설명하고 있는 것이 인상적입니다. (Word to Vector도 결국 이런 개념인 것 같네요.)


고차원 공간에서의 interpolation은 의미가 없을 수 있고, 매핑된 저차원 공간 (그림에서는 회색 평면)에서 일어나야 한다는 것이죠.



근데 이걸 언제 쓰느냐..

대표적인 사례로, 라벨링 된 데이터가 적을 때에 라벨링 되지 않은 다량의 데이터를 가지고 자가지도학습(self-supervised learning)을 통해 성능을 높일 수 있다고 합니다.

이미지를 증강하여 positive sample로 놓고, 다른 이미지는 negative sample로 놓고 학습시키는 것이지요.

사람이 데이터 라벨링을 해주지 않아도 되니까 대형 모델 사전학습 시키기에 아주 좋은 방법이 될 것 같네요.


요즘 특히 멀티모달 학습에도 널리 쓰이는 것 같은데 여기에 대해서는 다음 기회에 또 정리해 보겠습니다.


4
4
박종한

박종한

[데일리 AI] 트랜스포머 모델이란 무엇인가?

저는 지금부터 3주간 @이성준 님과 함께 매일 코어닷투데이 콘텐츠를 한개씩 읽고 공유하는 데일리 AI 챌린지를 할 예정이에요. 함께하고 싶은 분은 클럽에 가입 신청해주세요.
url thumbnail

트랜스포머 모델이란 무엇인가? (1) | NVIDIA Blog | 코어닷투데이

AI 분야의 혁신에 함께하고 싶다면 트랜스포머(transformer)에 주목하세요. 여기서 말하는 트랜스포머는 TV 위의 변신 로봇 장난감이나 전신주에 달린 쓰레기통 크기의 통을

https://core.today/contents/Yi05667qfD7l

요즘 핫한 GPT는 대표적인 LLM인데, Large Language Model 은 Transformer Model의 적용이다. LLM에 관한 아티클

본문에 의하면 트랜스포머 모델은 AI의 패러다임 변화를 만들고 있어서 파운데이션 모델이라고 일컫어진다. 스탠포드에서 2021년 8월에 명명. 트랜스포머 모델은 2017년 구글의 논문에서 처음 나왔다.

자연어처리(NLP)와 영상처리(Computer Vision)시대를 만든 RNN과 CNN이 2015년~2020년에 가장 인기있는 딥 러닝 모델이었다면 20년 ~ 22년까지는 arXiv에 게제된 AI 논문 70%에 트랜스포머가 등장할 정도로 새로운 대세가 되었다.

트랜스포머는 데이터 라벨링이 필요 없다. 요소들 사이의 패턴을 수학적으로 찾아낸다고 함.

기술적인 걸 떠나서 NVIDIA 블로그 글 상당히 재밌다.

2017년 당시 구글 인턴으로 이 연구에 참여한 에이단 고메즈는 “논문을 제출하기까지 3개월간 전력으로 질주했습니다”고 회상합니다.
“논문 제출을 앞둔 밤, 아시시와 나는 구글에서 밤을 샜습니다. 조그만 회의실에서 두어 시간 정도 눈을 붙이기로 했습니다. 일찍 출근한 직원이 벌컥 열어젖힌 문에 머리를 맞는 바람에 잠에서 깼는데, 논문 제출 마감 직전이었습니다”
이 모닝콜은 위대한 혁신의 시작을 알리는 모닝콜이기도 했죠.
바스와니는 페이스북(Facebook) 팀이 CNN으로 진행한 유사 연구 결과를 트랜스포머가 능가하던 당시의 흥분을 지금도 기억합니다.
6
1
박종한

박종한

(모집 중) 3주간 매일 한편의 AI 아티클을 공유하는 챌린지!

안녕하세요, 디스콰이엇 박종한입니다. 메이커 타우너인 ‘코어닷투데이’팀과 함께 새로운 챌린지를 오픈했어요.

3주간 하루 한편의 AI 아티클을 요약하고 디스콰이엇 클럽에 공유하는 챌린지를 함께하실 분을 구합니다!

코어닷투데이는 자동으로 업데이트되는 최신 AI 콘텐츠 라이브러리이자 스크랩북이에요. 코어닷투데이에서 엄선하는 큐레이션 콘텐츠를 하루에 하나씩 클럽에 공유하고 요약하는 게 이 챌린지의 미션입니다!

  • 활동 기간: 3월 6일 ~ 3월 24일 (3주간), 평일에만 업로드
  • 규칙: 하루에 한편씩 코어닷투데이의 콘텐츠를 클럽에 공유 (3주동안 4번까지 스킵 가능)
  • 참여 방법: 데일리 AI 클럽 참여 신청(참가 동기 작성 필수!)
  • 모집 기간: 3월 5일 토요일까지
  • 보상: 완주자는 추첨을 통해 디스콰이엇 굿즈를 드립니다(참가인원 규모에 따라 상품 개수 결정)🔥

코어닷투데이 콘텐츠 보러가기

6
8
Jun Lee

Jun Lee

Core.Today에서 2달간의 CUOP 인턴을 마치며..

내일부로 12월 20일부터 진행한 Core.Today에서 2개월동안 진행한 인턴생활이 마무리됩니다.

막 전역을해서 방학동안 무엇을 할까 고민을하다가 CUOP라는 프로그램을 알게되었는데, SOTA 논문을 읽고 USER에게 설명을 하는 데이터 크리에이터로 인턴을 할 수 있다는 말에 망설임 없이 지원하게 되었습니다.

양질의 정보를 얻는 것이 개발자 개인 차원이나 학교, 기업과 같은 단체 차원에서도 정말 중요한 일이라는 것을 알고 있었지만, 사실 저도 언어의 장벽과 검색의 장벽에 가로막혀서 SOTA 논문, AI 관련 컨텐츠를 잘 찾아보지 못했습니다.

그래서 인공지능을 이해하고 다루면서, USER에게 이 경험을 공유할 수 있는 공간을 제공하는 Core.Today라는 회사가 더욱 더 매력적으로 보였어요!

Core.Today


정말 감사하게 면접에 합격하여 12월 20일부로 인턴생활을 시작하게 되었답니다.

입사를 하고 인공지능을 막론하고 코딩을 안 한지 오래되어서 정말 잘할 수 있을까 고민이 많이 되었습니다. 그러던 찰나에 첫날 Keyword-Tagging에 대한 임무를 맡았어요!

정말 막막했죠.. NLP에 대해 아무것도 몰라서 백지부터 시작했습니다.

처음에는 정말 제가 생각한데로 Keyword-Tagging 모델을 만들었습니다. POS(품사) 데이터 만으로 확률 값을 계산해서 통계적으로 키워드를 추출하는 것부터 Co-Occurence로 키워드 추출하는 것까지, 아무것도 참고하지 않고 제가 생각한 모델을 마구잡이로 만들어서 실험해보았습니다.

옆에서 답답해 보일 수도 있지만 너무 감사하게도 경훈 대표님, 동주님, 국문님이 스스로 길을 개척할 수 있게 많이 기다려주셨습니다!

위 방법에서 여러 한계를 경험한 저는 "안되겠다! NLP에 대한 전반적인 이해를 하고 시작하자"라고 다짐하게 되었습니다.

막무가내로 인터넷 곳곳을 뒤졌습니다. NLP에 관련한 내용이면 모두 들어가서 봤죠!

하지만!

내용이 체계적으로 연결되지도 않았을 뿐더러 원하는 주제의 내용을 쉽게 찾을 수도 없었죠!

그래서 미처 까먹고 있던 Core.Today의 Identity인 AI관련 주제 검색을 떠올리게 되었습니다.

아! 여기서 검색하면 되겠구나!

Core.Today에서 NLP관련해서 찾아보며 Keyword-Tagging 아이디어를 떠올리는데에 가속도가 붙은 것 같아요! 사람들이 직접 모은 양질의 데이터를 보고 인공지능이 이런 것이구나 개념화도 가능했으며 GPT, ChatGPT BERT와 같은 SOTA를 달성했던 다양한 논문들에 대한 정보 또한 얻을 수가 있었습니다.

제가 알고 있던 인공지능의 범주는 실제 인공지능 크기에 비해서 너무 작고 약했던거죠..ㅠ

(사실 틈틈이 Core.Today에서 Stable-Diffusion과 같은 이미지 생성모델들에 대해서도 공부해보았답니다...)

모두의 전폭적인 지지와 Core.Today의 정보력으로 결국 목표했던 키워드 추출과 더 나아가서 AI-Related-Text 분류, Coke-BERT 논문 리뷰와 같은 다양한 활동을 할 수 있었습니다.

두달 전 황무지였던 제 지식이 Core.Today라는 사이트와 동료분들의 적극적인 지지덕에 스스로 논문을 분석하고 구현까지 가능할 정도로 성장한 것 같아요!

NLP : 키워드를 추출하자!

PLM으로 자동 텍스트 분류 제작기! : 해당 텍스트가 AI와 관련이 있을까요?

대규모 언어모델에 지식을 주입한다면? -cokeBERT 논문 리뷰를 중심으로 (1)

대규모 언어모델에 지식을 주입한다면? -cokeBERT 논문 리뷰를 중심으로 (2)

(궁금하시다면 위 링크로..)

어디서도 못할 값진 배움이었습니다!

비록 미숙하더라도 끝까지 믿고 응원해주신 경훈님, 동주님, 국문님께 다시 한 번 감사 인사를 드립니다!

올 1학기 다시 학교로 돌아와 복학을 하지만 누구보다도 Core.Today 헤비유저가 되어서 멀리서나마 응원하겠습니다!

코어닷 투데이 안녕!

15
6
Jun Lee

Jun Lee

대규모 언어모델에 지식을 주입한다면? -cokeBERT 논문 리뷰를 중심으로 (2)

저번시간에 cokeBERT와 같은 지식을 주입한 대규모 언어모델의 중요성에 대하여 알아봤습니다.

이번시간에는 cokeBERT의 구조와 방법론에 대하여 알아봅시다.

과연 cokeBERT는 어떤 구조를 가지고 있을까요?

cokeBERT는 T-Encoder, DK-Encoder, K-Encode로 총 3가지의 Encoder를 가지고 있습니다.

T-Encoder는 Text-Encoder로 어떤 Text가 주어졌을 때, 문맥 정보를 뽑아내는 역할을 진행합니다. 문맥 정보라는 것이 어색하게 들릴 수 있는데, 쉽게 생각하면 컴퓨터가 알아보기 쉽게 문장을 숫자로 된 공간 벡터로 표현한 것을 의미합니다. 문장을 컴퓨터 차원으로 해석하는 것이죠!

DK-Encoder는 Dynamic Knowledge Context Encoder입니다.

쉽게 말하자면, Knowledge-Graph로부터 우리가 주목하는 Entity와 연관된 Sub-graph를 가져오고 어느 Node를 주목할 지 동적으로 가중치를 부여하고 이 부여된 가중치를 이용해서 재구성한 Graph 데이터를 컴퓨터가 알아듣기 쉽게 숫자로 임베딩을 하는 과정입니다. 즉, 주제와 연관성이 높은 Node를 선택하고 임베딩하는 과정이라고 생각하면 쉽습니다.

K-Encoder는 Knowledge Fusion Encoder로 DK-Encoder로 부터 나온 그래프 임베딩 벡터와 T-Encoder로 부터 나온 Token 차원 임베딩 벡터를 적절히 조화해서 컴퓨터가 문장을 해석하는 단계입니다. 즉, cokeBERT에서 결과를 도출하는 마지막 단계입니다.


각 단계를 자세하게 알아볼까요?

알아보기 전에 논문을 읽기 위한 필수 Notation에 대해서 먼저 알아봅시다. 수식이 등장할건데 이해하면 아주 쉬우니까 따라와봅시다!

그래프에서 표현하는 'G'입니다.

KG는 앞서 말했듯이 Entity들을 Relation으로 엮어주는 그래프입니다.

h는 head, t는 tail을 의미하며 그래프에서 특정한 Edge, 즉 간선이 Head entity (h)에서 Tail entity (t)로 relation (r)을 가지고 있으면 (h,r,t)로 표현을 합니다.

그래프에서 모든 Entity 집합인 E와 relation 집합인 R이 만족하는 모든 (h,r,t) Edge 정보를 담은 set이 'G'입니다.

위 그림과 같은 KG가 있다면 NLP와 AI를 연결하는 Edge의 정보에서 head는 NLP, relation은 'kind-of', tail은 AI가 됩니다.

별로 어렵지가 않죠?

위와 같은 표현도 등장하는데, 아주 간단합니다.

컴퓨터는 String 타입을 해석할 수 없으니 문장을 Token들로 잘라서 BERT나 Roberta에 넣어줍니다. 그래서 S를 토큰들의 집합, w는 토큰, j는 인덱스 N은 전체 토큰의 수라고 생각하면됩니다.

이때 토큰과 Entity는 다를 수 있다는 것이 중요합니다.

여기서 정의한 Entity는 문장에서 골지, 즉 본체가 되는 단어를 의미하기 때문에 모든 토큰이 Entity가 될 수 없습니다.

이제 Notation을 모두 공부해보았으니, Encoder를 분석해봅시다!


우선 첫번째 T-Encoder부터 알아봅시다

T-Encoder


이 논문에서 활용한 T-Encoder는 BERT와 Roberta 두 모델을 활용했습니다.

cokeBERT의 저자는 우선 문장에서 문맥을 파악하기위한 Feature Extraction을 위한 모델로 이미 다양한 분야에서 SOTA를 달성한 BERT와 Roberta를 사용했습니다.

BERT와 Roberta는 두 모델 전부 Transformer-Encoder를 활용한다는 점에서 공통점이 있으며 Making 기법, 즉 MLM 등에서 차이점이 있으나 Roberta는 단순하게 BERT를 조금 더 업그레이드한 버전이라고 생각하면 됩니다.

이제 이 논문의 하이라이트인 DK-Encoder를 분석해보겠습니다.


DK-Encoder

DK-Encoder는 총 2가지 단계로 나뉘어 있습니다.

  1. Constructing Raw Knowledge Context
  2. Selecting and Embedding Knowledge Context

우선 첫번째, Constructing Raw Knowledge Context에 대해 알아봅시다.

KGs는 데이터의 크기가 엄청나게 거대합니다. 우리가 가진 전체 지식처럼요. 이 거대한 KGs을 모두 PLM에 결합을 한다면 메모리 효율성이 낮을 수 밖에 없습니다. 문장과 관련이 있는 몇 개의 토막 지식들만 가지고 문맥을 해석하는 편이 훨씬 좋겠군요!

그래서 KGs 전체를 사용하는 것이 아닌 텍스트에서 주어진 Entity와 연관이 있는 몇 개의 sub-graph를 가져옵니다.

이 논문에서는 K 개의 Edge 거리를 가진 Node까지 Sub-Graph를 가져오는 K-hop를 이용합니다.

그 알고리즘은 다음과 같습니다.

왼쪽에 있는 E는 m을 중심으로하는 i-hop의 집합입니다.

쉽게 설명하면 다음과 같습니다. head 노드는 (i-1)-hop에 속하면서 tail 노드는 0에서 (i-1)-hop에 속하지 않습니다. 이 head와 tail이 relation r을 가진다면 tail은 i-hop를 가질 수 밖에 없습니다!

반대인 경우도 마찬가지이구요.

두 경우의 합집합이 i-hop 전체 집합이 되겠군요!

자 이제 Sub-graph는 다음과 같이 정의할 수 있습니다.

Sub-Graph 데이터는 0-hop부터 K-hop까지의 엔티티의 집합이라고 생각할 수 있겠군요! (K 값은 실험 환경에 따라 변경했습니다.)

Entity m을 중심으로하는 G또한 head와 tail이 모두 Sub-graph에 속하면서 relation을 가지는 (h,r,t)집합으로 정의합니다.

자 이렇게 Graph로부터 Entity 집합과 Sub-graph Gm을 모두 추출했습니다.

이제 제일 중요한 단계인, 가중치 부여가 남았습니다.

cokeBERT에서는 여러 층의 Semantic-GNN을 사용해서 임베딩하고 가중치를 부여합니다. 이제 GNN 각 층에서 이루어지는 계산에 대해 알아봅시다.

그전에, (h,r,t)를 벡터화 시키는 방법론에 대하여 알아볼까요?

어떤 벡터표현이 (h,r,t)를 잘 임베딩했다고 생각될 수 있을까요?

예를 하나 들어보겠습니다.

대한민국 + 수도 = 서울
미국 + 수도 = 워싱턴D.C.
오스트리아 + 수도 = Wien

등과 같이 head(국가명)에 Relation(수도)을 더하면 tail(수도명)에 향하도록 벡터화 시키면 어떨까요? 다음 그림을 보면 이해가 편할거에요.


위 벡터 임베딩을 활용하는 대표적인 방법으로는 이 논문에서 인용한 TransE라는 방법이 있습니다.

알고리즘이 길지만 간단하게 분석해보면 총 3가지 단계로 이루어져 있습니다.

첫번째 h,r,t를 각각에 대해 정규화합니다.

두번째, head 와 tail을 Corrupt 시켜줍니다.

세번째, Loss가 감소하는 방향으로 임베딩을 업데이트합니다.

여기서 의문점이 생겼습니다! 왜 Entity를 Corrupt 시킬까요?

만약에 위 예에서 대한민국이 아니라 모니터가 들어온다고 생각해봅시다.

이 경우에는 모니터에서 수도를 더한 벡터는 최대한 서울과 멀어져야 할 것입니다. 모니터는 서울을 수도로 가질 수 없으니까요! 이처럼 head가 Corrupt 즉 변형되었을 때, relation을 더한 벡터가 최대한 Corrupt된 tail과 멀어지게 Loss 함수를 선택했습니다.

그리고 Corrupt 되지않은, 즉 원래 상태의 head와 relation을 더하면 tail에 가까워지도록 다음과 같은 Loss 함수를 설정해주면 완성입니다.

(Gamma는 Loss값이 -가 되는 것을 방지해주는 margin 값입니다.)


CokeBERT에서는 TransE 방법을 통해 Entity, Relation을 임베딩했습니다.

이 임베딩한 Entity와 Relation을 가지고 GNN층을 이해해봅시다.

GNN각 층에서의 Hidden Layer의 수식은 다음과 같이 정의됩니다.

(i-1이 지수로 올라와있지 않은 n과 r은 TransE로부터 계산된 임베딩 벡터값입니다.)

i번째 Hidden Layer중 entity n에서 entity e로 향하는 값은 n과 r의 벡터합과 i-1번째 Layer에서 (후술할 어텐션 메커니즘을 통해)가중치를 부여해서 계산된 n벡터의 concatenation을 한 후 학습가능한 가중치 벡터 W에 곱한 값입니다.

n+r 벡터는 e벡터로 향할 것이고, 이전 Layer에서 가중치 값, 즉 문장에서 중요도를 파악한 n벡터와 같이 W에 곱해주어서 n벡터의 오차를 보정하고 더 정확하게 e벡터로 향할 수 있게해줍니다.

이제 e의 모든 Neighborhood에 대하여 가중치를 부여하는 f함수를 적용시키면 i번째 Layer에서의 e 벡터가 완성이됩니다!

그럼 도대체 f함수가 어떻게 가중치를 부여할까요?

f-함수는 위와 같이 정의됩니다. 많이 사용해왔던 어텐션 메커니즘과 동일합니다. Query와 Key를 통해 가중치를 정하고 이 가중치를 Value 값에 곱해주어서 어텐션 값을 부여합니다. (어텐션을 모르신다면 여기를 클릭해주세요!)

Query는

Key는

와 같이 정의가 되는데, 여기서 되게 재미있습니다.

보통의 self-attention과 달리 여기서 Query는 T-Encoder 즉 BERT로 부터 생성된 pooler output, 문맥 벡터(s)를 사용합니다. 또한, key는 relation을 사용합니다. 종합하자면 어떤 문장에서 문맥과 Entity들 사이에서 relation을 분석하여 가중치를 부여합니다.

이게 왜 중요할까요?

다음 문장을 살펴봅시다.

"스테판 커리와 클레이 톰슨이 주먹다짐을 하고있다."

해당 문장을 해석하기 위해선, warriors라는 소속팀도 중요하겠지만, 그보다 더 중요한 사전지식은 둘이 어떤 앙숙관계(relation)가 있는지가 더 중요하겠죠. 이처럼 문맥과 relation을 비교해서 더 적절하게 Entity들에 대해서 어텐션 값을 부여해줄 수 있습니다.

모든 Neighborhood에 대해서 어텐션 메커니즘을 진행해주고 더하면 비로소 가중치를 부여한 임베딩 벡터가 완성됩니다.

K-Encoder

사전지식과 문맥을 결합하는 Knowledge Fusion Encoder에서는 ERNIE라는 논문에서 사용하는 방법과 동일한 방법을 사용했습니다.

DK-Encoder로 나온 Entity 벡터와 BERT에서 구한 Token 임베딩 벡터를 위 수식으로 결합합니다.

단순히 말하면 Entity벡터와 Token 벡터를 적절히 섞은 h라는 벡터를 만들고, 그 mixture로 부터 Token 벡터와 entity벡터를 추출해서 다음 층에 넣어줍니다.

(h,w,e 벡터를 생성하는 과정은 모두 학습가능한 가중치 벡터를 사용해서 Loss에 따라서 업데이트가 가능합니다.)

이렇게 여러층의 K-Encoder층을 통과해서 비로소 모델이 완성됩니다.


이제 결과를 확인해볼까요?

RESULT

KGs

위키백과에서 h, r, t를 TAGME로 추출해서 KGs를 구성했습니다.

Task

Task는 총 3가지 부여했는데, 첫번째는 BERT와 같이 CLS 토큰에서 문맥벡터를 추출하는 Task, 두번째는 Entity를 분류하는 Entity Typing, 세번째는 두 Entity들간의 Relation을 파악하는 Relation Classification이 있습니다.

자 이제 결과를 보시죠!

왼쪽과 오른쪽 문장은 둘 다 저커버그랑 빌게이츠가 Entity로 등장한 문장이지만, 왼쪽 문장은 둘 다 하버드대학 자퇴를 한 것을 다룬 문장이고 오른쪽은 둘 다 코로나 치료를 위해 협조한 내용을 다룬 문장입니다.

왼쪽 문장에서 cokeBERT가 가중치를 부여한 것은 두 사람이 공부했던 학교들을 높은 가중치로 계산했고, 오른쪽 문장에서는 foundation과 CEO를 담당하고 있는 회사이름이 높은 가중치로 계산되었습니다.

해당 결과에서도 볼 수 있듯이, 같은 Entity이지만, 문맥에 맞게 Relation을 선택하고 가중치를 부여하는 것을 볼 수 있습니다! 실제로도 두 문장을 해석하기 위해서는, 공부했던 학교와 창업한 기업과 제단이 사전지식으로 중요한데, 잘 선택되었네요.

이전 모델인 ERNIE와 비교해도 중요한 Entity를 잘 선택한 것을 볼 수 있습니다. 이제 필요한 지식을 잘 선택한 것은 확인되었습니다.

이제 Task를 잘 수행하는 지 확인해봅시다.

앞서 말한 Entity Typing과 Relation Classification Task에 대한 F1, P, R Score입니다.

Entity Typing의 경우에는 Roberta Large를 T-Encoder로 사용한 Coke모델이 가장 성능이 좋았고, 기존 모델들 보다 1~4%정도로 우세했습니다.

Relation Classification의 경우에는 거의 모든 score에서 3~4%차이로 SOTA를 달성한 것을 볼 수 있습니다.

추가적으로 K-hop에서 K의 크기에 따른 정확도와 DK-Encoder에서 Attention 유무에 따른 정확도를 비교해보았습니다.

위 그래프에서 나타나듯이 K가 커짐에 따라서 F1, Micro 점수가 모두 향상되는 것을 볼 수 있습니다. 당연히 지식이 커질수록 정확도는 증가하겠지만 K 값을 많이 키우는 것은 메모리 연산 효율성 부분에서 권장되지는 않을 것 같습니다.

Attention 유무에 따른 정확도 비교 그래프인데, attention을 통해서 가중치를 부여한 모델이 가중치를 average로 설정한 모델보다 2~4% 증가한 것을 볼 수 있습니다.

위 두 분석을 통해서 cokeBERT가 다른 Knowledge Enhanced PLM보다 우세함을 알 수 있었습니다.


Conclusion

텍스트상에 등장하지 않은 Entity까지 Knowledge를 Dynamic하게 선택해서 PLM의 정확도를 증가시킨 점에서 주목할만한 논문입니다.

제 개인적인 생각으로는 정말 컴퓨터가 사람처럼 효율적이고 정확하게 글을 읽으려면, BERT의 Transformer Encoder층에서 Attention mechanism을 적용할 때, real-time으로 KGs를 이용하는 방법이 등장해야할 것 같습니다.

우리 인간은 문장을 다 읽고 문맥을 파악해서 사전지식을 적용시키는 것이 아니라, 문장을 읽으면서 사용될 사전지식을 떠올리기 때문에 이와 유사하게 모델을 구성하기 위해서는 DK-Encoder와 K-encoder처럼 새로운 Encoder Layer를 BERT 위에 추가하는 것이 아니라 BERT와 같은 PLM들의 구조를 변형시켜서 Transformer Encoder 대신 이전 Layer의 문맥 벡터 Query를 참조하는 DK-Encoder로 구성된 모델을 학습시켜보는 것이 좋을 것 같습니다.


References

BERT

Jacob Devlin, Ming-Wei Chang, Kenton Lee, and Kristina Toutanova. 2019. Bert: Pre-training of deep bidirectional transformers for language understand- ing. In Proceedings of NAACL, pages 4171–4186.

TransE

Antoine Bordes, Nicolas Usunier, Alberto Garcia- Duran, Jason Weston, and Oksana Yakhnenko. 2013. Translating embeddings for modeling multi- relational data. In Proceedings of NeurIPS, pages 2787–2795.

ERNIE

Zhengyan Zhang, Xu Han, Zhiyuan Liu, Xin Jiang, Maosong Sun, and Qun Liu. 2019. Ernie: Enhanced language representation with informative entities. In Proceedings of ACL, page 1441–1451.


7
0
Jun Lee

Jun Lee

대규모 언어모델에 지식을 주입한다면? -cokeBERT 논문 리뷰를 중심으로 (1)

Nobody phrases it this way, but I think that artificial intelligence is almost a humanities discipline. It's really an attempt to understand human intelligence and human cognition.
아무도 이렇게 표현하지 않겠지만, 인공지능은 거의 인문학이라고 생각합니다. 인공지능은 인간의 인지능력과 지성을 이해하려는 시도입니다.
-Sebastian Thrun

저는 스탠포드 대학교의 교수이자 자율주행의 아버지라고 불리는 세바스찬 스런의 생각에 전적으로 동의합니다.

인공지능은 세상에 없던 새로운 무언가를 만들어가는 과정이라고 생각되어지지만 사실은 여러분들이 숨을 쉬는 한 매일 끊임없이 하고 있는 고도의 사고의 일부를 형편없게 모방한 일종의 알고리즘입니다.

엄청난 학습 데이터와 그 학습 데이터를 학습시키기 위한 거대한 GPU, GPU를 구동하기 위한 더 엄청난 전력 소비까지. 실제로 GPT-3를 학습시킬 때, 45TB의 데이터와 512개의 V100 GPU, 28,000KW의 전력이 사용되었습니다. 가구 연 전력소비량의 3배에 육박하는 엄청난 전력량이죠. 반면에, 인간은 하루에 100W 정도의 에너지를 갖는 음식이면 충분하죠!

이 엄청난 비효율을 조금이라도 극복하기 위해서는 효율의 끝판왕인 인간의 인지, 사고과정을 최대한 모방하는 것이 좋은 방법이 될 것입니다.



서론이 좀 길었는데, 정말 인간처럼 글을 읽고 이해하는 NLP모델을 만들기 위해, 이제 우리가 어떻게 글을 읽고 이해하는지 생각해봅시다.

예를들어 다음과 같은 문장을 해석해봅시다.

"chatGPT와 Dall-E등이 최근 ML을 연구하는 사람들 사이에서 가장 뜨거운 주목을 받고있다."

사람은 위와 같은 문장을 해석할 때, 문장에 나온 단어들만 가지고 해석하지 않습니다.

실제로는 다음과 같이 해석하게됩니다.

"GPT구조를 사용하는 대규모 언어 생성 모델 chatGPT와 대규모 이미지 생성 모델 Dall-E와 같은 대규모 생성모델이 ML연구원 사이에 인기를 끌고 있구나!"

왜 이런 해석이 가능할까요?

그 이유는 바로 배경지식 덕분입니다.

인간은 위와 같은 잘 짜여진 Entity 간, 단어들 간 의미관계를 이미 배경지식으로 가지고 있기 때문에 같은 문장을 보고도 읽고도 조금 더 고차원의 해석이 가능한 것입니다.

컴퓨터는 이렇게 해석하지 못할까요?


위와 같은 단어들 간의 관계를 나타낸 Graph를 Knowledge Graph, KG라고 불립니다. 이 KG들과 문맥을 파악해주는 Transformer, BERT를 적절히 결합한다면 컴퓨터도 조금은 인간처럼 문장을 읽고 해석할 수 있지 않을까요?

이 생각으로부터 등장한 논문들이 Knowledge Enhanced Pre-trained Language Model입니다.


cokeBERT 논문에서도 적극적으로 reference로 활용하고 있는 ERNIE와 K-BERT, K-Adapter등이 등장했죠.

하지만!

위 논문들에서는 작은 문제들이 있었는데, 우선 ERNIE!

ERNIE는 KG를 BERT와 결합하는 모델이기는 하지만, TEXT 표면에 들어난 Entity 정보만 가지고 그래프 관계를 해석합니다. 만약에 "chatGPT와 Dall-E등이 최근 ML을 연구하는 사람들 사이에서 가장 뜨거운 주목을 받고있다."라는 문장이 들어오면 표면상 들어난 chatGPT, Dall-E 등과 같은 Entity Node 사이의 관계만 고려하기 때문에, Transformer, GAN과 같이 Entity Node로 부터 그래프상 edge(간선)의 개수가 2개 이상으로 떨어진 Node의 단어는 고려하지 못하는 문제점이 있었습니다.

ERNIE를 적용한다면 세부 내용까지 세세하게 다루는 Aritcle일 경우 표면상에 들어난 Entity Node가 많아서 KG에서 유의미한 관계를 분석하여 좋은 결과를 낼 수도 있지만, 짧은 문장일 경우 Text에 들어난 Entity가 부족하여 좋은 결과를 내지 못할 가능성이 큽니다.

K-BERT, K-Adapter의 경우에는 어떨까요?

K-BERT, K-Adapter는 다행히도 표면상에 들어나지 않은 Node들의 관계도 분석합니다. 마찬가지로

"chatGPT와 Dall-E등이 최근 ML을 연구하는 사람들 사이에서 가장 뜨거운 주목을 받고있다."라는 문장을 입력받으면 ERNIE와는 다르게 Transformer, Generative AI, Zero-shot Learning 등의 연관된 Node들을 고려합니다. 하지만! K-BERT, K-Adapter에서는 연관된 Node를 선택할 때, 문맥에 맞게 동적으로 선택하는 것이 아닌, 어떤 문장이 오더라도 Entity가 같으면 같은 Node를 선택하는 정적으로 Node를 선택합니다.

예를 들어 "chatGPT가 윤리적 문제를 일으킬 가능성이 있다."라는 문장을 입력받았다면 치팅, 논문 대필 등과 같은 연관 Node를 선택해야하지만 Transformer, OpenAI와 같은 문맥에 관계가 적은 Node를 선택할 수도 있습니다.

위 모델들이 가지고 있는 단점등을 해결하기 위해서 등장한 모델이 바로 cokeBERT입니다.

ERNIE의 단점을 극복하기 위해서, 표면에 들어나지않은 KGs의 Node도 고려했고, K-BERT의 단점을 극복하기 위해 연관된 Node의 가중치 문맥을 기준으로 부여해서 동적으로 선택을 한 모델이 바로 cokeBERT입니다.

이제 cokeBERT에 관해 자세히 알아볼까요?

트랜스포머, 어텐션 메커니즘, 임베딩, BERT

위 개념들을 학습하고 읽는다면 훨씬 이해가 쉬울거에요!

cokeBERT 논문 리뷰 (2)

8
0
Hyunsol Park

Hyunsol Park

GNN을 구축하고자 하는데 극초기 스타트업에서 팀구성 할때 어떤 부분을 고민해야 되는지 궁금합니다!

3
5
Jun Lee

Jun Lee

PLM으로 자동 텍스트 분류 제작기! : 해당 텍스트가 AI와 관련이 있을까요?


1.Overview & Motivation

저번시간에 PLM(Pre-trained Language Model)을 통해 키워드를 추출하는 과정을 진행해 보았습니다.

하지만 유저가 잘못된 사이트를 입력한다면? 그 사이트가 AI와 관련이 없다면?

회사와 유저, 모두의 니즈에 부합하지 않을거에요!

모두 AI관련 정보를 찾으려 저희 Core.today에 접근했으니 말이죠~ 그렇다면 유저의 텍스트가 AI 관련인지 아닌지 판별하는 알고리즘이 필요하겠군요!

만들어 봅시다.

2. Success metrics

도대체 AI관련 뉴스가 무엇일까, chatGPT와 함꼐 생각해보았습니다.

chatGPT가 제안하는 유용한 metric으로는 키워드, NER, Topic modeling등 여러가지 방법이 있었습니다. 하지만 실제로 텍스트를 분류할 때, 'GPT-6', 'Dall-E 4'등과 같이 새로운 AI관련 용어가 키워드, NER로 들어왔을 때 인식하지 못한다는 단점이 있습니다.

또한, "AI 사업부 OOO 부장이 승진했습니다."와 같은 문장에서는 AI 사업부가 키워드, NER이 될 수 있지만 문맥상으로는 사회/경제 뉴스에 더 적합하다는 것을 알 수 있습니다.

단어에 국한된 것이 아니라 일반인들이 글을 읽고 문맥을 파악했을 때, "오, 인공지능 관련 지문이구나!"라고 느끼는 텍스트가 AI관련 텍스트라고 기준을 정했습니다. 다소 애매하죠?

인간이 수 없이 하고 있는 이 분류작업을 AI가 못할리가 없습니다.

우리에게는 contextual vector를 무려 768 차원으로 뽑아주는, Pre-trained Language Model, BERT가 있기 때문이죠.

Contextual Information(vector)에서 '인공지능 관련'이 가지는 Boundary를 머신러닝을 통해 설정하고 그 Boundary를 통해 분류를 진행해봅시다!


3. Requirements & Constraints

  • Pre-trained model
  • Bert model / KoBert model
  • Requirements
  • transformers == 4.26.0
  • sentencepiece >= 0.1.97
  • torch >= 1.7.0, <=1.10.1
  • trafilatura (optional, 자동 URL-text fetch를 위해 필요합니다.)
  • Dataset
  • Bigkinds-뉴스 빅데이터
  • AI times-크롤링 데이터
  • Environment
  • Colab (10000개 이상의 데이터셋에서는 Colab-PRO나 40Gb이상의 GPU가 필요합니다.)

4. Methodology


4.1. Model conception

Contextual information을 추출하는 모델은 다양합니다. 기본적으로는 Bi-LSTM, GRU 모델로부터 Transformer, 나아가서는 Bert, Roberta등 여러 모델이 있죠.

저는 여러 모델을 시험해봤는데, 단어정보에 주목하는 Embedding - Dense Layer, 문맥을 파악하는 Embedding - Bi-LSTM - Dense Layer, Bert - Dense Layer 3가지를 시험해봤습니다.

첫번째 모델은 각 단어 토큰의 Embedding 값, 즉 숨겨진 정보에 주목하여 분류를 해봤고, 두번째 모델은 Bi-LSTM을 사용하여 앞 뒤 문맥을 파악하게 하고 마지막 cell에서 문맥정보를 빼와서 분류를 진행해보았습니다.

세번째 모델은 앞에 모델과는 다르게 이미 문맥 정보, Contextual information을 Transformer encoder Layer와 Positional encoding을 통하여 잘 extract 할 수 있게 pre-training 시킨 PLM모델인 BERT를 활용하여 문맥정보를 추출하고 그 문맥정보를 활용하여 분류를 해보았습니다.


4.2. Data

데이터셋을 고르는 것이 까다로웠습니다. 어떤 데이터셋을 선택해야 최적의 결과를 낼 수 있을까요?

아래 사진을 보시죠!

우리가 각 모델에서 Contextual-vector를 얻어서 차원상에 점을 찍으면 위와 같이 나올겁니다. 정치뉴스, 경제뉴스, IT과학 뉴스 등 세분화된 그룹들로 구분할 수 있겠죠! 네이버 뉴스 카테고리처럼요. 그렇다면 우리는 다른 카테고리, 즉 IT/테크/과학이 아닌 다른 카테고리를 선택할 필요가 있을까요?

제 생각은 NO입니다. 왜 그럴까요?

우리의 궁극적인 목표는 AI-Related-Text를 잘 구분하는 것입니다. 그 말은, AI-Related-Text와 IT/테크/과학 분류군에서의 Boundary, 경계를 얼마나 잘 설정하냐가 관건이 될거에요.

그렇다면 Boundary 근처의 데이터들을 최대한 많이 학습시키는 것이 효율적인 학습이 될 것이라고 확신했습니다.

자 이제 데이터를 수집해볼까요?

한국 뉴스 빅데이터를 지원하는 빅카인즈를 이용해 키워드 AI로 AI관련 뉴스데이터셋을 찾아봤어요!

하지만,,

"OOO부장 AI사업부 승진"

"AI빅데이터 사업부 OOO인사발령"

"[기상정보] 다음 내용은 인공지능을 활용한 데이터를 기반으로 작성한 내용입니다."

위 사례와 같이 AI라는 단어는 문장에 포함되지만 기사의 Topic, 주제를 보면 경제, 일기예보 등 다른 주제가 섞여있는 경우가 많아서 빅카인즈 데이터는 NAI, 즉 AI와 연관이 되지 않은 기사 URL-데이터셋을 수집했습니다.

AI관련 뉴스데이터셋은 인공지능신문이라는 신문 사이트를 활용했습니다.

해당 신문은 이름에 걸맞게 인공지능에 관련된 내용만 다방면으로 다루는 사이트라서 이 사이트에 포함된 모든 뉴스들이 인공지능 관련이라고 가정할 수 있었어요.

그래서 해당 사이트에서 AI tech, AI industry 분야에서 모든 기사 URL을 스크래핑하여 URL-데이터셋을 만들었고 각 URL을 순회하며 텍스트를 뽑아와서 AI-NAI 뉴스 데이터셋을 만들었습니다.

AI와 NAI 데이터셋의 크기가 1:1로 설정하고 None데이터를 정제하여 최종적인 데이터셋을 만들었습니다.

자 이제 모델은 만들어 봅시다.


4.3. Techniques

제가 설계한 각 모델은 다음과 같습니다.

우선 첫번째 Embedding-Dense 모델입니다.

우선 Text로부터 Word-tokenization을 진행합니다. 그 이후 Embedding Layer(학습 가능)을 통과하고 나온 단어 수준 embedding vector를 구해서 Dense층을 통과한 후 Binary-classification을 위해 sigmoid 함수를 거치면 끝이납니다.


두번째는 Embedding - Bi-LSTM 모델입니다.

Word-tokenization과 Embedding Layer를 통과하는 것은 똑같습니다. 다만 이제 Dense-Layer 대신 Bi-LSTM층을 통과한 후 output층을 Concatenate 시켜서 Dense-Sigmoid층을 통과시킵니다.

마지막, BERT-Dense 모델

Bert는 위에서 언급했다시피 Contextual vector를 추출하기 좋은 모델입니다.

Bert의 입력층에는 단어 Token과 어디까지가 중요하지 나타내는 어탠션 마스크, 마지막으로 문장을 구분하는 Segment-embedding이 필요합니다.

이렇게 나온 Output들 중에 Pooler output([CLS] 토큰 위치 output)의 벡터를 가지고 와서 Dense-Sigmoid층을 통과하여 이진 분류를 완성합니다.


4.4. Result

우선 정확도는 다음과 같았습니다.

1.Embedding-Dense

Validation accuracy는 0.91정도가 나왔네요. 약 10%정도 오류가 있었습니다.

2.Embedding - Bi-LSTM

위 Embedding-Dense 모델보다 살짝 높은 Validation accuracy가 0.917정도 나왔습니다.

조금 더 개선되었네요!

3.BERT-Dense

(위에는 BERT 모델 Architecture인데 너무길어서 생략하겠습니다...)

우리 BERT모델은 Validation accuracy가 0.988정도 나왔습니다.


4.4. Conclusion

대망의 Bert! 역시 다양한 분야에서 SOTA를 달성한 모델답게 정확도가 무려 98.86%가 나왔습니다.

그렇다면 우리가 선택해야하는 모델은 BERT-Dense 모델이 되겠네요!

BERT-Dense 모델을 이제 Test data로 실험해보고 학습데이터를 더 많이 확보하여 학습시켜야겠습니다.

5. Implementation

5.1. High-level design

유저가 URL을 사이트에 넣으면, 우리는 그 URL에서 텍스트를 추출하고 AI related BERT Classifier에 통과시킵니다. 만약에 AI관련이라면, 키워드와 요약문을 추출하고 데이터베이스에 저장하고 프론트엔드에 나타냅니다.

만약에 AI관련이 아니라면..?

이후 프로세스는 생각을 좀 해봐야겠습니다ㅠㅠ

5.2. Performance (Throughput, Latency)

문서의 길이에 따라서 다르지만 평균적으로 Colab 무료 cpu 환경에서 문서당 요약문, 키워드 추출까지 약 1 ~2초가 소요됩니다.


6.Appendix


6.1. Alternatives

음,, 제가 찾아본 바로는 텍스트를 분류하는 모델은 많이 있으나, AI 관련 텍스트 인지 아닌지 분석하는 모델은 없어서 Few-Shot-Learning이 가능한 chatGPT를 통해 결과를 비교해보았습니다.

chatGPT:

ClassBERT(My model):

chatGPT:

ClassBERT(My model):

chatGPT:

;; 제가 잔소리좀 했더니 화가 났나봐요,,

ClassBERT(My model):

오호! 지금까지는 두 모델 모두 잘 분류하고 있습니다.

그렇다면 코딩, 블록체인, 알고리즘 등 IT기술에는 연관이 되지만 AI 범주가 아닌 데이터들은 어떻게 평가를 할까요?

chatGPT:

ClassBERT(My model):


chatGPT:


ClassBERT(My model):

위 두개의 사례를 보면, chatGPT는 AI의 범주에 있지 않지만 IT범주에 있는 알고리즘, 빅데이터, 메타버스, 코딩 등과 같은 토픽을 가진 텍스트는 모두 AI와 관련이 있다고 한 반면, 제 모델은 AI 범주를 조금 더 잘 구분하는 것을 볼 수 있습니다.

chatGPT도 완벽하진 않군요!

(AI 관련 확률은 SIGMOID를 거친 결과라서 그냥 재미로만 봐주세요ㅎㅎ!)


6.3. Milestones & Timeline

모델 구상 및 설계 : 0.5 day

데이터 가공 : 0.5 day

모델 실험 (동주님이 주신 데이터로) 및 글 작성 : 1 day

6.4. Glossary

BERT

Transformer

Dense Layer

Embedding

Sigmoid

Bi-LSTM

6.5. References

BERT 개념 정리 (특징/구조/동작 방식/종류/장점/BERT 모델 설명)

LDA

7
1
Jun Lee

Jun Lee

NLP : 키워드를 추출하자!

1.Overview & Motivation

코어닷투데이는 유저들이 AI관련 용어, 최신 기술들을 쉽고 빠르게 접근할 수 있는 환경을 제공하는 회사입니다.

유저가 관심있어하는 article을 입력했을 때, 그 article에서의 키워드를 제공하고 그 키워드를 포함하는 다른 문서를 참조하며 유저들이 마인드맵처럼 자신의 생각을 확장할 수 있다면 유저가 만족하는 서비스를 제공할 수 있으리라 생각했습니다. Twitter나 Instagram처럼요!

또, 논문의 Abstract에서 제공하는 키워드처럼, 사람들은 키워드를 숙지한 후 문서를 읽으면 체계적이고 효율적으로 문서의 내용을 습득할 수 있답니다.

하지만 유저가 직접 입력해야하는 키워드 태깅 방식은 타겟 키워드에서 여러 변형된 형태(오타를 포함하여)로 태깅 될 수도 있고(Ex: AI, 인공 지능, 인공지능, Artificial Intelligence, artificiall intellligeence), 무엇보다도 유저가 서비스를 이용하는데에 피로감을 느낄 수 있다고 생각했어요.

“유저가 원하는 키워드를 자동으로 추출하자!”가 이 모델의 출발점이었습니다.

2. Success metrics

“좋은 키워드가 무엇일까?” “유저가 어떤 키워드를 원할까?”를 고민하는 것이 가장 어려웠습니다..

AI관련 용어와 최신기술의 접근성을 높이는 것이 목표니, AI관련 용어가 키워드가 되어야할지 아니면 정말 말그대로 문장을 대표하는 용어들을 키워드로 설정할 지 생각이 많았답니다.

저는 “유저가 원하는 키워드는 비단 AI관련 용어일 뿐 아니라, 보내주신 article에서의 핵심 용어도 포함한다.”라고 생각하고 프로젝트를 진행해보았습니다.

3. Requirements & Constraints

  • Pre-trained model
  • Bert model / KoBert model
  • XLM-Roberta NER model
  • Requirements
  • transformers == 4.26.0
  • sentencepiece >= 0.1.97
  • torch >= 1.7.0, <=1.10.1
  • trafilatura (optional, 자동 URL-text fetch를 위해 필요합니다.)
  • Dataset
  • CNN/DM summarization
  • AIhub 한국어 요약
  • Environment
  • Colab (10000개 이상의 데이터셋에서는 Colab-PRO나 40Gb이상의 GPU가 필요합니다.)

4. Methodology

4.1. Model conception

물론 키워드를 문서에서 바로 뽑을 수 있다면, 더할나위 없이 좋겠죠. 빈도나 Co-occurence같은 지표를 통해서 말이에요.

 📃 [(49996, '서비스'), (41834, '기업'), (33440, '데이터'), (32562, '디지털'), (28158, '사업'), (26960, '활용'), (26876, '제공'), (25780, '플랫폼'), (24436, '분야')]

위 데이터는 한국어 AI 뉴스 10000건 중 ‘AI’의 (# of Co-Occurence, word) 데이터인데, 보시는 바와 같이 키워드라기보다 연관어라는 느낌이 강합니다.

우리가 사용하는 언어는 복잡한 의미관계를 내포하고 있어서, 해당 방법으로는 정말 그 문서를 대표하는 키워드를 뽑아내기에는 부족해요.

확률 기반, Co-occurence, LSTM, Bi-LSTM등 여러 시행착오를 거쳤지만 결과는 만족스럽지 못했어요.

그렇다면, 요약문으로부터 Named entity를 추출하면 어떨까 생각했어요. 제가 여러 요약문을 보았을 때, 거의 Named-entity들은 키워드가 되기에 충분했어요. 아래의 예제는 ChatGPT에게 Article을 주고 각각 키워드 추출, 요약으로부터 Named-entity를 추출하게한 결과에요. 중요한 단어들은 거의 다 포함하고 있답니다.

흠,, 이제 요약문을 추출해야하는데 가장 대표적인 방법으로 pre-trained LM인 BERT를 사용하는 BERTSUM이 있었습니다. BERTSUM을 학습시키고 NER 층을 통과시켜서 키워드를 추출해서 키워드 데이터셋이 필요없는 모델을 만드는 것이 전체적인 구상이었습니다.

4.2. Data

cnn_dailymail · Datasets at Hugging Face

데이터셋 구조:

CNN/DM 데이터셋은 Article, Highlights 구조로 되어있습니다. Article은 본문 Highlights는 요약문을 나타내는데, 이 Highlights가 사람이 분석한 Gold-Summary이기 때문에, Article 문장과 대조하여 ROUGE-2 점수를 기준으로 해당 문장이 Summary에 해당하는지 아닌지 Binary 형태의 리스트로 변환시킬 필요가 있습니다. 

AI-Hub

데이터셋 구조:

AIhub 뉴스 요약데이터는 index-n : n번째 문장 데이터와 Extractive에 추출적 요약을 위한 gold-summary 문장 인덱스가 있습니다. 따라서 해당 데이터셋은 ROUGE-2 score를 구하는 가공이 필요가 없습니다.

다만, 가끔씩 index에 문장이 없는 경우가 있어서 이런 예외 케이스들을 2차 가공으로 걸러주어야합니다.

AIhub 데이터는 요청이 필요합니다!

4.3. Techniques

대략적인 모델은 다음과 같습니다.

입력받은 텍스트로부터 Tokenization을 진행합니다. Bert 구조에 맞게 포지션 인코딩, Segment 인코딩, 어텐션데이터를 추출해줍니다. 하지만 BERTSUM 구조에서는 [CLS] 토큰을 매 문장 앞에 넣는 것을 잊지마세요!

문장 Feature 데이터가 [CLS] 위치에 저장이 될테니 [CLS] 토큰 위치도 저장해주고요.

그 다음, pre-trained LM인 BERT에 집어넣어줍니다. 알아서 특징을 뽑아내어 줄거에요.

우리는 해당 CLS토큰에 가서 잘 나온 Feature vector들로 다시 이중 Transformer Encoder Layer로 통과시켜줍니다. 그렇다면 앞뒤 문맥을 파악하여 어느 문장이 대표가 될 지 확실하게 알 수 있을거에요. (문장들도 단어와 마찬가지로 위치정보가 중요하니, 포지션 인코딩 잊지말고요!) 이제 Sigmoid 함수로 과연 요약문이 될 수 있을지 아닐지 Binary-Classification을 해주면 BERTSUM 구현은 끝이 난답니다.

이제 결과를 비교하고 Back-propagation을 해야하는데, 어라?! CNN/DM 데이터셋에서는 GOLD-SUMMARY만 제공을 하네요.. 논문에서 나온 것처럼 python-rouge 모듈을 import하여 ROUGE-2 F1 score로 해당 문장이 요약문인지 아닌지 표현하는 binary list로 바꿔줍시다.

다행히 AIhub는 Extractive-summary index를 제공한답니다.

자 이렇게 BERTSUM 학습을 시키면 끝이납니다.

이제 BERTSUM에서 구해진 핵심 문장들을 가지고와서 NER 모델을 통해 Named-entity를 추출하면 키워드 추출이 끝이납니다.

4.4. Result

NEWS : https://tech.hindustantimes.com/tech/news/dalle-2-to-stable-diffusion-generate-photos-freely-with-these-ai-tools-71674561212855.html
🔥 등록하신 Article은 english입니다. 5-sentence summarization :
DALL-E 2 to Stable Diffusion, generate photos freely with these AI tools One of the most rapidly growing fields that has the potential to revolutionize the way we live and work is Artificial Intelligence (AI) It was revealed by OpenAI on January 21 and uses a modified version of GPT3 to generate realistic-looking images There's an AI which can help you make realistic AI photos in just seconds! Called DALL-E, it is a deep-learning model developed by OpenAI to generate digital images with language descriptions And it's not just DALL-E that can help users create digital art pieces using AI
Keyword from 5-sentence :
{'OpenAI', 'DALL-E 2', 'GPT3', 'Stable Diffusion', 'Intelligence', 'AI', 'DALL-E'}


NEWS : https://www.artificialintelligence-news.com/2023/01/20/google-speed-up-ai-releases-in-response-chatgpt/
🔥 등록하신 Article은 english입니다.
5-sentence summarization :
The New York Times claims ChatGPT set off alarm bells at Google Google is reportedly set to speed up its release of AI solutions in response to the launch of ChatGPT In 2020, leading AI ethics researcher Timnit Gebru was fired by Google At the invite of Google CEO Sundar Pichai, the company’s founders – Larry Page and Sergey Brin – returned for a series of meetings to review Google’s AI product strategy Gebru claims she was fired over an unpublished paper and sending an email critical of the company’s practices
Keyword from 5-sentence :
{'ChatGPT', 'Larry Page', 'Timnit Gebru', 'AI', 'Gebru', 'Google', 'Sundar Pichai', 'The New York Times', 'Sergey Brin'}


NEWS : https://www.artificialintelligence-news.com/2023/01/19/openai-ceo-people-begging-disappointed-about-gpt-4/
🔥 등록하신 Article은 english입니다.
5-sentence summarization :
An improved version, GPT-3.5, powers the ChatGPT chatbot GPT-3 arrived in 2020 OpenAI CEO Sam Altman believes there is too much hype around the next major version of GPT The ability to generate mass amounts of content could exacerbate issues like misinformation and propaganda OpenAI has never rushed the release of its models due to concerns about the societal impact
Keyword from 5-sentence :
{'OpenAI', 'Sam Altman', 'GPT-3', 'ChatGPT', 'GPT-3.5', 'GPT'}


NEWS : https://www.aitimes.kr/news/articleView.html?idxno=27195
🔥 등록하신 Article은 korean입니다.
5-sentence summarization :
SK텔레콤(대표 유영상)이 2월 중 성장형 AI 서비스 ‘에이닷’에 오래된 정보를 기억해 대화에 활용할 수 있는 ‘장기기억’ 기술과 사진, 텍스트 등 복합적인 정보를 함께 이해할 수 있는 멀티모달(Multi-modal) 서비스를 장착해 본격적인 서비스 고도화에 나선다고 24일 밝혔다 또한, 세계 최초로 한국어 GPT-3 상용화 서비스를 시작한 앞선 기술력을 바탕으로 챗GPT(ChatGPT)와 같은 생성AI (Generative AI) 모델을 접목하는 등 지속적인 R&D 투자를 통해 국내 초거대 AI 서비스 시장을 선도해 나갈 방침이다 해당 정보들은 이용자가 좋아하는 것, 싫어하는 것, 직업, 취미, MBTI 유형, 애완동물까지 다양한 정보가 포함된다 먼저, 오는 2월 중 이용자가 에이닷과 오래 전에 대화했던 내용 중 중요한 정보를 별도의 메모리에 저장해두고, 사람이 마치 뇌 속에서 오래된 기억을 끄집어 내 듯이 대화 중에 활용할 수 있는 ‘장기기억’ 기술을 에이닷에 적용할 계획이다 예를 들어, 에이닷에게 “오랜만에 지하철 탔는데 환승하기 귀찮아”라고 말하면 “너 원래 택시타는 거 좋아했자나”라며 이용자가 과거에 에이닷과 대화했던 내용을 기억해 답변해주는 식이다
Keyword from 5-sentence :
{'챗GPT', '유영상', '에이닷', 'ChatGPT', 'MBTI', 'AI', 'SK텔레콤', '한국어 GPT-3'}


NEWS : https://www.aitimes.com/news/articleView.html?idxno=148979
🔥 등록하신 Article은 korean입니다.
5-sentence summarization :
구글이 '달리(DALL-E)'나 '이마젠(Imagen)'보다 훨씬 빠른 속도로 고품질 이미지를 생성할 수 있는 새로운 텍스트 이미지 인공지능(AI) 모델 ‘뮤즈(Muse)’를 공개했다고 벤처비트가 13일(현지시간) 보도했다 구글이 이번에 공개한 '뮤즈'는 256x256 이미지를 0.5초 만에 생성할 수 있는 것이 특징이다 이마젠이 9.1초 걸리는 것과 비교하면 이미지 생성 속도가 무려 20배 가까이 향상됐다 생성한 이미지의 품질도 훨씬 우수하다 생성 AI로 생성한 이미지의 품질과 정확성을 측정하는 두가지 메트릭인 CLIP 및 FID에서 다른 모델들보다 높은 점수를 기록했다
Keyword from 5-sentence :
{'Muse', '구글', '벤처비트', '뮤즈', 'AI', 'Imagen', '달리(DALL-E)', '이마젠'}

원하는 요약문과 키워드가 깔끔하게 추출되었습니다.

4.4. Conclusion

위 결과에서도 나왔듯이 Tag를 필요로 하는 명사들이 깔끔한 형태로 잘 추출되었습니다. Appendix→Alternatives에서도 언급하겠지만, 기존 모델보다 조사와 punctuation등으로 오염된 데이터가 아니라 깔끔한 명사가 추출이 되었습니다. 만약 오염된 키워드가 뽑힌다면 그 키워드를 기준으로 다른 Article들로 퍼져나가지 못할 수 있습니다. 즉, 딕셔너리 Key-error가 일어날 수 있기 때문에 그 관점에서 정말 만족할만한 결과가 나왔습니다. 물론 문장을 대표할 수 있는 키워드기도 하고요!

앞으로 유저가 만족할 때까지 해당 모델을 기반으로 발전해나가기로 결정했습니다!

5. Implementation

5.1. High-level design

유저가 URL을 사이트에 넣으면, 우리는 그 URL에서 텍스트를 추출하여 KEY-BERTSUM으로 문장 요약문과 키워드 데이터를 데이터 베이스에 저장하고, 앞에 #을 붙이고 하이퍼링크 등을 첨부하여 잘 가공된 형태로 유저 Interface에 제공합니다.

5.2. Performance (Throughput, Latency)

문서의 길이에 따라서 다르지만 평균적으로 Colab 무료 환경에서 문서당 요약문, 키워드 추출까지 약 2~3초가 소요됩니다.

6. Appendix

6.1. Previous models


6.2. Alternatives

Keyword 추출하는 알고리즘은 여러가지가 있는데, 영어에서 Yake, Keybert, chatgpt 한국어에서 Yake, KR-wordrank로 비교해보겠습니다. (Chatgpt 한국어 키워드 추출에서는 계속 에러가 발생하네요,,,)

(진짜 기사 제목처럼 chatGPT가 헛소리를 하네요.)

이제 비교결과를 보시죠!

DALL-E 2 to Stable Diffusion, generate photos freely with these AI tools

Yake: {Stable Diffusion, Artificial Intelligence, generate, images, Generate digital images}
Keybert : {A new tool can generate a number of pictures in minutes, and it takes only}
chatgpt : {"DALL-E 2", "Stable Diffusion", "Mage.Space"}
KEY-BERTSUM : {'OpenAI', 'DALL-E 2', 'GPT3', 'Stable Diffusion', 'Intelligence', 'AI', 'DALL-E'}

Google to speed up AI releases in response to ChatGPT

Yake: {Google, ChatGPT Ryan, company, Google CEO Sundar, TechForge Media, senior editor, decade of experience}
Keybert : {At the start of the year, Google's chief executive officer, Tim, decided to take}
chatgpt : {"Google", "AI", "ChatGPT", "Sundar Pichai", "Larry Page", "Sergey Brin", "Timnit Gebru", "AI ethics”}
KEY-BERTSUM : {'ChatGPT', 'Larry Page', 'Timnit Gebru', 'AI', 'Gebru', 'Google', 'Sundar Pichai', 'The New York Times', 'Sergey Brin'}

SKT, 한국어 GPT-3 기반 '에이닷' 상용화 이은 생성AI '챗GPT' 연계한다!

Yake: {SKT, 한국어, 초거대, GPT, 서비스, 서비스를, chatGPT, 정보를}
KR-wordrank : {'AI', '서비스', '한국어', '있는’, 'GPT-3', 'SKT는’, '있다', '대화'}
KEY-BERTSUM : {'챗GPT', '유영상', '에이닷', 'ChatGPT', 'MBTI', 'AI', 'SK텔레콤', '한국어 GPT-3'}

더 빠르고 정교해진 이미지 생성 AI...구글, '뮤즈' 공개

Yake: {속에서 씌어진 벽난로, Muse’ 라는 단어가, ‘뮤즈( Muse, 이미지, 빠르고 정교해진 이미지, 씌어진 벽난로}
KR-wordrank : {‘이미지', '생성', '토큰', '모델', '사용', '뮤즈', '텍스’}
KEY-BERTSUM : {'Muse', '구글', '벤처비트', '뮤즈', 'AI', 'Imagen', '달리(DALL-E)', '이마젠'}

Pros:

  • 다른 프로그램보다 태깅에 용이한 키워드들을 깔끔하게 추출하는 것을 볼 수 있습니다.
  • Article에서 고려할만한 주요단어들이 태깅되었다.

Cons:

  • Bert 구조적 한계로 Article을 512개의 토큰내에서 truncate해야하는 단점이 있었습니다.
  • 길이에 따라 전체 Article을 고려하지 못할 수 도 있습니다.
  • KR-wordrank에 비해 시간이 오래걸립니다. (KR-wordrank는 ML기반이 아니라서 비교적 빠릅니다.)

6.3. Milestones & Timeline

모델 구상 및 BERT 이해 : 1.5 day

데이터 가공 : 0.5 day

모델 설계 및 실험 : 0.5 day

6.4. Glossary

BERT

BERTSUM

NER

Transformer

Rouge

6.5. References

BERT 개념 정리 (특징/구조/동작 방식/종류/장점/BERT 모델 설명)

GitHub - nlpyang/BertSum: Code for paper Fine-tune BERT for Extractive Summarization

점프 투 파이썬

jplu/tf-xlm-r-ner-40-lang · Hugging Face

rouge-score

7
3