머신러닝 & 딥러닝 52

[딥 러닝] 인공 신경망(Artificial Neural Network)이란 무엇인가?

피드 포워드 신경망(Feed-Forward Neural Network,FFNN) 위 그림의 다층 퍼셉트론(MLP)과 같이 오직 입력층에서 출력층 방향으로 연산이 전개되는 신경망을 피드 포워드 신경망(Feed-Forward Neural Network, FFNN)이라고 합니다. 위의 그림은 FFNN에 속하지 않는 RNN이라는 신경망을 보여줍니다. 이 신경망은 은닉층의 출력값을 출력층으로도 값을 보내지만, 동시에 은닉층의 출력값이 다시 은닉층의 입력으로 사용됩니다. 전결합층(Fully-connected layer,FC,Dense layer) 다층 퍼셉트론은 은닉층과 출력층에 있는 모든 뉴런은 바로 이전 층의 모든 뉴런과 연결돼 있었습니다. 그와 같이 어떤 층의 모든 뉴런이 이전 층의 모든 뉴런과 연결돼 있는 ..

[딥 러닝] 퍼셉트론이란 무엇인가?

인공 신경망은 수많은 머신러닝 기법 중 하나입니다. 다만, 최근 인공 신경망을 복잡하게 쌓아올린 다른 머신러닝보다 뛰어난 성능을 보여 주고 있어서 따로 분리 해야된다라는 말이 많습니다. 딥 러닝을 이해하기 위해서는 우선 인공 신경망에 대한 이해가 필요한데, 여기서는 초기의 인공 신경망인 퍼셉트론(Perceptron)에 대해서 이해가 필요합니다. 퍼셉트론(Perceptron) 퍼셉트론(Perceptron)은 1957년에 제안한 초기 형태의 인공 신경망으로 다수의 입력으로부터 하나의 결과를 내보내는 알고리즘입니다. 퍼셉트론은 실제 뇌를 구성하는 신경 세포 뉴런의 동작과 유사하고 뉴런은 가지돌기에서 신호를 받아들이고, 이 신호가 일정치 이상의 크기를 가지면 축삭돌기를 통해서 신호를 전달합니다. 아래는 다수의 ..

[머신러닝] 소프트맥스 회귀(Softmax Regression)

소프트맥스 회귀(Softmax Regression) 이번에는 3개 이상의 선택지 중에서 1개를 고르는 다중 클래스 분류 문제를 위한 소프트맥스 회귀(Softmax Regression)에 대해서 포스팅해보겠습니다. 다중 클래스 분류(Multi-class Classification) 이진 분류가 두 개의 선택지 중 하나를 고르는 문제였다면, 세 개 이상의 선택지 중 하나를 고르는 문제를 다중 클래스 분류라고 합니다. 아래의 붓꽃 품종 예측 데이터는 꽃받침 길이, 꽃받침 넓이, 꽃잎 길이, 꽃잎 넓이로부터 setosa, versicolor, virginica라는 3개의 품종 중 어떤 품종인지를 예측하는 문제를 위한 데이터로 전형적인 다중 클래스 분류 문제를 위한 데이터입니다. SepalLengthCm(x1) ..

[머신러닝] 로지스틱 회귀(Logistic Regression)

로지스틱 회귀(Logistic Regression) 둘중 하나를 결정하는 문제를 이진 분류(Binary Classification)라고 합니다. 그리고 이런 문제를 풀기 위한 대표적인 알고리즘으로 로지스틱 회귀(Logistic Regression)가 있습니다. 이진 분류(Binary Classification) 아래는 학생들이 시험 성적에 따라서 합격, 불합격이 기재된 데이터가 있다고 가정해봅시다. 시험 성적이 x라면, 합불 결과는 y입니다. 이 데이터로부터 특정 점수를 얻었을 때의 합격, 불합격 여부를 판정하는 모델을 만들고자 합시다. score(x) result(y) 45 불합격 50 불합격 55 불합격 60 합격 65 합격 70 합격 위 데이터에서 합격을 1, 불합격을 0이라고 하였을 때 그래프를 ..

[머신러닝] 선형 회귀(Linear Regression)

이번 포스팅에서는 딥 러닝을 이해하기에 필요한 선형 회귀에 알아보도록 하겠습니다. 선형 회귀(Linear Regression) 변수 x의 값은 독립적으로 변할 수 있는 것에 반해, y값은 계속해서 x의 값에 의해서, 종속적으로 결정되므로 x를 독립 변수,y 를 종속 변수라고도 합니다. 선형 회귀는 한 개 이상의 독립 변수 x와 y의 선형 관계를 모델링합니다. 만약, 독립 변수 x가 1개라면 단순 선형 회귀라고 합니다. 1) 단순 선형 회귀 y = wx + b 위의 수식은 단순 선형 회귀의 모습을 보여줍니다. 여기서 독립 변수 x와 곱해지는 값 w를 머신 러닝에서는 가중치(weight), 별도로 더해지는 값b를 편향(bias)이라고 합니다. 그리고 이것은 그래프 상으로 말하면 하나의 직선밖에 표현하지 못합..

[머신러닝] 머신러닝 개념 훓어보기

학교에서 인공지능 수업과 '딥러닝을 통한 자연어 입문'에 나온 머신러닝 및 딥 러닝의 기초적인 내용을 정리한 포스팅입니다. 머신러닝이란? 위에는 일반적인 프로그래밍 방법이고 아래는 머신러닝의 방법입니다. 머신 러닝은 데이터가 주어지면, 기계가 스스로 데이터로부터 규칙성을 찾는 것에 집중합니다. 주어진 데이터로부터 규칙성을 찾는 과정을 우리는 훈련(training) 또는 학습(learning)이라고 합니다. 일단 규칙성을 발견하고나면, 그 후에 들어오는 새로운 데이터에 대해서 발견한 규칙성을 기준으로 정답을 찾아내는데 이는 기존의 프로그래밍 방식으로 접근하기 어려웠던 문제의 해결책이 되기도 합니다. 여기서 머신러닝과 딥러닝의 차이점으로는 딥러닝은 머신 러닝의 한 갈래이고 “인공 신경망”이라는 알고리즘을 계..

[NLP] 워드 임베딩(Word Embedding)

이번 포스팅에서는 워드 임베딩에 대하여 알아보도록 하겠습니다. 워드 임베딩(Word Embedding) 워드 임베딩(Word Embedding)은 단어를 벡터로 표현하는 방법으로, 단어를 밀집 표현으로 변환합니다. 희소 표현(Sparse Representation) 앞서 원-핫 인코딩을 통해서 나온 원-핫 벡터들은 표현하고자 하는 단어의 인덱스의 값만 1이고, 나머지 인덱스에는 전부 0으로 표현되는 벡터 표현 방법이었습니다. 이렇게 벡터 또는 행렬(matrix)의 값이 대부분이 0으로 표현되는 방법을 희소 표현(sparse representation)이라고 합니다. 원-핫 벡터는 희소 벡터(sparse vector)입니다. 이러한 희소 벡터의 문제점은 단어의 개수가 늘어나면 벡터의 차원이 한없이 커진다는..

[NLP] 한국어 경진 대회 Tip(Kospeech)

전 포스트에서는 대회에서 사용한 Kospeech에서 사용한 모델 Deep Speech2를 알아보았습니다. 이번에는 작년에 참가한 대회에서 현재는 학습을 다시하기에는 제약이 많지만 어떠한 변화를 주었는지에 대해 알아보려고 합니다. 대회 Tip 1. Epoch 변화주기 : Epoch 20회까지 숫자를 늘려주어서 학습을 시켰을 때 가장 train_loss, train_cer, val_loss, val_cer이 가장 낮았습니다. 그리고 20회이상 학습을 진행하니까 타임에러가 나왔고 유의미한 학습결과가 나오지 않았습니다. args = argparse.ArgumentParser() # DONOTCHANGE: They are reserved for nsml args.add_argument('--mode', type=..

[NLP] Deep Speech2 분석하기(Kospeech)

작년 8월~9월까지 한국어 AI경진대회 네이버 CLOVER 부분에 본선에 진출을 하여 주요 영역별 회의 음성인식 성능향상을 위하여 모델을 개선을 하였습니다. 아래 포스트는 Kospeech 분석 및 대회를 위해서 어떤 개선사항이 있었는지 적어볼려고 합니다. Kospeech란? https://github.com/sooftware/kospeech GitHub - sooftware/kospeech: Open-Source Toolkit for End-to-End Korean Automatic Speech Recognition leveraging PyTorch and Hydra Open-Source Toolkit for End-to-End Korean Automatic Speech Recognition levera..

[NLP] 한국어 자연어 처리 관점에서 RNN이란?

RNN(Recurrent Neural Network)이란? RNN : 피드 포워드 신경망 같이 전부 은닉층에서 활성화 함수를 지난 값은 오직 출력층 방향으로만 향한 신경망 들은 피드 포워드 신경망(Feed Forward Neural Network)이라고 합니다. 그와는 다르게 RNN(Recurrent Neural Network)은 은닉층의 노드에서 활성화 함수를 통해 나온 결과값을 출력층 방향으로도 보내면서, 다시 은닉층 노드의 다음 계산의 입력으로 보내는 특징을 갖고있습니다. 위의 그림에서는 x는 입력층의 입력 벡터, y는 출력층의 출력 벡터입니다. 실제로는 편향 b도 입력으로 존재할 수 있지만 앞으로의 그림에서는 생략합니다. RNN에서 은닉층에서 활성화 함수를 통해 결과를 내보내는 역할을 하는 노드를..