본문 바로가기

분류 전체보기88

ReLU 함수 - 신경망에서 자주 사용하는 활성화 함수 ReLU (Rectified Linear Unit) 함수 신경망에서 시그모이드 함수를 오래 전부터 이용해왔으나, 사실 ReLU 를 더 많이 이용 ReLU 는 입력이 0을 넘으면 그 입력을 그대로 출력하고, 0 이하면 0을 출력하는 함수 h(x) = x (x>0) , 0 (x 2022. 5. 31.
비선형 함수를 사용하는 이유 (신경망, 선형함수 비교) 비선형 함수 계단 함수와 시그모이드 함수의 또 다른 공통점 : 모두 비선형 함수 시그모이드 함수 : 곡선, 계단 함수 : 구부러진 직선 = 모두 비선형 함수로 분류됨 선형함수와 비선형함수 함수란 어떤 값을 입력하면 그에 따른 값을 돌려주는 '변환기' 선형 함수 : 변환기에 무언가 입력했을 때 출력이 입력의 상수배만큼 변하는 함수 f(x) = ax + b ; a와 b는 상수 - 즉, 선형 함수는 곧은 1개의 직선 비선형 함수 : '선형이 아닌' 함수 즉, 직선 1개로는 그릴 수 없는 함수 활성화 함수로 반드시 '비선형 함수' 를 사용해야 함 신경망에서는 활성화 함수로 "비선형 함수" 를 사용해야 함 선형 함수를 사용하면 안됨 - 선형함수를 이용하면 신경망의 층을 깊게 하는 의미가 없어짐 선형 함수는 층을 .. 2022. 5. 31.
시그모이드 함수 (sigmoid function) 란? (계단 함수와의 비교) 시그모이드 함수 시그모이드 함수 (sigmoid function) = 신경망에서 자주 이용하는 활성화 함수 e 는 자연 상수 2.7182 ... 얼핏 복잡해 보이지만 단순한 '함수' 일 뿐 - 입력을 주면 출력을 돌려주는 변환기 ex) h(1.0) = 0.731, h(2.0) = 0.880 -- 입력을 주면 특정 출력 값 출력 신경망에서는 활성화 함수로 시그모이드 함수를 이용하여 신호를 변환하고, 그 변환된 신호를 다음 뉴런에 전달함 퍼셉트론과 신경망의 주된 차이는 이 활성화 함수 뿐 - 뉴런이 여러 층으로 이어지는 구조와 신호를 전달하는 방법은 퍼셉트론과 같음 def sigmoid(x) : return 1 / (1 + np.exp(-x)) 인수 x 가 넘파이 배열이어도 올바른 결과가 잘 나옴 함수 si.. 2022. 5. 31.
계단 함수 (step function) 란? 계단 함수 계단 함수(step function) = 임계값을 경계로 출력이 바뀌는 활성화 함수 입력이 0을 넘으면 1을 출력하고, 그 외에는 0을 출력하는 함수 퍼셉트론에서는 활성화 함수로 "계단 함수"를 이용한다. 활성화 함수로 쓸 수 있는 여러 후보 중에서 퍼셉트론은 계단 함수를 채용 활성화 함수를 계단 함수에서 다른 함수로 변경하는 것이 신경망의 key point! def step_function(x) : if x > 0: return 1 else : return 0 위는 인수 x 가 실수(부동소수점)만 받아들임 즉, step_function(3.0) 은 가능하지만, 넘파이 배열을 인수로 넣을 수 없음 - step_function(np.array([1.0, 2.0])) 은 안됨 def step_fu.. 2022. 5. 29.
신경망과 활성화 함수 (activation function) 퍼셉트론의 장점과 단점 장점 : 퍼셉트론으로 복잡한 함수 표현 가능 ex) 컴퓨터가 수행하는 복잡한 처리도 퍼셉트론으로 이론상 표현할 수 있음 단점 : 가중치를 설정하는 작업 (원하는 결과를 출력하도록 가중치 값을 적절히 정하는 작업) 은 여전히 사람이 수동으로 해주어야 함 ex) AND, OR 게이트를 작성할 때에도 진리표를 보면서 우리 인간이 적절한 가중치 값을 정했었음 이 문제를 해결하기 위해 "신경망" 출현 - 가중치 매개변수의 적절한 값을 데이터로부터 자동으로 학습하는 능력을 갖춘 신경망 먼저, 신경망이 입력 데이터가 무엇인지 식별하는 처리 과정을 알아보자. 퍼셉트론과 신경망 신경망은 입력층, 은닉층, 출력층으로 구성 은닉층의 뉴런은 입력층이나 출력층과 달리 사람 눈에는 보이지 않아서 '은닉' .. 2022. 5. 29.
XOR 게이트 (배타적 논리합, 논리회로, 파이썬으로 구현해보기) XOR 게이트 def XOR(x1, x2) : s1 = NAND(x1, x2) s2 = OR(x1, x2) y = AND(s1, s2) return y XOR 게이트는 배타적 논리합 이라는 논리 회로; x1, x2 중 한 쪽이 1일 때만 1을 출력 배타적; 자기 외에는 거부 - 따라서 하나만 자기일 때 1 출력 퍼셉트론(단층)으로는 비선형 영역을 나타내야 하는 XOR 게이트 표현 불가 따라서 층을 쌓은 '다층 퍼셉트론'을 통해 구현 = 단층 퍼셉트론으로는 비선형 영역을 분리할 수 없다. AND, NAND, OR 게이트를 조합하여 구현하기 XOR(0, 0)# 0을 출력 XOR(1, 0)# 1을 출력 XOR(0, 1)# 1을 출력 XOR(1, 1)# 0을 출력 단층 퍼셉트론으로는 표현하지 못한 것을 층을 하.. 2022. 5. 29.
AND, OR, NAND 게이트 구현 (논리 회로 구현하기) AND 논리 회로 def AND(x1, x2) : w1, w2, theta = 0.5, 0.5, 0.7 tmp = x1*w1 + x2*w2 if tmp theta : return 1 - x1과 x2를 인수로 받는 함수 AND - 매개변수 x1, x2, theta 는 함수 안에서 초기화하고, 가중치를 곱한 입력의 총합이 임계값을 넘으면 1을 반환, 그 외에는 0을 반환 AND(0, 0)# 0을 출력 AND(1, 0)# 0을 출력 AND(0, 1)# 0을 출력 AND(1, 1)# 1을 출력 ** 편향을 이용한 방식으로 구현해보기 def AND(x1, x2) : x = np.array([x1, x2]) w = np.array([0.5, 0.5]) b = -0.7 tmp = np.sum(w*x) + b if tmp 2022. 5. 29.
Fairseq - Wav2vec 2.0 Pretraining (1) 입력 데이터 준비하기 Wav2vec 2.0 - wav2vec 2.0 은 speech representation 의 self-suprvised learning 을 위한 프레임워크이고, 레이블이 없는 데이터에 대한 음성 표현을 학습한다. (wav2vec 2.0: A Framework for Self-Supervised Learning of Speech Representations (Baevski et al., 2020) - wav2vec 2.0 XLSR 모델은 다국어를 위해 사전 훈련된 모델이다. - 다국어 사전훈련을 위해 MLS : Multilingual LibriSpeech (8 languages, 50.7k hours), CommonVoice (36 languages, 3.6k hours), Babel (17 languag.. 2022. 5. 27.
Fairseq 란? Fairseq - 기계번역을 위해서 페이스북에서 개발한 모델 - 원래 기계번역 분야에서는 RNN 이 주로 사용되었고, 최근에는 CNN 을 시퀀스 처리에 사용함 - Fairseq 는 CNN 과 Attention 을 사용해 기계번역에서 state-of-the-art 갱신함 - CNN 을 통해 전체 문맥을 한꺼번에 봄 + 단어를 하나씩 처리하는 RNN 보다 더 효율적으로 GPU 를 사용 - 구글의 Neural Machine Translation 과 비교했을 때 더 성능이 높음 - NVidia K40 GPU 에서 9.3 배 빠름, GTX-1080ti 에서 21배 빠름 - 영어-프랑스어, 영어-독일어, 영어-루마니아어에 대한 pre-trained 모델 github 에 공개 Reference https://tens.. 2022. 5. 27.
NVIDIA의 APEX - 학습 시간 단축, 성능 개선 wav2vec2.0 실험을 위한 fairseq 를 설치하는 중 나중에 빠른 학습을 하려면 NVIDIA's apex 라이브러리를 설치하면 좋다는 글을 봤다. git clone https://github.com/NVIDIA/apex 위 깃헙에서 다운로드 받을 수 있고, apex 가 뭔지 알아보고자 한다. 먼저 모델 훈련을 하다보면 더 빨리 학습시키고 싶어서 다양하게 파라미터들을 조정하게 된다. 이 때 엔비디아의 툴킷인 APEX (A Pytorch Extension) 을 사용하면 pytorch 에서 쉽게 분산학습과 mixed precision 을 사용할 수 있다고 한다. APEX (A Pytorch EXtension) APEX 패키지에는 mixed precision training 과 distributed t.. 2022. 5. 26.