분류 전체보기 87

Text Summarization with Pretrained Encoders

논문 링크 ; arxiv.org/pdf/1908.08345.pdf BERT를 이용해서 문서 요약(extractive, abstractive 방식)이 가능한 프레임워크를 제안한 논문. 현재 회사에서 하고 있는 일이 뉴스를 extrative 방식으로 요약하는 것이므로 extractive 부분에 집중해서 정리해보자. 본 논문에선 문장에 대한 표현을 만들어주는 BERT를 기반으로 document-level encoder를 제안했다. BERT의 인코더 위에 몇 개의 inter-sentence 트랜스포머 레이어를 추가하는 식으로 구현이 되었다. (문장 추출을 위한 document-level의 피쳐를 뽑기 위함) 19년 발표 당시에 CNN/DailyMail dataset에 대해 SOTA를 찍은 논문. 약 30만개로 ..

DL&ML/papers 2020.10.21

Transformer

트랜스포머에 대해서 복습. 일단 아래의 글을 보고 이해를 해본다. The Illustrated Transformer Discussions: Hacker News (65 points, 4 comments), Reddit r/MachineLearning (29 points, 3 comments) Translations: Chinese (Simplified), Japanese, Korean, Russian Watch: MIT’s Deep Learning State of the Art lecture referencing this post In the previous pos jalammar.github.io 인코더 부분 self attention layer는 특정 단어를 인코딩 하기 위해서, 특정 단어와 문장 내..

DL&ML/concept 2020.10.21

01. 데이터가 어디서 어떻게 바뀐것인지

'데이터가 어디서 어떻게 바뀐 것인지'를 파악하기 힘들면 시스템을 이해하기 어려울 수 있다. 최근에 꽤 오래된 시스템을 리팩터링을 하면서 든 생각이다. 해당 시스템은 몇 가지 객체를 추적하는 트래킹 시스템인데, 여러 가지 모듈로 구성이되며 각 모듈은 전달 받은 데이터를 변형시켜 다음으로 전달한다. 위와 같은 상황에서, 데이터가 어디서 어떻게 바뀐 것인지 잘 파악이 되지 않아 고생을 했다. 예를 들어, 분명히 디텍션 모듈에선 [[bbox], [class], [prob]] 포맷으로 아웃풋을 뽑는데, 최종 데이터 저장 결과 파일의 디텍션 부분에는 왜 [**bbox, class, prob] 포맷이지???? 도대체 어디서 바꾼건가??? 처음엔 대충 모듈명만 보고 당연히 여기서 포맷을 건들지 않을까? 라는 생각으로..

better way 2020.10.21

05. docker-compose 환경에서 임시 nginx proxy 구성하기

docker-compose로 서버 애플리케이션을 작성할 때, 테스트 목적 혹은 임시로 nginx를 띄워 proxy시켜야할 경우가 있다. host os에 직접 nginx를 설치시켜 세팅해도 되지만, nginx가 설치 되어있지 않는 경우엔 굳이 임시 용도로 설치 및 세팅해야하는 번거로움이 있다. nginx 를 docker 이미지로 가져와 conf 파일을 이용하면 간편하게 구성이 가능하다. 직접 docker로 실행할 수도 있지만, docker-compose로 실행하는 것이 더 간편하니까... 아래와 같은 예시를 공유해 본다. 루트 폴더명이 example/ 일 때를 가정 중요한 것은 proxy 부분.. (nginx의 80번을 통해 worker 서비스의 22222번으로 우회시켜 주고 싶은 상황) example/d..

docker 2020.10.21

04. 반복 작업 속에서 docker build 시간이 오래 걸릴 때

서버 애플리케이션을 dockerfile로 정의하면서 개발할 때 개발 과정에서 코드 수정 -> build -> run 과정을 계속 반복하게 된다. 이 때 필요 라이브러리들이 설치되는데 시간이 오래걸린다면 생산성이 크게 저하될 수 밖에 없다. 이 때, 준비 시간이 오래 걸리는 것들을 모아 base 이미지로 정의하고, 자주 바뀌는 부분에선 base 이미지를 상속 받아 Dockerfile를 정의해서 씀으로써 빌드 시간을 크게 줄일 수 있다. base 이미지 예시 FROM nvidia/cuda:10.2-base-ubuntu16.04 MAINTAINER Jein Song ENV PATH /opt/conda/bin:$PATH ENV LC_ALL C.UTF-8 ENV LANG C.UTF-8 # etc. RUN apt-..

docker 2020.10.21

921. Minimum Add to Make Parentheses Valid

leetcode.com/problems/minimum-add-to-make-parentheses-valid/ Minimum Add to Make Parentheses Valid - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com ())(() 와 같이 parentheses가 주어졌을 때, valid하게 만들기 위해서 몇 개를 추가해야 하는가? 구하는 문제, medium 으로 되어 있지만 easy 수준으로 정말 간단하다. 32ms class Solution: def ..

algorithm 2020.10.20

496. Next Greater Element I

leetcode.com/problems/next-greater-element-i/ Next Greater Element I - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 이 문제도 전형적인 스택문제 문제 설명이 명확하지 않아서 헷갈리는 부분이 있을 수 있는데 결국 num2 기준으로 각 숫자 다음에 오는 큰 숫자를 찾아놓고 num1에 각각 매핑되는 큰 숫자를 담아 리턴하는 문제다. class Solution: def nextGreaterElement(self,..

algorithm 2020.10.20

RN GraphQL 결과는 제대로 오는데, 랜더링이 안됨

랜딩 스크린이 여러가지 섹션으로 구분이 되고, 각 섹션 마다 GraphQL Query가 하나씩 매핑이 되어있는 상황에서, gql`` 문법을 이용해 해당 쿼리들을 모두 모아 놓고 컴포넌트 함수 도입 부분에 useQuery를 이용해서 data를 채워 넣은 다음 data가 null이 아닌 경우에만 랜더링 하도록 View를 작성하였는데, 이상하게도 가장 데이터가 많은 섹션만 랜더링이 되고, 나머지 섹션은 랜더링이 안되는 문제가 있었다. console.log로 데이터를 확인해 봤을 땐, 서버에서 정상적으로 가져오고 있는데... 왜 랜더링이 안될까? 이번에도 에러 상황이 아니어서 문제 상황을 유추해야했다. data가 새로 채워진 것을 리액트가 알아채지 못하는 상황인건 분명했다. 이런 저런 시도를 해보다가, useE..

trouble shooting 2020.10.19