728x90

분류 전체보기 153

[딥러닝 / 논문 리뷰 ] Attention is all you need (NIPS 2017)

*211227 진행했던 미니 세미나에서 발표한 내용을 정리한 것임 transfomer transfomer는 구글에서 발표한 모델로 기존 인코더와 디코더를 발전시킨 모델이며 기존 딥러닝과 가장 큰 차이는 RNN과 CNN을 사용하지 않는데에 있다. 논문에서 발췌한 이 실험결과에서 transfomer는 영어를 독일어와 프랑스어로 번역한 문제에서 기존 모델보다 속도와 성능이 빨랏다는 표를 제시했다. transfomer가 이렇게 성능이 뛰어난 이유는 바로 RNN을 사용하지 않았다는데 있다. transfomer를 한 단어로 정의하면 병렬화 라고 할 수 있다. 즉 일을 한번에 처리한다는 것이다. RNN이 순차적으로 들어온 데이터를 인코딩 하는 반면 transfomer는 병렬적으로 일을 한번에 수행할 수 있다. Pos..

[딥러닝 / RNN ] attention mechanism

attention mechanism 등장 배경 Seq2Seq 모델은 인코더에서 입력 시퀀스를 context vector라는 하나의 고정된 크기의 벡터 표현으로 압축한다. 하지만 이런 Seq2Seq모델은 이전 게시글에서 정리했듯 두 가지 문제가 존재한다. 1. 하나의 고정된 크기의 벡터에 모든 정보를 압축하려고 하니까 내용이 많아지면 정보 손실이 발생한다. 2. RNN(LSTM)의 고질적인 문제인 경사도 손실 문제가 존재한다. 결론적으로, 입력 문장이 긴 상황에서 기계 번역의 성능이 낮아지는 현상이 나타났고, 이런 현상을 보완하기 위하여 중요한 단어에 집중하여 Decoder에 바로 전달하는 attention 메커니즘이 등장하게 되었다. attention mechanism 작동 방식 이 예제를 통해서 구체적..

[딥러닝 / RNN] Sequence To Sequence (Seq2Seq Model)

Sequence To Sequence란 Sequence To Sequence 모델은 LSTM (또는 GRU) 기반 모델로 고정된 길이의 시퀀스를 입력받아, 입력 시퀀스에 알맞은 길이의 시퀀스를 출력해주는 모형으로 2014년 구글 et. al 에 의해 최초로 제안되었다. 기존 DNN 모델은 다양한 분야에서 좋은 성과를 거뒀지만, 이는 고정된 차원의 feature와 고정된 차원의 출력에 특화된 방법이다. 그렇기 때문에 입력과 출력의 길이가 매번 다른 데이터를 학습하고, 이를 응용하는 문제에는 적합하지 않다. DNN은 대표적으로 기계 번역에서 한계점을 갖는다. 기계 번역은 빈번하게 입력의 길이도 다르고, 그에 따른 출력의 길이도 다르다. 예를 들어, How are you? 를 번역하는 문제를 고려해보면 잘 지..

[python] 백준 15552 빠른 A+B sys.stdin.readline()

문제 본격적으로 for문 문제를 풀기 전에 주의해야 할 점이 있다. 입출력 방식이 느리면 여러 줄을 입력받거나 출력할 때 시간초과가 날 수 있다는 점이다. C++을 사용하고 있고 cin/cout을 사용하고자 한다면, cin.tie(NULL)과 sync_with_stdio(false)를 둘 다 적용해 주고, endl 대신 개행문자(\n)를 쓰자. 단, 이렇게 하면 더 이상 scanf/printf/puts/getchar/putchar 등 C의 입출력 방식을 사용하면 안 된다. Java를 사용하고 있다면, Scanner와 System.out.println 대신 BufferedReader와 BufferedWriter를 사용할 수 있다. BufferedWriter.flush는 맨 마지막에 한 번만 하면 된다. P..

[python] 백준 1330 두 수 비교하기

문제 두 정수 A와 B가 주어졌을 때, A와 B를 비교하는 프로그램을 작성하시오. 학습 처음 input 함수만 사용했을 때 자꾸 틀린 결과가 출력되었다. 10과 2를 입력했을 때 2가 10보다 더 크다고 출력되는 식이었다. 이유를 찾아보니 input으로 숫자를 입력받을 때는 처음 type이 str로 지정된다는 것이었다. 따라서 int로 형변환을 해줘야 한다. 하나하나 형변환을 하기 번거로우니 map함수를 사용하는 것이 편리하다. a,b = map(int, input().split()) a,b=input().split() 코드 a,b = map(int, input().split()) if a>b: print('>') elif b>a: print('

[python] 백준 2941 크로아티아 알파벳

문제 예전에는 운영체제에서 크로아티아 알파벳을 입력할 수가 없었다. 따라서, 다음과 같이 크로아티아 알파벳을 변경해서 입력했다. 예를 들어, ljes=njak은 크로아티아 알파벳 6개(lj, e, š, nj, a, k)로 이루어져 있다. 단어가 주어졌을 때, 몇 개의 크로아티아 알파벳으로 이루어져 있는지 출력한다. dž는 무조건 하나의 알파벳으로 쓰이고, d와 ž가 분리된 것으로 보지 않는다. lj와 nj도 마찬가지이다. 위 목록에 없는 알파벳은 한 글자씩 센다. 학습 replace 함수 replace(찾을문자,바꿀문자,바꿀횟수), 공백일시 끝까지 탐색 ptrhon 오랜만에 하려니 하나도 기억이 안난다.. for i in lists = lists에 들어있는 문자를 하나씩 꺼냄 = i 코드 lists=['..

[프로보노 프로젝트] 2021 프로보노 공모전 은상 수상

2021 프로보노 공모전 은상 (정보통신기획평가원장 상) 수상 https://www.hanium.or.kr/portal/project/awardList.do 공모전 수상작 멘토 신청절차 멘토 의무사항 및 혜택 ICT멘토링 프로젝트를 지도하고 지식 나눔을 실천하는 스승이자 인생의 선배로 운영기관으로부터 권한을 승인 받아 멘토로 활동할 수 있습니다. 자격요건 www.hanium.or.kr 우리팀의 보고서는 "노약자를 위한 공개용 STT API를 이용한 인공지능 보이스피싱 방지 시스템" 항목에 업로드 되어있다.

[프로보노프로젝트] 2021 프로보노 공모전 3차 종합 평가 코엑스 대면 발표 후기

0. 서론 4월 말부터 쉬지않고 끊임없이 달려온 프로보노 프로젝트가 드디어 끝이 났다. 나의 첫 번째 장기 프로젝트이다. 7개월 동안 많은 일들이 있었고 넘어질 때도 많았으며 개발 오류를 붙잡고 삼일 꼬박 밤을 샌 적도 있었다. 공모전 마감일이 다가올 수록 불안해서 잠을 설치는 일도 많았다. 결과적으론 나와 팀원들 모두 매우 성장하는 계기가 되었다. 이 글에서는 2021 프로보노 공모전에 대한 전반적인 준비 과정과 3차 종합평가에 대한 것들을 남겨놓으려고 한다. 대략적인 공모전 흐름부터 발표 후 면접관으로 부터 받았던 질문들까지 기억나는 대로 적어두겠다. 1. 공모전 포스터 8월 말이 되면 프로보노 사무국에서 공모전 신청을 받는다. 대부분의 프로젝트들이 중도포기, 산출물 부실 등을 이유로 참여를 꺼리는데..

728x90