본문 바로가기
반응형

분류 전체보기58

[NLP] RNN (Recurrent Neural Network) 본 글은 카이스트 최윤재 교수님의 Programming for AI (AI504, Fall 2020), Class 9: Recurrent Neural Networks와 WikiDocs의 딥 러닝을 이용한 자연어 처리 입문를 바탕으로 정리한 글입니다. 순환 신경망 (Recurrent Neural Network, RNN) 입력과 출력을 시퀀스 단위로 처리하는 모델을 시퀀스 모델이라 하는데, RNN은 딥러닝에 있어 가장 기본적인 시퀀스 모델이고 자연어 처리(NLP)와 TimeSeries data에 활용됩니다. 용어는 비슷하지만 순환 신경망과 재귀 신경망(Recursive Neural Network)은 전혀 다른 개념입니다. 피드 포워드 신경망(Feed Forward Neural Network)은 은닉층에서 활.. 2022. 3. 28.
[DL] 배치 정규화(Batch Normalization), 가중치 감소(weight decay), 드롭아웃(Dropout) 배치 정규화 (Batch Normalization) 각 층이 활성화를 적당히 퍼뜨리도록 해봅시다. 2015년에 제안된 방법이지만 주목받고 있습니다. 주목받는 이유는 학습을 빨리 진행할 수 있음 초기값에 크게 의존하지 않음 오버 피팅을 억제 배치 정규화의 기본 아이디어는 다음과 같습니다. 각 층에서의 활성화값이 적당히 분포되도록 조정 그래서 데이터 분포를 정규화하는 ‘배치 정규화(Batch Norm) 계층’을 신경망에 삽입 학습 시 미니배치를 단위로 정규화 (이름 보면 알 수 있음) 구체적으로는 데이터 분포가 평균이 0, 분산이 1이 되도록 정규화 평균 0, 분산 1인 데이터로 변환하는 처리를 활성화 함수의 앞 혹은 뒤에 삽입함으로써 데이터 분포가 덜 치우치게 할 수 있음 또, 배치 정규화 계층마다 이 정.. 2022. 3. 17.
[DL] 신경망 학습 - 매개변수 갱신, 가중치의 초기값 매개변수 갱신 최적화(Optimization) 신경망 학습의 목적은 손실 함수의 값을 가능한 한 낮추는 매개변수를 찾는 것 곧 매개변수의 최적 값을 찾는 문제를 푸는 것 신경망 최적화는 굉장히 어려운 문제 매개변수 공간은 매우 넓고 복잡해서 최적의 설루션을 쉽게는 못 찾음 확률적 경사 하강법(SGD) 최적화 방법 중 가장 널리 사용되는 SGD(Stochastic Gradient Descent)입니다. 매개변수의 기울기(미분)를 이용해 최적화를 시도합니다. SGD는 다음과 같은 단점이 존재합니다. SGD는 단순하고 구현도 쉽지만, 문제에 따라서는 비효율적일 때가 있습니다. 비등방성(anisotropy) 함수(방향에 따라 성질, 즉 기울기가 달라지는 함수)에서는 탐색 경로가 비효율적입니다. 이럴 때는 SGD.. 2022. 3. 17.
[DL] 오차역전파법(Backpropagation) 오차역전파법(Backpropagation) 기울기 계산을 효율적이고, 고속으로 수행하는 기법입니다. 오차역전파법을 쓰면 수치 미분을 사용할 때와 거의 같은 결과를 훨씬 빠르게 얻을 수 있다는 장점이 존재합니다. 신경망 학습은 시간이 오래 걸리니, 시간을 절약하려면 오차역전파법 사용하는 것이 좋습니다! 말 그대로 오차역전파법은 순전파의 반대로 간다고 생각하시면 됩니다. 본 글에서는 수식이 아닌 계산 그래프를 통해 오차역전파법을 설명하겠습니다. 계산 그래프(computational graph) 계산 과정을 그래프로 나타낸 것입니다. 복수의 노드(node)와 에지(edge)로 표현합니다. 노드 : 원으로 표현하고 원 안에 연산 내용 적음 에지 : 노드 사이의 직선 계산 그래프의 특징은 국소적 계산을 전파함으로.. 2022. 3. 8.
[DL] 신경망 학습 신경망 학습 학습이란 훈련 데이터로부터 가중치 매개변수의 최적 값을 자동으로 획득하는 것을 의미 데이터 주도 학습 기계학습에서는 사람의 개입을 최소화하고 수집한 데이터로부터 패턴을 찾으려 시도합니다. 게다가 신경망과 딥러닝은 기존 기계학습에서 사용하던 방법보다 사람의 개입을 더욱 배제할 수 있게 해주는 중요한 특성을 지닙니다. 예를 들어, 자유분방한 손글씨 이미지를 보고 5인지 아닌지를 알아보는 프로그램을 구현해봅시다. 5를 제대로 분류하는 프로그램을 직접 고안해 설계하기란 의외로 어려운 문제입니다. 사람이라면 어렵지 않게 인식하지만, 그 안에 숨은 규칙성을 명확한 로직으로 풀기가 만만치 않습니다. 5를 인식하는 알고리즘을 밑바닥부터 설계하는 대신, 주어진 데이터를 잘 활용해서 해결하고 싶어집니다. 그런.. 2022. 3. 4.
[DL] 손실함수 (Loss Function) : 오차제곱합(SSE), 교차 엔트로피 오차(Cross-Entropy) 손실함수(Loss Function) 신경망 학습에서는 현재의 상태를 ‘하나의 지표’로 표현합니다. 그리고 그 지표를 가장 좋게 만들어주는 가중치 매개변수의 값을 탐색하는 것이 목표입니다. (최적의 매개변수 값을 탐색) 신경망 학습에서 사용하는 지표를 손실 함수(loss function)라고 합니다. 이 손실함수는 임의의 함수를 사용할 수도 있지만 일반적으로는 오차제곱합과 교차 엔트로피 오차를 사용합니다. 손실 함수는 신경망 성능의 ‘나쁨’을 나타내는 지표 현재의 신경망이 훈련 데이터를 얼마나 잘 처리하지 ‘못’하느냐를 나타냄 손실 함수에 마이너스만 곱하면 ‘얼마나 좋으냐’라는 지표로 변신 나쁨을 최소로 하는 것과 좋음을 최대로 하는 것은 결국 같은 것이니까 본질적으로 같음 훈련 데이터에 대한 손실 함수의.. 2022. 3. 4.
[DL] 신경망(Neural network) 퍼셉트론에서 신경망으로 편향을 명시한 퍼셉트론의 형태는 다음과 같습니다. 관련 식을 간결한 형태로 작성하면 다음과 같습니다. 입력 신호의 총합이 h(x)라는 함수를 거쳐 변환되어, 그 변환된 값이 y의 출력이 됩니다. h(x) : 입력이 0을 넘으면 1을 돌려주고, 그렇지 않으면 0을 돌려주는 함수입니다. 활성화 함수 (Activation function) h() : 입력 신호의 총합을 출력 신호로 변환하는 함수입니다. 2단계로 처리합니다. 가중치가 곱해진 입력 신호의 총합을 계산 그 합을 활성화 함수에 입력해 결과(y)를 냄 자세하게 살펴보면 가중치 신호를 조합한 결과가 a라는 노드가 되고, 활성화 함수 h()를 통과하여 y라는 노드로 변환되는 과정입니다. 신경망의 동작을 더 명확히 드러내고자 할 때는.. 2022. 2. 25.
[DL] 신경망 활성화 함수 - 시그모이드(sigmoid), ReLU, 계단함수 활성화 함수 (Activation Function) 활성화 함수란 입력 신호의 총합을 출력 신호로 변환하는 함수입니다. 본 글에서는 활성화 함수의 종류 중 시그모이드(sigmoid) 함수와 ReLU 함수, 계단(step) 함수에 대해서 알아보겠습니다. 계단 함수(Step Function) 계단 함수는 임계값을 경계로 출력이 바뀌는 활성화 함수입니다. 퍼셉트론에서는 활성화 함수로 계단 함수를 이용합니다. import numpy as np import matplotlib.pylab as plt def step_function(x): return np.array(x > 0, dtype=np.int) X = np.arange(-5.0, 5.0, 0.1) Y = step_function(X) plt.plot(X,.. 2022. 2. 25.
[DL] 퍼셉트론(Perceptron) 퍼셉트론 (Perceptron) 프랑크 로젠블라트가 1957년 고안한 알고리즘 퍼셉트론이 신경망(딥러닝)의 기원이 되는 알고리즘이기 때문에 공부가 필요 여기서 기술하는 퍼셉트론은 ‘인공 뉴런’ 혹은 ‘단순 퍼셉트론’ 의미. 퍼셉트론은 다수의 신호를 입력으로 받아 하나의 신호를 출력. 퍼셉트론 신호는 ‘흐른다/안 흐른다(1 or 0)’의 두 가지 값을 가질 수 있음 입력이 2개인 퍼셉트론 x1, x2 : 입력신호 y : 출력 신호 w1, w2 : 가중치 그림의 원 : 뉴런 혹은 노드라고 부름 뉴런에서 보내온 신호의 총합이 정해진 한계를 넘어설 때만 1을 출력하고, 그 한계를 임계값이라 하며, Θ (세타)로 표현합니다. 퍼셉트론은 복수의 입력 신호 각각에 고유한 가중치를 부여하며, 가중치가 클수록 해당 신호.. 2022. 2. 24.
[ML] 회귀 (Regression)와 경사하강법 (Gradient descent) 회귀 (Regression) 회귀는 보통 연속적인 숫자, 예측값이 float 형태인 문제들을 해결하는 데 사용됩니다. 즉, 회귀는 출력 값에 연속성이 있습니다. train data를 가장 잘 나타낼 수 있는 선형(Linear) 모델을 생성 후 예측을 진행합니다. 아래에서 자세히 설명하겠습니다. 예시 : 공부에 투자한 시간(x)을 바탕으로 시험 점수(y)(0~100) 예측 모델(가설) H(x) = Wx + b H(x) : 우리가 가정한 가설(Hypothesis) W : 가중치 (Weight) b : 편향값 (bias) x(특성(Feature), 설명변수)가 하나인 경우를 단순 선형 회귀(Simple Linear Regression)이라 하고, x가 2개이상인 경우를 다중 선형 회귀(Multiple Line.. 2022. 2. 22.
[DACON] 항공사 고객 만족도 예측 경진대회 DACON - 항공사 고객 만족도 예측 경진대회 2022.02.07 ~ 2022.02.18 동안 진행되었던 DACON 항공사 고객 만족도 예측 경진대회 참가 후기입니다. 본 글에서는 데이터 분석 진행 과정을 요약하여 적어보려 합니다. 아래의 링크는 제가 한 코드를 전부를 공유해놓은 주소입니다. 저는 종료가 하루 남은 현재 시점에 517명 중 19등의 점수를 받았습니다. (사진은 24등인데, 19등과 점수가 동일합니다 ㅎㅎ) 해당 대회의 평가 산식은 'Accuracy'였고, 저는 public : 0.938 점수를 받았습니다. 저도 다른 분들의 코드를 참고하여 점수를 좀 더 올리면서 흥미를 유발하려 했던 것 같습니다. 이 글을 보신 분들이 조금이라도 얻어가시는 게 있으시면 좋겠습니다. ▶DACON - Cod.. 2022. 2. 17.
[데이터 직무] 빅데이터와 관련된 다양한 직무 구분 (데이터 엔지니어, 데이터 사이언티스트 ...) 빅데이터 관련 직무 본 글은 데이터 마이닝 전문가 조성준 교수님의 '빅데이터 커리어 가이드북'을 기반으로 작성했습니다. 저는 데이터와 관련된 직업과 직무 명칭이 통일이 되어있지 않아 관련 정보를 찾을 때 많은 어려움을 겪었습니다. 그런 점에 있어, 데이터 관련 직무를 구분할 수 있으며, 그 직무의 필요한 지식에 대해 명확하게 알 수 있다면 준비를 함에 있어 방향성이 더욱 확실해지지 않을까 싶었습니다. 모든 곳에서 아직 이와 같이 직무 구분을 하고, 통용하여 사용하지는 않지만 경계가 애매한 데이터 관련 직무에 관해 구분을 하여 각 직무를 비교하여 준비한다면 도움이 많이 되지 않을까 싶습니다. 제가 참고한 도서의 저자이신 조성준 교수님은 이상적인 빅데이터팀의 업무 수행 방식을 고려하여 빅데이터 직무를 다음과.. 2022. 2. 8.
반응형