일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- OS
- 동적 프로그래밍
- 프로그래밍
- dp
- 순열
- BFS
- 코딩테스트
- 파이썬
- PYTHON
- 킥스타트
- 리눅스
- AI
- 코딩 테스트
- 백준
- 동적프로그래밍
- 운영체제
- CSS
- 브루트포스
- kick start
- DFS
- linux
- 구글 킥스타트
- nlp
- 네트워크
- 그래프
- google coding competition
- 프로그래머스
- 알고리즘
- 딥러닝
- 코딩
- Today
- Total
목록AI (48)
오뚝이개발자

BERT 원논문 링크 What is BERT? Bidirectional Encoder Representations from Transformers Can be fine-tuned with jus one additional output layer for a wide range of task Don't need task-specific architecture Motive BERT는 left to right LM이 sentence level task에서 sub-optimal이라는 점을 지적 기존 LTR LM은 주로 양방향으로부터의 문맥정보를 incorporate하는 것이 중요한 경우 취약(e.g. question answering) Transformer에서 착안한 BERT Encoder Attention을 사..
강화학습은 근래 들어 많은 발전이 이루어진 학습 방법이다. 간단히 설명하자면, agent와 environment를 두고 agent가 어떠한 action을 할 때마다 환경으로부터의 피드백(긍정/부정)이 온다. 이를 기반으로 학습을 하는 것이 바로 강화학습(RL)이다. 그런데 이러한 강화학습이 게임 분야에서는 매우 많이 사용이 되지만 왜 현실적인 문제들(예컨대, 자율주행)에서는 실적용이 어려울까? 다른 말로는, 왜 practical하게 적용하지 못할까? RL은 근본적으로 trial-and-error 방식으로 작동한다. 즉, 어떠한 시도(action)를 해보고 이에 대한 에러를 feedback을 통해 수정하는 방식으로 학습이 진행된다. 하지만, 현실세계에선 이러한 실패(error)가 일어나선 안되는 경우가 많..
ML로 해결하려는 task에서 기본적인 것은 분류, 회귀이다. 대부분의 task들은 사실 이 둘의 컴포넌트로 구분이 가능하다.(object detection과 같이 분류와 회귀가 섞인 task들도 있다.) 분류의 경우 이진분류(binary classification), 다중분류(multi-class classification)으로 나눌 수 있다. 그럼 각각에서 output layer의 양상은 어떠한지, 사용하는 activation function은 무엇인지 알아보자. 종류 output #(output layer의 unit 갯수) activation function 이진분류(binary classification) 1개 sigmoid 다중분류(multi-class classification) n개(clas..
우리가 일반적으로 모델을 설계하고 평가할 때 overfitting이 발생하면 좋지 않은 것으로 인식하곤 한다. 하지만 이러한 overfitting이 마냥 나쁘기만 할까? overfitting이 가져다 줄 수 있는 이점은 없는걸까? 사실 답은 NO이다. 우리가 overfitting으로부터 얻을 수 있는 insight도 있다. 어떠한 이점들이 있을까? 우리가 어떠한 문제를 해결해보고자 모델을 설계했다고 가정해보자. 그런데 안타깝게도 학습 결과 해당 모델이 과적합을 일으킨다. 하지만 좌절할 필요는 없다. 일단 오버피팅이 일어났다는 것은 말그대로 '학습' 자체는 잘 이루어졌다는 점을 생각해볼 수 있다. 여기에 착안한다면 '처음으로' 설계해 '처음으로' 학습을 한 모델이 오버피팅을 발생시켰다면 우린 아래와 같은 ..

케라스의 구조가 내부적으로 어떻게 되어있는지를 파악하는 것은 본인이 어느 위치에서 작업을 하고 있는가를 파악하는데 중요하다. 오늘은 케라스의 시스템이 내부적으로 어떻게 구성되어 있는지에 대해 알아보자! 아래 그림은 케라스의 내부 구조를 도식화 한 것이다. 중앙의 큰 사각형은 하나의 가상환경(virtual environment)이다. 이러한 가상환경은 user가 만들기에 따라 여러개 있을 수도 있다.(virtual env1, virtual env2...) 실제로 우리가 직접 다루는 부분은 바로 python, keras 부분이다. 사실 케라스를 사용하면 그 아랫단인 tensorflow까지도 잘 만지지 않는다.(디테일한 텐서 level에서의 설정이 필요한 경우가 아니고서는 말이다.) 그 아랫단인 cuDNN, ..

딥러닝 층을 구성할 때 행렬 계산이 어떻게 이루어지는지를 이해하는 것이 중요하다. 그래야 행과 열의 수를 잘 맞추어 계산을 할 수 있기 때문이다. 이 글에선 Keras를 사용한 코드에서 실제 행렬 연산이 어떻게 이루어지는지 그림으로 도식화하여 설명하고자 한다. 아래와 같은 간단한 딥러닝 모델을 구성하는 코드가 있다고 해보자. network.add(layers.Dense(512, activation='relu', input_shape=(28*28,))) network.add(layers.Dense(10, activation='softmax')) network.fit(train_images, train_labels, epochs=5, batch_size=128) keras의 Dense() 메서드 안의 수는 ..

케라스 창시자에게 배우는 책의 실습 코드를 작성하고 깃허브에 올려두었다. 바로 아래 책이다. 책의 내용이 아주 좋은 것 같다. 설명이 충분해서 예제 코드들을 이해하고 따라서 실습해보기에 무리가 없다. 나는 해당 책의 코드 실습과 더불어 모델의 정확도를 높이기 위한 다양한 시도들을 개인적으로 해보았다. 간단하게는 층이나 은닉 유닛의 갯수를 조절하는 것에서부터 복잡하게는 optimizer나 loss function을 바꾸고, early stopping과 같은 regularization 기법을 사용하는 것까지 말이다. 깃허브 레포지토리 링크를 여기에 올려두니 책을 공부하며 함께 참고하면 좋을 듯하다. 아래 레포지토리 링크로 깃허브에 접속하면 서로 다른 데이터셋을 사용한 실습 코드들을 볼 수 있다. https:..

오늘 리뷰할 논문은 구글 리서치팀에서 발표한 "Attention is all you need"(링크)이다. 해당 논문은 현대 NLP의 중요한 backbone으로 사용되는 Transformer에 관한 논문이다. 사실 원논문의 제목보다 Transformer라는 이름으로 더 많이 알려져 있다. NLP model history 그 동안 ML분야에선 vision과 관련된 분야들이 눈에 띄는 발전을 이루어 온 것에 비해 NLP 분야의 발전은 더딘 편이었다. 그러나 최근 들어 좋은 성능을 보이는 다양한 모델들이 나오면서 NLP 분야에서도 급진적인 발전이 이루어지고 있다. 이러한 NLP의 발전을 이끈 모델들의 변천사는 대략 아래와 같다. 오늘 리뷰할 Transformer 논문은 2017년에 발표된 것이다. What d..