전체 글 153

[백준 | 파이썬3] 1260. DFS와 BFS

https://www.acmicpc.net/problem/1260 1260번: DFS와 BFS 첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사 www.acmicpc.net > DFS와 BFS 이전 DFS와 BFS포스팅에서는 양방향 그래프가 아니었기 때문에 노드 연결관계를 입력값으로 넣을 때 간선이 시작하는 노드의 인덱스에 간선이 도착하는 노드의 정보를 담아 그래프를 탐색했었다. 해당 알고리즘 문제에선 양방향 그래프를 구현하는 것이 주요 포인트였다. 양방향 그래프는 그래프 노드들의 인덱스 내에서 서로 연결되어 있는 노드의 인덱스에..

[백준 | 파이썬3] 11279. 최대 힙

https://www.acmicpc.net/problem/11279 11279번: 최대 힙 첫째 줄에 연산의 개수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 자연수라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 www.acmicpc.net > 힙 활용 힙을 활용한 다익스트라 알고리즘 구현에서 최대 힙과 최소 힙을 구현해보았었다. 해당 문제는 최대힙을 활용해 풀 수 있었다. 힙은 요소를 꺼낼때 가장 작은 값부터 뽑아온다. 이를 활용하여 가장 큰값부터 뽑아오게 하기 위해 요소에 -를 붙여서 가장 큰값을 가장 작은 값으로 변환하여 힙에 넣고 뺄 때는 -부호를 다시 붙여서 양수로 뽑히게끔 만들었다.

자연어 처리를 위한 피드포워드 신경망(2)/ 합성곱 신경망, 파이토치 구현

파이토치로 배우는 자연어처리 책을 참고하여 작성하였습니다. 참고 강의 ▶ 합성곱 신경망이란 합성곱 신경망은 공간상의 부분 구조를 감지하는 데 적합하기 때문에 이미지 처리에서 많이 사용되는 신경망이다. CNN은 소수의 가중치를 사용해 입력 데이터 텐서를 스캔하여 구조를 인식한다. 파이토치에서는 1,2,3 차원의 합성곱이 가능한데 각 합성곱이 적합한 분야는 다음과 같다. - Conv 1d: 1차원 합성곱 연산으로 각 타임 스텝에 특성벡터가 존재하는 시계열에 잘 맞고 자연어처리에서 합성곱 연산으로 대체로 1차원 합성곱으로 이뤄진다. - Conv2d: 2차원 합성곱으로 데이터의 두방향을 따라 시공간 패턴을 감지하므로 이미지처리 분야에서 많이 사용된다. - Conv3d: 3차원 합성곱으로 데이터의 세 방향을 따라..

자연어 처리를 위한 피드 포워드 신경망(1)/ 다층 퍼셉트론, 파이토치 구현

델립라오, 브라이언 맥머핸의 파이토치로 배우는 자연어처리 책을 참고하여 작성하였습니다. 참고 강의1, 참고 강의2 ▶ 다층 퍼셉트론이란? 이전 포스팅에 올렸던 퍼셉트론을 여러 층으로 쌓아올린 구조를 말한다. XOR 논리게이트와 같이 하나의 직선으로 데이터 포인트를 나눌 수 없는 경우 여러 개의 퍼셉트론을 사용해 논리게이트를 구현할 수 있었듯이 복잡한 패턴의 데이터를 학습하기 위해선 여러 개의 퍼셉트론을 쌓아 학습하는 과정이 필요하다. ▶ 다층 퍼셉트론의 구조 단층 퍼셉트론이 입력층 하나와 출력층 하나로 구성됐다면 다층퍼셉트론은 입력층과 출력층 사이에 은닉층이 추가된다. 은닉층은 경우에 따라 여러 개의 은닉층이 쌓일 수 도 있다. MLP의 학습과정은 다음과 같다. 1) 입력벡터가 들어오면 첫번째 Linea..

Utilizing BERT for Aspect-Based Sentiment Analysis via Constructing Auxiliary Sentence

논문명: Utilizing BERT for Aspect-Based Sentiment Analysis via Constructing Auxiliary Sentence 저자: Chi Sun, Luyao Huang, Xipeng Qiu 출간지: School of Computer Science, Fudan University 발간일: 2019.03. ▶ Introduction BERT를 활용하여 속성기반 감성분석을 수행한다. 기존의 Aspect- based sentiment analysis(ABSA)는 문장 수준 혹은 문서 수준의 태스크이기 때문에 두 개 이상의 multiple target에 대한 예측은 수행할 수 없다. 따라서 본 논문에선 타겟이 여러 개인 데이터에 대한 속성기반 분석인 Targeted Asp..

신경망의 기본 구성 요소(7)/ 과대적합과 L1, L2 규제

참고 사이트 참고 영상 ▶ 과대적합 심층 신경망은 때로 수백만 개의 파라미터를 가지고 있을 정도로 자유도가 매우 높아 대규모의 데이터 셋을 학습시킬 수 있다. 그러나 이런 특징이 학습데이터에 모델을 과대적합시켜 막상 테스트 데이터에선 성능을 발휘하지 못하는 현상이 발생할 수 있다. 과대 적합을 줄이기 위해선 그래프를 일반화시켜야한다, 그래프를 일반화 시킨다는 것은 데이터 포인트에 맞춰져 있던 그래프들의 기울기를 작게 만든다는 의미이기도 하다. 기울기를 작게 만들기 위해선 가중치를 줄이는 과정이 필요하다. 가중치가 너무 작아지면 과소적합이 발생할 수 있기 때문에 과대적합과 과소적합을 적절히 완충시킬 수 있는 값을 구하는 것이 중요하다. 이 과대적합 문제를 막기 위해 l1, l2규제, 드롭아웃 등의 규제 방..

신경망의 기본 구성 요소(6)/ 손실함수

파이토치로 배우는 자연어처리 책을 참고하여 작성하였습니다. ▶ 손실함수 손실함수는 실제 값과 예측값을 입력으로 받아 실숫값 점수를 만드는 함수로 수행하고자 하는 태스크에 따라 손실함수가 달라진다. 손실함수로 나온 실숫값이 높을수록 예측값과 실제값 사이의 차이가 크다는 의미이기 때문에 모델의 성능이 나쁘다고 할 수 있다. 따라서 모델 학습은 이 실수값을 낮추기 위해 학습되어야할 것이다. 주로 회귀모형에선 평균 제곱 오차 손실 Mean Squared Error, 분류 모형에선 크로스엔트로피 Cross Entropy 손실함수를 많이 사용한다. 해당 포스팅에선 평균 제곱 오차손실, 다중 분류 문제에서 많이 사용되는 범주형 크로스 엔트로피 손실과 이진 분류 문제에서 많이 사용되는 이진 크로스 엔트로피 손실에 대해..

신경망의 구성요소(5)/ 활성화 함수- 소프트맥스

파이토치로 배우는 자연어처리 책을 참고하여 작성하였습니다. 참고한 유튜브 ▶ 소프트 맥스란? 값을 예측하기 위해 신경망의 출력물들을 변환하기 위한 활성화 함수로 시그모이드 함수는 각 클래스에 대한 확률값을 구할 수 있다. 그러나 시그모이드는 각 클래스에 대한 확률값이므로 모든 확률값을 더하면 1보다 큰 값이 나온다. 반면 소프트맥스는 입력으로 들어간 모든 클래스에 대한 확률값을 도출하므로 도출된 모든 확률값을 더하면 1이 된다. 소프트 맥스의 공식은 다음과 같다. 각 출력값에 대해 모든 출력 값의 합으로 나눠 K개 클래스에 대한 이산 확률 분포를 만든다. 즉 0-1사이의 값을 가지고 출력의 합이 1이되는 분포를 가진다. 이는 분류 task 에서 유용하게 사용될 수 있으며 주로 범주형 크로스 엔트로피와 함..

신경망의 구성요소 (4)/ 활성화 함수- ReLU

▶ 렐루(Recified linear unit) 렐루는 최근에 등장한 신경망의 활성화 함수로 최근 딥러닝 혁신의 상당수를 가능케 해준 활성화함수이다. 시그모이드부터 탄젠트 함수까지 해결되지 않았던 기울기 소실문제를 해당 함수로 해결할 수 있었다. 공식을 먼저 알아보자. 이전 포스팅에서 보았던 함수와는 달리 엄청나게 간단한 공식이다. 해석하면 렐루 함수는 x가 음수면 0을, x가 양수이면 x값을 출력하는 함수이다. 따라서 ReLU함수는 y=x라는 직선 부분과 0 이하의 부분을 0으로 출력하는 부분으로 이뤄져있다. ▷ 구현 이렇게 간단한 공식인만큼 계산복잡도가 낮아져 깊은 신경망에서 학습속도를 개선시키는 효과가 있다. 시그모이드, 탄젠트함수와 마찬가지로 비선형 함수이고 음수에선 0, 양수에선 y=x값으로 전..

신경망의 기본 구성요소(3)/ 활성화 함수- 하이퍼볼릭 탄젠트

파이토치로 배우는 자연어처리 책과 참고하여 작성하였습니다. 참고블로그 ▶ 하이퍼볼릭 탄젠트 하이퍼볼릭 탄젠트 활성화 함수는 시그모이드 함수를 선형변환한 것으로 시그모이드의 단점(그래디언트 소실)을 보완해주는 활성화 함수이다. 다음은 탄젠트의 공식이다. 탄젠트 활성화 함수는 시그모이드 함수를 선형변환한 것으로 다음과 같이 증명할 수 있다. ▷ 구현 하이퍼볼릭 탄젠트 활성화 함수를 파이토치로 구현해보자. 위 그래프에서 볼 수 있다싶이 시그모이드 함수의 출력값이 0-1이었던 반면 탄젠트 함수의 출력값은 -1에서 1값을 갖는다. 즉 기울기가 양수와 음수 모두 나올 수 있기 때문에 시그모이드 함수보다 학습 효율성이 뛰어나다. -1에서 1에 y가 분포하고 있어 시그모이드 함수보다 그 범위가 넓어 출력값의 변화폭이 ..