전체 글

· 인공지능
일반적인 신경망 일반적으로 신경망은 다음과 같이 표현된다. 가장 외쪽이 입력층, 가장 오른쪽이 출력층 그리고 가운데 층들은 은닉층이라고 부른다. 오른쪽에 작은 원은 활성화 함수이다. 단일층은 은닉층이 없이 입력층 출력 층만 존재하는 모델이라 생각하면 된다. 단일층의 모델은 다음과 같다. 앞에서 구현한 LogisticNeruon을 조금 변형하여 단일층 신경망을 만들어 보자. 손실 함수 결과 저장 변수를 추가하여 손실 함수의 결과값을 저장할 리스트 self.losses를 만든다. 샘플마다 손실 함수를 계산하고 평균을 내어 저장한다. 하지만 np.log( )계산을 위해 한번 더 조정해야 한다. a가 0에 가까워지면 -∞에 가까워지고, 1에 가까워 지면 0에 가까워지기 때문에 np.clip( )를 이용해 조정한..
· Python/numpy
넘 파이란? NumPy는 대규모 다차원 배열을 쉽게 처리할 수 있도록 지원하는 파이썬의 라이브러리이다. NumPy는 데이터 구조 외에도 수치 계산을 위해 효율적으로 구현된 기능을 제공한다. 기초 및 사용법 import numpy as np 우선 모듈을 설치한 뒤 import를 해야 한다. 흔히들 np라고 alias를 지어 사용한다. 정의에서도 알 수 있듯이 배열을 다루는 모듈이기에 아주 기본적인 1차원 배열을 만들어 보겠다. import numpy as np x = np.array([1,2,3,4]) print(x) print(type(x)) 결과는 다음과 같다. 1차원 배열이 생성된 것을 확인할 수 있다. 하지만 타입을 출력해보니 'numpy.ndarray'라고 출력이 되었다. 기존 list와는 생김새..
· 인공지능
로지스틱 회귀 뉴런 만들기 우선 __init__(), forpass(), backprop()은 앞서 만든 뉴런과 별로 다르지 않다. class LogisticNeuron: def __int__(self): self.w = None self.b = None def forpass(self, x): z = np.sum(x * self.x) + self.b return z def backprop(self, x, err): w_grad = x * err b_grad = 1 * err return w_grad, b_grad forpass에서 np.sum은 numpy모듈에서 sum이라는 메서드를 이용하여 가중치와 입력의 곱을 더하는 것이다. 훈련 활성화 함수라는 것이 추가되었기 때문에 fit()함수를 조정해야 한다...
· 인공지능
로지스틱 손실 함수 로지스틱 손실 함수는 다중 분류를 위한 손실 함수인 크로스 엔트로피(cross entropy) 손실 함수를 이진 분류 버전으로 만든 것이다. a를 활성화 함수가 출력한 값이고 y는 타깃이라 하자. L = -( y * log(a) + (1 - y) * log(1-a)) 그렇다(1), 아니다(0)라는 식으로 2개의 정답만 있기 때문에 왼쪽과 오른쪽이 반대가 되는 상황입니다. 식을 최소로 만들다 보면 a의 값이 우리가 원하는 목표치가 된다. 이제 가중치와 절편을 찾기 위해 미분만 하면 된다. 로지스틱 손실 함수 미분하기 로지스틱 손실 함수를 미분하면 다음과 같다. 함수를 기울기(가중치)와 절편에 대해 편미분을 진행하면 다음 식이 나온다. 이 식을 자세히 보면 앞에서 사용한 제곱 오차를 미분..
· Python
클래스와 객체 - 객체: 데이터와 이를 처리하기 위한 메서드의 묶음 - 클래스: 객체를 만드는 형틀 혹은 포멧 클래스로부터 만들어지는 객체를 그 클래스의 인스턴스(instance)라 한다. 클래스 정의하기 class라는 키워드로 시작하고 __init__( )라는 생성자 메서드를 가진다. 객체 생성 클래스 이름으로 호출하면 객체가 생성된다. 프라이빗 멤버와 퍼블릭 멤버 클래스 안에서는 크게 두 가지 멤버가 존재한다. 하나는 클래스 안에서만 접근 가능한 프라이빗 멤버, 다른 하나는 클래스 안과 밖에서 모두 접근 가능한 퍼블릭 멤버 멤버 앞에 __키워드를 붙이면 프라이빗 멤버가 된다. 클래스 멤버 클래스의 메서드 밖에서 선언한 변수로 해당 클래스에서 관리하는 멤버이다. 클래스 이름으로 접근해야 하며 객체로 접..
· 인공지능
시그모이드 역할 z = b + ∑ w_i x_i로 표현할 수 있다. z는 활성화 함수를 통과하여 a가 된다. 이때 시그모이드 함수는 z를 0~1 사이의 확률 값으로 변환시켜준다. 시그모이드 함수는 오즈비 → 로짓 함수 → 시그모이드 함수를 거쳐 탄생한다. 오즈비 오즈 비는 성공확률과 실패 확률의 비율을 나타내는 통계이다. 오즈 비를 그래프로 그리면 다음과 같다. 성공 확률이 0부터 1까지 증가할 때 오즈 비의 값은 처음에는 천천히 증가하지만 1에 가까워지면 급격히 증가한다. 로짓 함수 오즈 비에 로그 함수를 취하여 만든 함수를 로짓 함수라고 한다. 로짓 함수는 p가 0.5일 때 0 이되고 p가 0과 1일 때 각각 무한대로 음수와 양수가 된다. 이제부터 logit(p)를 z라 하자 로지스틱 함수 위 식을 ..
· 인공지능
로지스틱 회귀를 제대로 이해하기 위해서는 먼저 알아볼 개념이 몇 가지 있다. 그중 하나는 퍼셉트론이다. 퍼셉트론이란? 1957년 코넬 항공 연구소의 프랑크 로젠블라트는 이진 분류 문제에서 최적의 가중치를 학습하는 알고리즘을 발표했다 이것이 퍼셉트론이다. 선형 회귀와 유사하게 직선 방정식을 사용한다. 하지만 퍼셉트론은 마지막 단 게에서 샘플을 이진 분류하기 위하여 계단 함수를 사용한다. 계단 함수를 통과한 값을 다시 가중치와 절편을 업데이트하는 데 사용한다. 위 구조를 방정식으로 표현하면 w1x1 + w2x2 + b = z이다. z가 0보다 크거나 같으면 1로, 0보다 작으면 -1로 분류한다. 이때 1로 분류되는 걸 양성 클래스, -1을 음성 클래스라고 한다. 아달린 퍼셉트론에서 조금 더 개선한 적응형 선..
hvv_an
이미난