본문 바로가기

728x90

그 땐 AI했지/그 땐 DeepLearning했지

(20)
[TAVE/밑딥] ch03 신경망 | 04 3층 신경망 구현하기 참고자료: 밑바닥부터 시작하는 딥러닝 1. 표기법 설명 👉🏻표기법은 다음과 같다. 하나씩 살펴보자! 👉🏻가중치와 은닉층 뉴런의 오른쪽 위에 '(1)'이 붙어있다. 이는 1층의 가중치, 1층의 뉴런임을 뜻하는 번호이다. 👉🏻가중치의 오른쪽 아래 두 숫자는 차례로 다음 층 뉴런의 인덱스와 앞 층 뉴런의 인덱스 번호이다. 2. 각 층의 신호 전달 구현하기 1층으로 가는 과정을 구현해보자 👉🏻편향(b)을 뜻하는 뉴런이 추가 되었다. 편향 뉴런은 하나이기 때문에 오른쪽 아래 인덱스가 하나밖에 없다. 👉🏻수식은 다음과 같다. a1(첫 은닉층의 첫 뉴런) = x1 * 가중치 + x2 * 가중치 + 편향 👉🏻행렬의 곱을 이용해 가중치 부분을 간소화했다. 이를 넘파이의 다차원 배열을 이용해 구현하면 다음과 같다. imp..
[TAVE/밑딥] ch03 신경망 | 03 다차원 배열의 계산 참고자료: 밑바닥부터 시작하는 딥러닝 1. 다차원 배열 import numpy as np A = np.array([1, 2, 3, 4]) print(A) #[1 2 3 4] print(np.ndim(A)) #1 print(A.shape) #(4,) print(A.shape[0]) #4 👉🏻넘파이로 1차원 배열을 구현해보았다. np.dim(): 배열의 차원 수 shape: 배열의 형상 B = np.array([[1, 2], [3, 4], [5, 6]]) print(B) #[[1 2] # [3 4] # [5 6]] print(np.ndim(B)) #2 print(B.shape) #(3, 2) 👉🏻넘파이를 통해 3x2 배열을 구현했다. 2차원 배열은 특히 행렬이라고 부른다. 2. 행렬의 곱 👉🏻행렬을 곱하는 ..
[TAVE/밑딥] ch03 신경망 | 02 활성화 함수 참고자료: 밑바닥부터 시작하는 딥러닝 💡 활성화 함수는 임계값을 경계로 출력이 바뀌는데, 이런 함수를 계단 함수라고 한다. 그렇다면 계단 함수 이외의 함수를 사용하면 어떻게 될까? 신경망에서 이용하는 활성화 함수를 알아보자! 1. 시그모이드 함수 👉🏻신경망에서 자주 이용하는 활성화 함수이다. 신경망에서 입력을 받으면 해당 함수를 이용해 신호를 변환하고 출력을 돌려주는 변환기이다. 2. 계단 함수 구현하기 파이썬으로 계단 함수를 이해해보자! def step_fuction(x): if x > 0: return 1 else: return 0 👉🏻계단 함수를 단순하게 구현하면 다음과 같다. 하지만 인수 x는 실수(부동소수점)만 받아들이기 때문에 넘파이 배열도 지원하도록 수정이 필요하다. def step_fuct..
[TAVE/밑딥] ch03 신경망 | 01 퍼셉트론에서 신경망으로 참고자료: 밑바닥부터 시작하는 딥러닝 1. 신경망의 예 입력층 은닉층: 은닉층의 뉴런은 사람 눈에는 보이지 않는다. 출력층 💡신경망은 총 3개의 층으로 구성되지만 가중치를 갖는 층은 2개뿐이므로 '2층 신경망'이라고 한다. 2. 퍼셉트론 복습 b: 편향, 뉴련이 얼마나 쉽게 활성화되느냐를 제어한다. w1, w2: 각 신호의 가중치, 각 신호의 영향력을 제어한다. 👉🏻x1, x2, 1이라는 2개의 신호를 입력 받아 각 신호에 가중치를 곱한 후, y를 출력하는 퍼셉트론이다. 그리고 신호를 받는 뉴런이 이 신호들의 값을 더하여 합이 0을 넘으면 1을, 그렇지 않으면 0을 출력한다. 👉🏻편향 입력 신호는 항상 1이다. 👉🏻식은 아래와 같다. h(x)라는 식을 통해 각 신호들의 값을 계산을 한다. 이 h(x)의 ..
[TAVE/밑딥] ch02 퍼셉트론 | 06 NAND에서 컴퓨터까지 참고자료: 밑바닥부터 시작하는 딥러닝 1. NAND에서 컴퓨터까지 👉🏻이론상 2층 퍼셉트론을 이용하면 '컴퓨터'마저 표현할 수 있다. 비선형인 시그모이드 함수를 활성화 함수로 이용하면 가능하다.
[TAVE/밑딥] ch02 퍼셉트론 | 05 다층 퍼셉트론이 충돌한다면 참고자료: 밑바닥부터 시작하는 딥러닝 1. 기존 게이트 조합하기 XOR 게이트를 만들기 위해 AND, NAND, OR 게이트를 조합하면 된다. 👉🏻 AND, NAND, OR 게이트를 조합해서 만든 XOR 게이트는 위와 같다. x1 x2 s1 s2 y 0 0 1 0 0 1 0 1 1 1 0 1 1 1 1 1 1 0 1 0 👉🏻NAND의 출력을 s1, OR의 출력을 s2로 해서 만든 진리표이다. 2. XOR 게이트 조합하기 def XOR(x1, x2): s1 = NAND(x1, x2) s2 = OR(x1, x2) y = AND(s1, s2) return y 👉🏻파이썬으로 구현하면 다음과 같다. 👉🏻XOR은 2층 퍼셉트론으로 층이 여러 개인 퍼셉트론을 다층 퍼셉트론이라고 한다. 0층의 두 뉴런이 입력 신호를..
[TAVE/밑딥] ch02 퍼셉트론 | 04 퍼셉트론의 한계 참고자료: 밑바닥부터 시작하는 딥러닝 1. 도전! XOR 게이트 📌XOR 게이트: 배타적 논리합이라는 논리 회로이다. x1과 x2 중 한 쪽이 1일 때만 1을 출력한다. x1 x2 y 0 0 0 1 0 1 0 1 1 1 1 0 👉🏻해당 게이트는 퍼셉트론으로 구현할 수 없다. 2. 선형과 비선형 👉🏻퍼셉트론은 직선 하나로 나눈 영역만 표현할 수 있다는 한계가 있다. 👉🏻곡선의 영역을 비선형 영역, 직선의 영역을 선형 영역이라고 한다.
[TAVE/밑딥] ch02 퍼셉트론 | 03 퍼셉트론 구현하기 참고자료: 밑바닥부터 시작하는 딥러닝 1. 간단한 구현부터 def AND(x1, x2): w1, w2, theta = 0.5, 0.5, 0.7 tmp = x1 * w1 + x2 * w2 if tmp theta: return 1 👉🏻앞선 논리회로를 파이썬으로 구현하면 다음과 같다. 2. 가중치와 편향 도입 이전에 구현한 코드를 수정해보자! 👉🏻여기서 b는 편향이다. import numpy as np x = np.array([0, 1]) w = np.array([0.5, 0.5]) b = -0.7 print(np.sum(w * x) + b) #-0.19999999999999996 3. 가중치와 편향 구현하기 import numpy as np def AND(x1, x2): x = np.array([x1, x2..

728x90