Machine Learning 9

[부캠AI] AI Math - 경사하강법- 순한맛

AI Math 2강: 경사하강법- 순한맛 미분의 개념과 gradient vector, 경사하강법의 알고리즘 📌미분이란? 변수의 움직임에 따른 함수값의 변화를 측정하기 위한 도구 # sympy.diff을 사용하면 컴퓨터로 미분을 계산할 수 있다. import sympy as sym from sympy.abc import x sym.diff(sym.poly(x**2 + 2*x + 3), x) 미분으로 함수 f의 주어진 점 (x,f(x))에서의 접선의 기울기를 구할 수 있다. 기울기를 알면 어느 방향으로 움직여야 함수값이 증가하는지, 감소하는지 알 수 있다. 경사상승법 (gradient ascent) 미분값을 더하여 함수의 극대값의 위치를 구할 수 있다. 경사하강법(gradient descent) 미분값을 빼..

Machine Learning 2022.05.12

[부캠AI] AI Math - 행렬이 뭐예요?

AI Math 2강: 행렬이 뭐예요? 행렬의 개념과 연산, 벡터공간에서 가지는 의미, 연립방정식 풀기와 선형회귀분석에 응용 방법 📌 행렬이란? 벡터를 원소로 가지는 2차원 배열 특징 행(row)과 열(column)이라는 인덱스(index)를 가진다. 행렬은 대문자 X, 벡터는 소문자 x로 표현한다. 벡터가 공간에서 한 점을 의미한다면 행렬은 여러 점들을 나타낸다. 행렬의 $x_{ij}$는 $i$번째 데이터의 $j$번째 변수의 값을 말한다. 행렬끼리 같은 모양을 가지면 덧셈, 뺄셈을 계산할 수 있다. 성분곱과 스칼라곱도 벡터와 차이가 없다. 행렬의 곱셈(matrix multiplication) $i$번째 행벡터와 $j$번째 열벡터 사이의 내적을 성분으로 가지는 행렬 계산 $X$의 열의 개수와 $Y$의 행의..

Machine Learning 2022.05.12

[부캠AI] AI Math - 백터가 뭐예요?

AI Math 1강: 백터가 뭐예요? 벡터의 기본 개념과 연산, 노름에 대해 소개합니다 📌백터란? 공간에서 한 점을 나타내며, 원점으로부터 상대적 위치 숫자를 원소로 가지는 리스트(list) 또는 배열(array) 백터에 숫자를 곱하면 길이만 변한다. (스칼라 곱) 같은 모양을 가지면 덧셈, 뺄셈과 성분곱(Hadamard product)을 계산할 수 있다. x = [1,2,7] x = np.array([1,2,7]) 📌백터의 노름 원점에서부터의 거리 L1-norm 각 성분의 변화량의 절대값을 모두 더한다 L2-norm 피타고라스 정리를 이용해 유클리드 거리를 계산 파이썬 코드 def l1_norm(x): x_norm = np.abs(x) x_norm = np.sum(x_norm) return x_norm..

Machine Learning 2021.08.09

[인공지능] 개념!

인공지능 - 사람의 지능을 모방하여 사람이 하는 것과 같이 복잡한 일을 할 수 있는 기계를 만드는 것 - 인공지능을 구현하는 방법 중 중요한 방법이 머신러닝(기계학습) 머신러닝 - 어떤 데이터를 분류하거나 값을 예측하는 것 - 3가지 종류: 지도학습, 비지도학습, 강화학습 1. 지도학습: 입력과 결과값(label)을 이용한 학습 분류(yes or no) 와 회귀(특징, 그래프) 2. 비지도학습: 입력만 이용한 학습 무엇인지 정의할 수 없지만 비슷한 단위로 군집화 지도학습에서의 적절한 feature를 찾아내기 위한 전처리 방법으로 쓰기도 함 3. 강화학습: 데이터가 존재하는 것도 아니고 데이터가 있어도 정답이 따로 정해져 있지 않음 자신이 한 행동에 대해 보상을 받으며 학습 보상의 가중치를 최대화 하는 것..

Machine Learning 2021.06.14

[순환 신경망] 긍정, 부정 감정 분석

극성 감정 분석: 긍정/부정이나 긍정/중립/부정을 분류한다. ex)영화리뷰나 음식점 리뷰에 적용되기 쉽다 네이버 영화리뷰 데이터를 이용하여 긍정/부정 감정 분석을 해보자 데이터 불러오기 훈련데이터로 15만개, 테스트 데이터로 5만개 https://raw.githubusercontent.com/e9t/nsmc/master/ratings_train.txt https://raw.githubusercontent.com/e9t/nsmc/master/ratings_test.txt 위 사이트에서 데이터들을 다운로드하여 불러온다. path_to_train_file = "ratings_train.txt" path_to_test_file = "ratings_test.txt" #데이터 불러오기 train_text = ope..

[순환신경망]GRU 레이어

GRU 레이어 :Gated Recurrent Unit LSTM레이어와 비슷한 역활을 하지만 구조가 더 간단 = 계산성의 이점이 있다 LSTM레이어보다 시그모이드 함수가 하나 적게 쓰였다 = 게이트의 수가 하나 줄어들었다는 것 r: reset 게이트를 통과한 출력 z: update 게이트를 통과한 출력 LSTM에서 풀었던 곱셈 예제를 GRU로 -학습 모델 model=tf.keras.Sequential([ tf.keras.layers.GRU(units=30, return_sequences=True, input_shape=[100,2]), tf.keras.layers.GRU(units=30), tf.keras.layers.Dense(1) ]) model.compile(optimizer='adam', loss=..

[순환 신경망] LSTM 레이어

SimpleRNN의 문제점 입력 데이터가 길어질수록 (타임스텝이 커질수록) 학습능력이 떨어진다. = 장기의존성 (Long-Term Dependency)문제 입력과 출력사이의 길이가 멀어질수록 연관 관계가 적어진다. LSTM simpleRNN과 다르게 복잡하다. c: 셀 상태를 나타내는 기호 ht와 함께 셀 상태가 전달된다. [recap] sigmoid함수: 0~1범위의 출력을 낸다 시그모이드 함수 => 정보 통과 게이트 역할 (0이면 입력된 정보 통과 X, 1이면 100% 통과) 예제 (SimpleRNN & LSTM 비교) 곱셈 문제: 100개의 실수중 마킹된 두 개의 숫자만 곱한다. -학습 데이터 X=[] Y=[] for i in range(3000): #0~1 랜덤한 숫자 100개 생성 lst = n..

[순환 신경망] SimpleRNN

SimpleRNN 가장 간단한 형태의 RNN 레이어 x: 입력값, h: 출력값, U와 W는 입출력에 곱해지는 가중치 활성화 함수로는 tanh가 쓰인다. (ReLU 같은 다른 활성화 함수를 사용할 수도 있음) 레이어 생성 코드 rnn1 = tf.keras.layers.SimpleRNN(units=1, activation='tanh', return_sequences=True) units: 뉴런의 수, return_sequences: 시퀀스 전체를 출력할지 여부 (여러 개 RNN레이어 쌓을 때 쓰임) 예제 [0.0, 0.1, 0.2, 0.3]이라는 연속된 숫자가 주어졌을 때 [0.4]를 예측하는 네트워크를 만들자 -학습 데이터 생성 X=[] Y=[] for i in range(6): #정수 시퀀스 만들기 ls..

728x90