[회고] 신입 iOS 개발자가 되기까지 feat. 카카오 자세히보기

🛠 기타/Data & AI 99

단층 퍼셉트론 - 선택 분류 구현

https://inuplace.tistory.com/460?category=912534 단층 퍼셉트론 - 회귀분석 구현 데이터를 기반으로 전복의 고리수를 예측하는 단층 퍼셉트론을 구현해보자. 주어진 데이터는 'Sex', 'Length', 'Diameter', 'Height', 'Whole weight', 'Shucked weight', 'Viscera weight', 'Shell weight', 그리.. inuplace.tistory.com 이전에 작성한 코드 중 일부를 재활용한다. 철판 데이터를 분석해 철판 상태를 7가지로 분류한다. 수업에 사용된 코드를 분석한 자료입니다. 메인 함수 정의 def steel_exec(epoch_count=10, mb_size=10, report=1): load_stee..

단층 퍼셉트론 - 선택 분류

선택 분류 문제의 신경망 처리 선택 분류 문제는 몇 가지 정해진 후보 가운데 하나를 골라 답하는 문제이다. 선택 분류는 후보 항목이 여러개이기 때문에 처리 방법이 조금 다르지만, 이진 판단과 비슷한 점이 많다. 이진 판단과 유사하게 각 후보 항목에 대해 로짓값을 추정하도록 구성된다. 퍼셉트론 하나가 후보 하나에 대한 로짓값을 출력하기 때문에, 선택 분류를 수행하려면 후보 수만큼의 퍼셉트론이 존재한다. 이진 판단과 달리 로짓값을 0으로 간주하던 암묵적 요소는 없다. 이진 판단에서 배웠던 교차 엔트로피 개념이 선택 분류에도 적용된다. '소프트맥스' 함수와 그를 통해 도출된 확률값을 기반으로 '소프트맥스 교차 엔트로피'를 구하고 이를 활용해 학습을 진행한다. 소프트맥스 함수 소프트..

순환신경망 - LSTM 기초

순환신경망 (Recurrent Neural Network, RNN) RNN은 입력과 출력을 시퀀스 단위로 처리하는 모델이다. 번역기를 생각해보면, 입력에 사용되는 데이터인 문장도 결국 단어의 시퀀스이고 출력도 단어의 시퀀스이다. 이러한 시퀀스를 적절하게 처리하기 위해 고안된 모델들을 시퀀스 모델이라고 한다. RNN은 그 중 기초가 되는 모델이라고 할 수 있다. 기존에 알던 신경망처럼 단순히 은닉층에서 출력층 방향으로만 값이 전달되는 것이 아니라, '메모리 셀'이라는 특수한 은닉층이 존재하여 이전의 값을 기억하는 일종의 메모리 역할을 수행한다. 이러한 메모리 셀은 다음시점의 자신에게 'hidden state'라고 불리는 특수한 값을 전달해 활용할 수 있도록 한다. 참고 : https://wikidocs.n..

[scikit-learn 라이브러리] LogisticRegression (로지스틱 회귀)

기본 이론 간단하면서도 파라미터의 수가 적어서 빠른 예측이 가능하다. 따라서 다른 알고리즘과의 비교 기준점으로 사용되기도 한다. 주로 $p = {1 \over 1+e^{−z}}$ 형태의 시그모이드 함수를 사용한다. z는 가중치 계산(선형)의 결과이다. 시그모이드 함수는 0~1까지의 결과만을 가지기 때문에 임의의 수에 대한 확률값을 도출해내기 적당하다. 아웃풋을 확률값으로 만들어서 이를 기반으로 데이터를 그룹으로 나눌 수 있다. 시그모이드 함수 # 가중치 이동 # W(a)값이 작을때 -> 클 때 def logreg(z): return 1 / (1 + np.exp(-z)) W_list = [0.3, 0.5, 1] b_list = [0] xx = np.linspace(-10, 10, 100) for W in ..

[scikit-learn 라이브러리] SGDClassifier (선형분류)

계산값을 기반으로 계산값이 0보다 작으면 -1, 0보다 크면 1로 분류한다. 이진 선형 분류기는 선, 평면, 초평면을 이용해 2개의 클래스를 구분하는 분류기이다. SGDClassifier SGDClassifier(alpha, average, class_weight, epsilon, eta0, fit_intercept, l1_ratio, learning_rat, loss, max_iter, n_iter, n_jobs, penalty, power_t, random_state, shuffle, tol, verbose, warm_start) 확률적 경사하강법(SGD, Stochastic Gradient Descent)을 이용하여 선형모델을 구현 lossstr : 손실함수 (default='hinge') pena..

[scikit-learn 라이브러리] PolynomialFeatures (다항회귀)

다항회귀 import numpy as np import matplotlib.pyplot as plt %matplotlib inline n = 100 x = 6 * np.random.rand(n, 1) - 3 y = 0.5 * x**2 + x + 2 + np.random.rand(n, 1) plt.scatter(x, y, s=5) 위와 같은 데이터는 데이터의 분포가 곡선으로 나타나기 때문에 일반적인 선형회귀로 해결할 수 없다. (비선형) 따라서 다항 회귀를 사용한다. 다항회귀란 위와 같이 데이터들간의 형태가 비선형 일때 데이터에 각 특성의 제곱을 추가해주어서 특성이 추가된 비선형 데이터를 선형 회귀 모델로 훈련시키는 방법이다. 기본 과정 from sklearn.preprocessing import Poly..

워드 임베딩 - GloVe 기초활용

기존방법의 문제점 Word2Vec은 중심단어로 주변단어를 예측하거나 주변단어로 중심단어를 예측하는 과정에서 단어를 벡터로 임베딩했다. 하지만 이는 말뭉치의 전체적인 통계정보를 담지 못한다. LSA는 단어의 빈도수를 카운트해 이를 기반으로 단어를 임베딩한다. 이는 유사 단어 관계의 의미 유추 등에서 성능이 떨어진다. GloVe 두 단어 벡터의 내적이 말뭉치 전체에서의 동시 등장확률 로그값이 되도록 목적함수를 정의했다. '임베딩된 단어벡터 간 유사도 측정을 수월하게 수행하고 동시에 말뭉치 전체의 통계 정보를 잘 반영해보자'가 Glove가 지향하는 핵심 목표라고 할 수 있다. 위 표는 Glove 연구진이 예시로 든 것이다. 각 단어의 관계성에 따라 수치를 나타내고, P(solid |ice)/P(solid|st..

단층 퍼셉트론 - 이진판단 구현 확장

https://inuplace.tistory.com/510?category=912534 단층 퍼셉트론 - 이진판단 구현 https://inuplace.tistory.com/460?category=912534 단층 퍼셉트론 - 회귀분석 구현 데이터를 기반으로 전복의 고리수를 예측하는 단층 퍼셉트론을 구현해보자. 주어진 데이터는 'Sex', 'Length', 'Diameter', 'He.. inuplace.tistory.com 위 링크에서 구현한 코드를 실행해보면 테스트 데이터에 대해 꽤나 좋은 정확도를 얻게 된다. (97% 상회) 하지만 이는 전체 데이터셋의 90%가 일반 별이고 10%가 펄서이기 때문이다. (따라서 테스트 데이터셋도 비슷한 비율을 가질 것이다.) 이런 경우 일반적 데이터에서 모델을 사용하..

단층 퍼셉트론 - 이진판단 구현

https://inuplace.tistory.com/460?category=912534 단층 퍼셉트론 - 회귀분석 구현 데이터를 기반으로 전복의 고리수를 예측하는 단층 퍼셉트론을 구현해보자. 주어진 데이터는 'Sex', 'Length', 'Diameter', 'Height', 'Whole weight', 'Shucked weight', 'Viscera weight', 'Shell weight', 그리.. inuplace.tistory.com 이전에 작성한 코드 중 일부를 재활용한다. 별 데이터를 분석해 일반 별과 펄서를 구별한다. 수업에 사용된 코드를 분석한 자료입니다. 코드 재활용 %run ../abalone.ipynb 회귀분석 구현시 작성되었던 함수 일부를 활용하기 위해 해당 파일명을 run하여 코드..

워드임베딩 - Word2Vec 기초활용

희소표현과 밀집표현 희소 표현 : 벡터 혹은 행렬의 값 대부분이 0으로 표현되는 방법이다. 단어의 개수가 늘어나면 차원이 한없이 커진다는 단점이 있다. 따라서 공간적 낭비가 있다. (ex. 원-핫 벡터) 밀집 표현 : 벡터의 차원을 단어 집합의 크기로 상정하지 않는다. 사용자가 설정한 값으로 모든 단어의 벡터 표현의 차원을 맞춘다. 또한 이 과정에서 0과 1이 아닌 실수값을 가지게 된다. 워드 임베딩 단어를 밀집 벡터의 형태로 표현하는 방법 LSA, Word2Vec, FastTest, Glove 등의 방법이 있다. Word2Vec 분산 표현 : 단어의 의미를 다차원 공간에 벡터화하는 것. 비슷한 위치의 단어는 비슷한 의미를 가진다는 가정하에 만들어진 표현 방법이다. 원-핫 벡터와 같은 희소 표현이 고차원..