인공지능/머신러닝 58

[머신러닝 - Python] 활성화 함수 - 시그모이드 함수 구현 (Activation Function - Sigmoid Function Implemetation)

앞의 글을 읽으시면 이해에 도움이 됩니다. 2022.10.18 - [Computer Science/머신러닝] - [머신러닝 - 이론] Logistic Regression (로지스틱 회귀) [머신러닝 - 이론] Logistic Regression (로지스틱 회귀) 앞의 글을 읽으시면 이해에 도움이 됩니다. 2022.05.07 - [Computer Science/머신러닝] - [머신러닝 - Python] 활성화 함수 - 시그모이드 함수 구현 (Activation Function - Sigmoid Function Implemetation) [머신러닝 - Python] hi-guten-tag.tistory.com 퍼셉트론은 계단 함수를 사용하지만, 이는 활성화 함수의 일부일 뿐이다. 실제로 제대로 된 신경망을 ..

[머신러닝 - Python] 활성화 함수 - 계단 함수 구현 (Activation Function - Step Function Implementation)

계단 함수는 0이하의 값에 대해 0을 출력하고, 0초과의 값에 대해서는 1을 출력한다. numpy 배열에 대해서 각각 계산을 할 수 있게 만들면 코드는 아래와 같다. import numpy as np import matplotlib.pyplot as plt def step(x): return np.array(x > 0, dtype=np.int64) x = np.arange(-5.0, 5.0, 0.1) y = step(x) plt.plot(x, y) plt.ylim(-0.1, 1.1) plt.show() 실제로 -5.0 부터 5.0까지 0.1 간격으로 벡터를 만들어서 넣었는데, 이런 형태의 함수가 나오게 된다. 참고로 x > 0만 하면 True, False 값으로 나오는데 이를 dtype = np.int6..

[머신러닝 - Python] 퍼셉트론 - XOR 게이트 구현 (Perceptron - XOR Gate Implementation)

XOR 게이트는 단순한 1층 퍼셉트론으로는 구현할 수 없습니다. 반면 AND, NAND, OR 게이트는 직선으로만 구분할 수 있습니다. 반면 XOR 게이트는 직선으로 표현할 수 없습니다. 이해가 되시나요? 따라서 XOR은 '비선형'으로만 표현할 수 있습니다. 방법은 간단합니다. AND, OR, NAND를 조합하면 됩니다. 따라서 XOR = AND(OR, NAND)과 같습니다. 간단하죠? 코드는 아래와 같습니다. def XOR(x1, x2): s1 = NAND(x1, x2) s2 = OR(x1, x2) y = AND(s1, s2) return y for i in [0, 1]: for j in [0, 1]: print(f'{i, j}', end=' ') print() print('XOR : ', end = ..

[머신러닝 - Python] 퍼셉트론 AND, NAND, OR 게이트 구현 (Perceptron AND, NAND, OR Gate implementation)

import numpy as np def AND(x1, x2): x = np.array([x1, x2]) w = np.array([0.5, 0.5]) b = -0.7 tmp = np.sum(w * x) + b if tmp 0: return 1 def NAND(x1, x2): x = np.array([x1, x2]) w = np.array([-0.5, -0.5]) b = 0.7 tmp = np.sum(w * x) + b if tmp 0: return 1 def OR(x1, x2): x = np.array([x1, x2]) w = np.array([0.5, 0.5]) b = -0.2 tmp = np.sum(w * x) + b if tmp 0: return 1 for i in [0, 1]: for j in [..

[머신러닝 - 이론] 강화 학습의 기초 (Fundamental of Reinforcement Learning)

강화 학습을 잘 모를 수 있지만, 알파고를 모를 수는 없습니다. 알파고는 강화 학습을 통해 학습된 모델입니다. 이처럼 강화학습은 요즘 가장 흥미진진한 분야이자 가장 오래된 분야 중 하나입니다. 사람은 주위를 센싱하고 인식하여 적절한 행위를 통해 환경과 상호작용합니다. 인공지능 제품도 비슷한 과정을 수행해야 쓸모가 있습니다. 1. 에이전트 (Agent) 일상생활에서 에이전트 (Agent)란 특정한 일을 대행해주는 사람을 뜻합니다. 강화 학습에서의 에이전트는 관측을 하고 주어진 환경에서 행동을 합니다. 그리고 그 결과로 보상을 받습니다. 에이전트의 목적은 보상의 장기간 기대치를 최대로 만드는 행동을 학습하는 것입니다. 목적지에 도착하면 양의 보상을 받고, 시간을 낭비하거나 잘못된 방향으로 향하면 음의 보상을..

[머신러닝 - 이론] RNN과 LSTM

1. 시계열 데이터 시계열 데이터란 시간, 순서 정보가 들어 있는 데이터를 말합니다. 문장이 있다면 단어가 나타나는 순서가 중요합니다. 또한 일별 온도를 기록한 데이터가 있다면 날짜의 순서가 중요합니다. 이처럼 데이터에 순서나 시간이 들어가 있는 데이터를 시계열 데이터(time series data)라고 합니다. 시계열 데이터의 독특한 특성에 대해 알아보겠습니다. 요소의 순서가 중요 "세상에는 시계열 데이터가 참 많다"를 "시계열 참 데이터가 많다 세상에는"으로 바꾸면 의미가 훼손됩니다. 샘플의 길이가 다름 짧은 발음 "인공지능"과 긴 발음 "인 ~공~~~지능"이 다름 문맥 의존성 "시계열은 앞에서 말한 바와 ... 특성이 있다"에서 "시계열은"과 "특성이 있다"는 밀접한 관련성이 있음 계절성 미세먼지 ..

[머신러닝 - 이론] CNN 시각화, CNN 성능 향상, 전이 학습 (CNN Visualization, CNN Improve Performanc

1. CNN의 시각화 CNN에서는 두 가지의 시각화를 시도할 수 있습니다. 첫 번째는 Convolution Layer의 Kernel을 시각화하는 방법이고, 두 번째는 Conv Layer, Pooling Layer이 추출해주는 Feature Map을 시각화하는 방법입니다. 왜 시각화를 해야할까요? CNN의 성능은 뛰어나지만 왜 그런 의사결정을 했는지 설명하는 능력이 매우 떨어집니다. 방대한 수치 계산으로 의사결정이 이루어져서 의사결정에 대한 이유를 해석할 방법이 없기 때문입니다. 설명 가능을 달성하려는 많은 연구 결과가 있는데, 커널과 특징 맵의 시각화는 가장 낮은 수준의 방법입니다. 낮은 수준이지만 쉽게 적용이 가능하고, 많은 정보를 주기 때문에 애용하는 방법입니다. 코드와 실제 예시는 나중에 글로 쓰겠..

[머신러닝 - 이론] 합성곱 신경망과 컴퓨터 비전 (CNN : Convolution Neural Network, Conputer Vision)

1. CNN의 시작 컴퓨터 비전은 인공지능의 가장 중요한 연구 분야 중 하나입니다. 시각은 인간의 가장 강력한 인지 기능이고, 컴퓨터 비전은 인간의 시각 기능을 모방합니다. 그렇다면 인간의 시각 기능이 어떻게 작동하는지를 먼저 알아야 합니다. 여러분들은 지금 이 글에 집중하고 계실 겁니다. 그러면 옆에 있는 침대, 책상, 책들도 보이실 텐데 흐릿하죠. 결국 시각은 집중하고 있는 field에만 명확히 인식할 수 있습니다. 실제로 시각 피질 안에 많은 뉴런들이 있는데, 어떤 뉴런은 수평선의 이미지에만, 어떤 뉴런은 수직선의 이미지, 또 다른 애는 다른 각도의 선분에만 반응합니다. 또 어떤 뉴런은 큰 수용장을 가져서 더 복잡한 패턴에 반응합니다. 즉 결론적으로 뉴런들은 각기 집중하는 field가 있고, 이 f..

[머신러닝 - 이론] 지금까지의 내용 정리

지금까지 내용을 간략히 정리하고 가겠습니다. 인공지능 : 인간의 지능이 가지는 학습, 추리, 논증 따위의 기능을 갖춘 시스템 인공지능은 강한 인공지능과 약한 인공지능으로 나뉜다 인공지능의 접근 방법 과학적 : 인간의 지능을 충분히 연구한다음 그 원리를 충실히 모방하는 기계 제작 공학적 : 쓸만한 지능 기계를 만들 수 있다면 인간의 지능 원리를 따르지 않아도 됨 규칙 기반 방법론 : 사람이 사용하는 규칙을 수집하여 프로그래밍(if-else) 하지만 규칙을 위반하는 샘플이 발생함 기계 학습 방법론 : 충분한 데이터를 수집 -> 기계가 스스로 규칙을 찾아내 학습하는 방법 딥러닝 방법론 : 기계 학습은 특징까지 수작업으로 알아내야하지만, 딥러닝은 특징마저 스스로 알아냄 머신러닝의 데이터의 중요성 데이터가 없으면..

[머신러닝 - 이론] 최적의 하이퍼 파라미터 찾기, 모델을 다듬는 방법 (Find Hyper Parameter, Fine-Tune Model)

하이퍼 파라미터는 너무나도 많습니다. 옵티마이저 기법, 손실 함수, 활성화 함수, 은닉층 개수, 노드 개수 등등 너무나도 많습니다. 심지어 하나의 파라미터에도 들어갈 수 있는 옵션들이 많습니다. 이때 하나하나 일일이 타이핑하면서 찾아야할까요?? 이번에는 간단하게 하이퍼 파라미터를 찾는 Grid Search와 Randomized Search에 대해 알아봅시다. Grid Search는 리스트 안에 딕셔너리 형태로 적용할 수 있습니다. [ { 하이퍼 파라미터_1 : [ 옵션들 ] }, { 하이퍼 파라미터_2 : [ 옵션들 ] } ] 이런 식으로 말이죠 이를 sklearn에서 제공하는 GridSearch에 넣으면 옵션들을 하나하나 다 적용하면서 최적값을 찾아줍니다. 장점은 알아서 더 좋은 파라미터를 찾아주지만,..