목록AI (25)
미누에요

머신러닝 라이브러리머신러닝, 딥러닝 공부를 하다 보면 파이썬으로 코드를 구현하는 데 어려움을 겪는 경우가 많다.어려울 수 있는 코드 작성을 보다 쉽게 작성하도록 패키지박스(?)가 제공되고 있는데, 그것을 우리는 머신러닝 라이브러리 라고 부른다. 여러가지 머신러닝 라이브러리 중 우리는 가장 많이 사용되고 있는 텐서플로우(Tensorflow)에 대해서 알아보자.텐서플로우(Tensorflow) 구글(Google)에서 오픈소스로 공개한 머신러닝 라이브러리이다. (프레임워크라고 보는 경우도 있는 듯하다.)텐서플로우는 일반인들도 사용하기 쉽도록 다양한 기능을 제공한다. 지원 언어PythonC++GoJavaR텐서플로우를 이용하여 기존의 거의 모든 머신러닝, 딥러닝을 수행할 수 있다.말 그대로 좀 더 쉽게 코드를 작성..

이번 포스팅부터는 모델의 Loss Function의 최소값을 찾아 성능을 향상시키는 최적화(Optimization) 알고리즘에 대해서 설명하겠다. 경사하강법(Gradient Descent)가장 기본적인 최적화 알고리즘이다.gradient, 즉 기울기를 사용하여 함수의 최솟값을 찾아가는 방법이다.위 사진처럼 Loss Function이 있다고 하자. (Loss Function은 꼭 2차곡선의 형태는 아님, 대부분이 아님)Loss가 적을수록 손실이 적다는 것이므로 Loss Function의 값이 최소인 곳을 찾아야한다. 이 Loss Function의 최솟값을 찾기 위해 우리는 미분을 활용한다. 근본적인 개념은 아래와 같다. 미분을 하면 접선의 기울기를 얻을 수 있다.그리고 그 접선이 해당 점에서의 가장 가파른..

Loss Function(손실 함수) 머신러닝/딥러닝에서는 모델을 학습시킬 때, 손실함수 라는 것을 사용한다.손실함수는 말 그대로 Loss값들을 함수로 나타낸 것이며, "손실" 이므로 이 Loss Function이 작을수록 대체로 좋은 모델이다. 머신러닝/딥러닝에서는 성능을 올리기 위해 이러한 Loss Function의 최솟값을 찾게 되는데, 그 과정을 최적화(Optimization)이라 한다.최적화(Optimization)에 대한 내용은 추후에 포스팅하도록 하겠다. 회귀(Regression) 에서의 손실 함수(Loss Function) 위 사진처럼 데이터가 점으로 분포하고, 그에 따라 회귀 모델을 통해 예측한 값이 선으로 표시되어있다. 이러한 회귀식에서는 Loss Function을 실제 값(점)과 ..

다층 퍼셉트론(Multi-Layer Perceptorn)다층 퍼셉트론은 흔히 MLP라는 명칭으로 많이 불린다.단층 퍼셉트론(Single-Layer Perceptron)과 다른 점이라면 다층 퍼셉트론(Multi-Layer Perceptron)은 입력층(input layer), 은닉층(hidden layer), 출력층(output layer)로 구성된다. 다층 퍼셉트론에서는 하나 이상의 은닉층(hidden layer)를 사용하여 비선형적인 문제를 해결할 수 있게된다. 각 layer들을 "층" 이라고 하는데, 각 층은 하나의 노드처럼 동작한다.즉, 입력을 받아 특정 연산을 수행한 후 출력해준다.위 사진과 같이 각 은닉층은 모든 노드들과 연결되어있다.이것을 완전 연결(fully-connected)이라 한다. 이..

퍼셉트론은 입력 데이터를 가중치와 함께 계산해 선형 결정 경계를 학습하는 단순한 인공신경망 모델이다.기본적으로 퍼셉트론을 설명할 때, 입력층과 출력층을 가지고 설명하는데, 이러한 가장 기본적인 모델이 사실은 "단층 퍼셉트론"이다. 단층 퍼셉트론(Single-Layer Perceptron) 단층 퍼셉트론(Single Layer Perceptron)은 입력층(input layer), 출력층(output layer)로 구성된다.좀 더 단순한 그림으로는 위 그림과 같이 나타낼 수 있다. 다중퍼셉트론(Multiple Layer Perceptron)과 다른 점은 은닉층(hidden layer)의 유무이다.아무튼, 이러한 단층 퍼셉트론(Single Layer Perceptron)으로는 단순한 분류, 즉 선형적인 분류..

딥러닝(Deep Learning)딥러닝이라고 하면 마냥 어렵게만 느껴지겠지만 머신러닝과 크게 다를 게 없다.단지 "인공신경망"이라는 것을 기반으로 했다는 것이 큰 차이점이다. 앞서 말했듯이, 딥러닝은 인공신경망에 기반한 학습 방식이다. 인공 신경망(Neural Network)과학기술에는 사람이나 동식물을 보고 영감을 받아 만든 제품이 많다.그 중 인공신경망은 사람의 뇌 안에있는 뉴런 구조를 보고 구상하게 되었다.예전에 과학 교과서에서 이런 그림을 본 적이 있을 것이다.이 뉴런은 두뇌에서 가장 작은 정보처리 단위로써 사용된다. 이를 보고, 뉴런과 같은 작은 단위를 만들고, 이것을 여러 개 층층히 쌓아 신경망을 사람처럼 구성하면 어떨까 ? 라는 의견에서 나오게 된 것이 딥러닝의 핵심인 인공 신경망이다. 위..

혼동 행렬(Confusion Matrix) 혼동 행렬은 분류 모델에서 예측 값과 실제 값을 비교하여 성능을 평가하기 위해 사용하는 개념이다. 처음 본다면 Positive에 Positive가 뭐고 Positive에 Negative는 뭔가 싶을 수 있다. 우선 우리는 True Class 와 Predicted Class에 주목해야한다.True Class는 실제 클래스를 의미하고, Predicted Class는 예측한 클래스를 의미한다.즉, True Class는 정답지의 값이고, Predicted Class는 우리가 만든 모델이 예측한 값이다. 위 혼동행렬을 가지고 우리는 TP, FP, FN, TN으로 나눌 수 있다. True Positive(TP)실제로 Positive인 값을 모델이 Positive로 예측 F..

분류를 할 때 사용하는 알고리즘 중 주변 데이터에 따라 분류를 하는 방법이 존재한다. 예시를 들자면 공부 잘하는 놈 주변에는 다 공부 잘하는 놈들이 모여있을거라는 생각을 하듯 이 KNN도 근처에 있는 데이터가 비슷한 양상을 띌거라는 이론에서 시작된 분류 알고리즘이다. KNN(K-nearest Neighbor)쉽게 말해서 근처에 있는 K개의 데이터를 보고 이 데이터를 판별하는 방식이다. 위 사진을 보면 이해가 빠를 것이다. 위 사진에서 ? 라는 데이터가 ★에 속하는지, 혹은 ▲ 에 속하는지 분류하는 경우이다.만약 K=3으로 둔다면 주변의 가장 가까운 3개의 데이터를 골라보니 ★이 1개, ▲가 2개이다. K=3으로 KNN 알고리즘을 통해 분류하면 결과적으로 ? 데이터는 ▲라고 판별하게 된다. 반면에, ..

나이브 베이즈 분류(Naive Bayes Classification)나이브 베이즈 분류는 "베이즈 정리(Bayes Rule)을 활용한 통계학적 분류 알고리즘이다. 베이즈 정리(Bayes Rule)베이즈 정리는 지극히 통계적인 개념으로, 조금은 어렵게 다가올 수 있으나 차근차근 읽어보자. P(A∣B): 사건 B가 발생했을 때 A가 발생할 확률 (사후 확률)P(B∣A): A가 발생했을 때 B가 발생할 확률 (우도)P(A): A가 발생할 확률 (사전 확률)P(B): B가 발생할 확률 (정규화 상수) 단순히 사건 A가 일어날 확률이 아니라, 사건 B에 대한 A의 확률을 계산하는 것이다. 자세한 베이즈 정리에 대한 내용은 따로 찾아보기 바란다. 그렇다면 왜 베이즈 정리를 활용하는지 궁금할 것이다.그 이유는..

머신러닝의 핵심은 회귀이고, 분류 또한 이 회귀 알고리즘을 이용해서 특정 함수에 넣어 분류하게 된다는 것을 알고 있을 것이다. 이번에는, 분류를 조금은 다른 방법으로 해보고자 한다. 우선, 기존에 흔히 하던 분류 모델은 아래와 같다. 기존 분류 방식이러한 데이터들을 가지고 y = ax + b라는 회귀식을 얻어냈다고 하자. 이 y = ax + b라는 회귀식을 우리는 분류 함수에 넣게 된다.여기서의 분류 함수는 "시그모이드 함수" , 혹은 "소프트맥스 함수" 가 사용될 수 있다. 이렇게 함수에 집어넣게 되면 결과적으로 0 혹은 1의 값이 나온다. 앞서 설명한 방식(시그모이드, 소프트맥스 등)은 데이터가 선형적으로 구분될 수 있는 경우에 적합하다.하지만, 현실에서는 데이터가 선형적으로 구분되지 않는 경..