728x90
반응형

로지스틱 회귀 (logistic regression)

  • 참(1), 거짓(0)을 구분하는 분류 모델
  • 로지스틱 회귀 모델을 만들어 YES or NO의 값을 출력하는 것이 딥러닝의 원리

시그모이드 함수 (sigmoid function)

이 함수를 이용해서 구해야 할 값은 ax+b (선형회귀식). 

결과값(y)은 0과 1사이

a(그래프의 경사도): a가 커지면 경사가 커지고, a가 작아지면 경사가 작아진다. 

b(그래프의 좌우 변위): b가 크면 왼쪽, b가 작으면 오른쪽으로 그래프가 이동함

 

오차 공식

  • 시그모이드 함수를 오차를 나타내는 함수로 생각하면, a, b에 따라서 오차가 변한다. 
  • a가 작아지면 오차는 무한대로 커지나, a가 커지면 오차는 0에 수렴한다.
  • b는 너무 크거나 작을 경우, 오차가 증가한다. 

 

 

 

시그모이드 함수 결과값은 [0,1]범위

실제값이 1이고 예측값이 0인 경우: 오차 증가

실제값이 0이고 예측값이 1인 경우: 오차 증가

이 것을 함수로 나타낸 것이 로그 함수.

 

 

 

 

로그함수

그래프에서 y는 실제값

실제값(y)이 1인 경우가 파란색 함수 

예측값이 1일 때, 오차는 0

예측값이 0일 때, 오차는 증가

 

실제값(y)이 0인 경우가 빨간색 함수

예측값이 0일 때, 오차는 0

예측값이 1에 가까울 수록, 오차는 증가

 

 

이 것을 통합해서 표현하면 아래 함수로 표현 가능

y(실제값)이 1이면 B부분이 0 --> A만 남아, 파란색 그래프만 사용

y(실제값)이 0이면 A부분이 0 --> B만 남아, 빨간색 그래프만 사용

728x90
반응형
728x90
반응형

다중 선형 회귀

기온에 영향을 미치는 요소가 시간(x1)뿐 아니라 풍속(x2)도 있을 수 있다. 

이 경우 하나의 종속 변수(y)에 2개의 독립변수(x1, x2)가 영향을 미치므로, 아래와 같은 식으로 표현 가능.

 

y = a1x1 + a1x2 + b

 

시간(x1) 기온(y) 풍속(x2)
0 16  
3 14  
6 17  
9 19  
12 22  
15 26  
18 23  
21 19  
평균 19.5  

 

 

 

경사 하강법을 사용하여 두 기울기 a1, a2 구함. 

728x90
반응형
728x90
반응형

경사하강법 (gradient descent)

- 2차원 이상의 함수에서 최저점(기울기, 절편)을 찾는 방법

- 오차의 변화의 2차 함수 그래프를 만들고 적절한 학습률을 설정해 기울기가 0인 지점을 구하는 것. 

 

방법적 알고리즘 (2차 함수)

1. X1에서 미분으로 기울기 구함

2. 구해진 기우기의 반대방향으로 얼마간 이동시킨 X2에서 미분

   (기울기가 +이면 음의 방향, 기울기가 -이면 양의 방향으로 이동시킴)

3. 미분 값이 0이 될때 까지 위 과정을 반복해서 최소값을 구함.

 

학습률 (learning rate)

- 학습율을 너무 크게 설정하면, 기울기의 부호를 바꿔 이동할 때 적절한 거리는 찾지 못해 너무 멀리 이동하면, 기울기(a)가 수렴하지 않고 발산할 수 있음. -> overshooting

학습율을 너무 작게 하면 국소 최적치(local minima)에 빠져 최적화된 w를 찾기 전에 학습이 끝날 수 있다. 

 

- 따라서, 이동거리를 정하는 것이 중요 ... 학습률 개념

 

- 딥러닝에서 학습률의 값을 적절히 바꾸면서 최적의 학습률을 찾는 것이, 최적화 과정 중의 하나. 일반적으로 0.01 을 초기값으로 하고 학습비용 (cost)를 관찰한 후 조금식 조정함.

- 경사 하강법은 오차 변화의 2차 함수 그래프를 만들고 적절한 학습률을 설정해 기울기가 0인 지점을 구하는 것. 

- 최적의 절편(b)을 구할 때도 동일하게 사용.

- a, b에 대해서는 각각 편미분

 

 

학습율 조정 방법

TensorFlow 가 제공하는 메소드를 이용

tf.train.exponential_decay()

tf.train.natural_exp_decay()

tf.train.polynomial_decay()

tf.train.inverse_time_decay()

tf.train.piecewise_constant()

 

 

 

3차 이상 함수

- 다차원 편미분 개념 도입

출처: BOAS 수리물리

 

확률적 경사하강법 (Stochastic Gradient Descent, SGD)

경사 하강법은 계산량이 커서 속도가 느리다.

확률적 경사 하강법은 데이터 일부를 랜덤하게 추출하여 일부 데이터만을 사용하기 때문에 속도가 빠르고 자주 업데이트할 수 있는 장점이 있다. 

확률적 경사 하강법의 중간 결과는 진폭이 크고 불안정해 보일 수 있으나, 빠르게 최적해에 근사한 값을 찾아낼 수 있기에, 경사하강법을 대체해서 사용된다. 

특히 모멘텀(momentum)을 이용하면, 지그재그 현상을 줄이면서 이동 방향에 관성을 더해 효과적으로 계산할 수 있다. 

728x90
반응형
728x90
반응형

선형 회귀법

- 독립 변수 x를 사용해 종속 변수 y의 움직임을 설명하고 예측하는 작업

- 가장 적절한 예측선을 그려내는 과정. 즉, 최적의 기울기(a), 절편(b) 찾는 과정

- 모든 점들로부터의 오차가 최소인 지점에 가장 적절한 예측선을 그림

 

기울기와 절편 찾는 방법

최소 제곱법 - 1차함수용  독립변수 x가 1개일때 사용

경사 하강법 - 다차함수용 독립변수 x가 2개 이상인 경우

 

 

최소 제곱법 (method of least squares)

             기울기 = {(x- x평균)(y-y평균)의 합}/{(x-x평균)^2의 합}

 

시간 기온 예측값
0 16  
3 14  
6 17  
9 19  
12 22  
15 26  
18 23  
21 19  
평균 19.5  

 

 

 

평균 제곱 오차 (mean square error, MSE)

오차의 합 = {(y-y평균)^2}의 합/{총 변량 갯수)       ....  머신러닝 딥러닝에서 중요.

 

 

 

선형회귀란 임의의 직선을 그려 이에 대한 평균 제곱 오차를 구하고, 이 값을 최소로 만드는 기울기(a)와 절편(b)를 찾는 과정.

이 최소값을 찾기위해서 반복계산이 필요함

 

 

 

728x90
반응형
728x90
반응형

자연을 이해하기 위한 과학적 접근법 

1) 선형화 

2) 정량화

 

선형 함수

  • 선형함수: 1차함수로 표현되는 변량간의 관계
  • 자연세계는 기본적으로 비선형 세계
  • 인간의 인지 능력은 선형적, 즉 1차원적, 직관적
  • 복잡한 비선형계의 데이터는 선형화가 필요... 1차선형회귀
  • 이 경우, 오차가 발생하므로, 통계학의 확률분포 해석이 필요

 

 

비선형 함수

  • 만약 설명력을 높이기 위해서는 다차 회귀함수가 필요

 

 

비선형의 불확실성

  • 비선형 함수에서는 1개 결과값 Y의 원인자는 차수에 따라 그 수가 늘어남.
  • 즉, 알고 있는 관측/관찰 결과의 원인은 차원에 따라 명확히 알 수가 없다. 

AI 불확실성과 한계

  • 절대 인간이 될 수 없는 AI
  • AI 인간과 공존하는 지식

 

728x90
반응형
728x90
반응형

딥러닝을 이해하는데 가장 중요한 수학원리는 "미분"

 

1차 함수의 기울기와 절편

기울기와 절편

 

 

2차함수의 최소값

  • 미분=순간 변화율
  • 미분으로 함수의 최소값을 구함.
  • 어느 순간에 어떤 변화가 일어나고 있는지를 숫자로 나타낸 것을 "미분 계수" = 그래프의 기울기
  • 기울기가 0인 지점이 최소값 지점. 
  • 딥러닝에서는 최소값을 찾아내는 과정이 매우 중요.
  • 1차함수의 경우, 수학적으로는 최소 제곱법으로 간단히 찾을 수 있음.
  • 딥러닝이 필요한 다차함수의 경우, 미분과 기울기를 이용하는 경사 하강법을 사용. 

 

연속함수와 이산함수

미분과 차분

아날로그와 디지털

 

 

 

 

728x90
반응형
728x90
반응형

진리탐구 방법 (연역법, 귀납법)

 

 

 

 

기적에 대한 차원적 접근

1차원 세계

 

 

 

1, 2차원 세계

 

 

 

 

 

 

 

1,2,3차원 세계

 

 

 

 

 

 

 

 

 

고차원 존재의 일상은 저차원 존재에게 기적

질량 보존의 법칙 위배
중력의 법칙 위배

 

 

 

 

 

 

신 존재에 대한 추론

1. 외계인?

 

 

 

 

 

 

2. 자기 현현의 보편성

 

 

 

 

 

 

 

유물론 vs. 유신론

인간 인식 방법의 한계로 인해,

두 가지 인식 방법을 모두 포함한 균형잡힌 자세가 필요

분쟁, 전쟁, 착취, 이기주의

 

728x90
반응형
728x90
반응형

머신러닝 딥러닝은 분류와 회귀 문제 해결을 위한 도구(모델)

예) 개 고양이 분류

 

1. 확률적 모델링 (probabilistic modeling)

  • 통계학 이론을 빅데이터 분석에 응용한 것
  • 초창기 머신 러닝 형태 중 하나
  • 대표적인 모델 알고리즘은 나이브 베이즈 알고리즘

1.1 나이브 베이즈(Naive Bayes) 

  • 입력 데이터가 모두 독립이라 가정하고, 베이즈 정리(Bayes' theorem)을 적용하는 머신 러닝 분류 알고리즘
  • 분류 알고리즘

1.2 로지스틱 회귀(logistic regression)

  • 분류 알고리즘 (회귀 알고리즘 아님)

 

2. 초창기 신경망 - 1980년대

  • 경사 하강법 최적화를 이용하여 변수가 연쇄적으로 연결된 연산을 훈련하는 기법
  • 1989년 Yann LeCun이 합성곱 신경망과 역전파 알고리즘을 결합하여 (LeNet), 이미지 분류(손글씨 숫자)에 최초 성공
  • 이 후, 미국 우편번호 자동 분류에 사용됨. 

 

3. 커널 방법 (Kernel method) -1990년대

  • 분류 알고리즘

3.1. 서포트 벡터 머신 (support vector machne, SVM)

  • 1995년 Vladmir Vapnick과 Corinna Cortes 에 의해 개발됨. 
  • 2개의 다른 범주에 속한 데이터 그룹 사이를 확실히 구분하는 결정경계(decision boundary)를 찾는 알고리즘
  • 장점: 
    • 간단한 분류 문제에 최고 수준의 성능을 보임. 
    • 수학적으로 분석하기 용이하여 이론을 이해하고 설명하기 쉬움. 
  • 단점:
    • 대용량 데이터셋으로의 확장이 어려움
    • 이미지 분류에서 낮은 성능.
    • 복잡한 특성공학(feature engineering) 필요함. 

 

4. 결정트리, 랜덤 포레스트, 그래디언트 부스팅 머신 - 2000년대

4.1 결정트리(decision tree) 

  • flowchart 구조
  • 입력 데이터 분류 또는 출력값 예측에 사용
  • 시각화와 이해가 쉬움

4.2 랜덤포레스트(Random forest) 

  • 여러개의 결정트리 출력을 앙상블하는 방법
  • 결정 트리 학습에 기초한 알고리즘으로서 실전에 유용
  • 캐글(Kaggle)이 가장 선호하는 알고리즘

4.3 그래디언트 부스팅 머신(gradient boosting maehine)

  • 여러개의 결정트리 출력을 앙상블하는 방법
  • 빠진 데이터를 보완하는 알고리즘을 반복해서 훈련함으로 머신 러닝을 향상시킴
  • 랜덤 포레스트 성능을 능가.
  • 지각과 인지관련 분야에서, 딥러닝 다음으로 뛰어난 알고리즘

 

5. 딥러닝 - 심층 신경망 (Deep neural network) - 2010년대

  • 2011년 Dan Ciresan가 GPU 심층 신경망으로 이미지 분류 대회 우승
  • 2012년 부터 심층 합성 신경망(deep convolutional neural network, ConvNet)이 이미지 분류, 컴퓨터 비전 작업의 주력이 됨.
  • 다양한 애플리케이션에서 SVM, 결정트리를 완전히 대체하고 있음.
728x90
반응형
728x90
반응형

에러 메세지

ImportError: cannot import name 'rmsprop' from 'keras.optimizers'

코드

>>> from keras.optimizers import RMSprop

해결

아래 문장으로 바꿔

>>> from tensorflow.keras.optimizers import RMSprop

728x90
반응형
728x90
반응형

에러

KeyError: 'val_loss'

 

코드

>>># from keras.optimizers import RMSprop
>>>from tensorflow.keras.optimizers import RMSprop

>>>model = Sequential()
>>>model.add(layers.Flatten(input_shape=(lookback // step, float_data.shape[-1])))
>>>model.add(layers.Dense(32, activation='relu'))
>>>model.add(layers.Dense(1))

 

>>>model.compile(optimizer=RMSprop(), loss='mae')
>>>history = model.fit_generator(train_gen,
>>>                              steps_per_epoch=500,
>>>                              epochs=20,
>>>                              validation_data=val_gen,
>>>                              validation_steps=val_steps)
                              
>>>loss = history.history['loss']
>>>val_loss = history.history['val_loss']

 

원인

이 문제는 RMSprop 문제로 compile 이 제대로 작동하지 않아서 발생하는 문제임. 

 

해결 

아래 문장으로 대체

>>> from tensorflow.keras.optimizers import RMSprop

 

 

 

728x90
반응형

+ Recent posts