일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
- 백준
- flag
- picoCTF
- PHP
- 신경망
- Apache2
- 오차역전파법
- 우분투
- PostgreSQL
- 기울기
- Python
- C언어
- 설치
- PICO CTF
- 신경망 학습
- 역전파
- 딥러닝
- 파이썬
- HTML
- 리뷰
- 순전파
- 코딩
- FastAPI
- 소프트맥스 함수
- AdaGrad
- Python Challenge
- 아파치
- 책
- sgd
- CTF
- Today
- Total
목록전체 글 (160)
Story of CowHacker

Oreilly시리즈 책중 파이썬 라이브러리를 활용한 머신러닝이라는 책이다. 책 정보 지은이 : 안드레아스 뮐러, 세라 가이도 옮긴이 : 박해선 출판사 : 한빛미디어 책의 쪽수는 479다. 책 표지에 있는 동물은 헬벤 더 도롱뇽이다. 서직지 : 저면이 바위로 된 개울 크기 : 최대 74cm ( 아메리카에서 가장 큰 양서류다. ) 이름 : 헬벤 더, 아메리카 장수 도롱뇽, 악마 개 특징 : 처음 발견 시 지옥에서 온 악마 같은 느낌이 있다 하여 헬 밴더라고 호명했다. 머신러닝에 대한 기본 개념을 잘 알려주는 책인 거 같다. 특히 복잡한 수학 공식을 배우지 않았어도 머신러닝 관점으로 설명해 쉽게 접근이 가능한 거 같다. 번역 개정판이라 그런지 책에 모든 내용 그래프, 그림 등이 컬러로 돼있다.

백준 동전 0이라는 문제를 풀어 봤다. 이 문제가 나한테는 설탕 배달 문제와 ATM문제가 섞인 느낌의 문제였다. 즉 앞에 두 문제를 이해하고 풀 수 있어야 하는 것 같았다. coins, price = map(int,input().split()) # 동전 종류 수와 가격을 띄어쓰기 기준으로 각각 입력 받는다. count = 0 # 구할려는 동전의 갯수다. priceslist = [] # 동전의 종류들을 담을 케이스다. countlist = [] # 구할려는 동전의 갯수를 담을 케이스다. ############################################## for _ in range(coins): # 동전 종류수 를 기준으로한 for문을 생성한다. prices = list(map(int,inp..

백준 문제 ATM을 풀어 볼려고 한다. 처음에 문제 이해 하기가 좀 햇갈렸다. 사람 순서, 시간 순서 이 두개가 너무나도 햇갈려하는 나였다. a = int(input()) # 처음 사람의 수를 a에 받아둔다. timelist = list(map(int, input().split())) # 사람마다 걸리는 시간들을 리스트로 한번에 받아둔다. s = 0 # 걸리는 시간을 합치기 위한 초기 값이다. slist = [] # 걸린 시간을 리스트에 담기위한 리스트다. while True: # while문의 무한루프를 생성한다. timelist = sorted(timelist) # 걸리는 시간들의 리스트를 오름차순으로 정렬시킨다. s += timelist[0] # 가장 작은 시간인 0번째 원소를 s에 더해나간다. s..

백준 설탕 배달 문제를 풀어봤다. a = int(input()) #가져갈 설탕 kg 수다. count = 0 # 가져갈 설탕 총 갯수다. while True: # while문 무한루프를 생성한다. if a % 5 == 0: # 설탕의 kg수가 5로 나누었을때 나머지가 0이면 if 진입한다. s = a // 5 # 가져갈 설탕 kg수 나누기 5를 한수를 s에 넣는다. count = count + s # 가져갈 설탕 총 갯수에 s 값을 더한다. print(count) # 가져갈 설탕 총 갯수를 출력한다. break # 출력후 while문 무한루프를 중지한다. a -= 3 # 가져갈 설탕 kg수 에서 3 ( kg ) 을 뺀다. count += 1 # 여기에 도달할시 가져갈 설탕의 총 갯수를 1개 올린다. if..

앞에서 알아본 모멘텀, AdaGrad를 합진 기술의 이름은 Adam이다. 이 Adam을 먼저 파이썬으로 구현해볼 것이다. Adam 코드 class Adam: """Adam (http://arxiv.org/abs/1412.6980v8)""" def __init__(self, lr=0.001, beta1=0.9, beta2=0.999): self.lr = lr self.beta1 = beta1 self.beta2 = beta2 self.iter = 0 self.m = None self.v = None def update(self, params, grads): if self.m is None: self.m, self.v = {}, {} for key, val in params.items(): self.m[ke..

이번에는 저번에 알아본 모멘텀 보다 더 발전한 AdaGrad에 대해 알아보겠다. AdaGrad란? 개별 매개변수에 적응적으로 학습률을 조정하면서 학습을 진행한다. 그림 1은 AdaGrad를 수식으로 표현한 것이다. W는 갱신할 가중치 매개변수다. ∂L/∂W은 W에 대한 손실 함수의 기울기다. η는 학습률을 뜻한다. h는 기존 기울기 값을 제곱하여 계속 더해준다. 매개변수를 갱신할 때 1/루트 h을 곱해 학습률을 조정한다. 이제 이것을 파이썬 코드로 구현해보겠다. AdaGrad 코드 import numpy as np class AdaGrad: """AdaGrad""" def __init__(self, lr=0.01): self.lr = lr self.h = None def update(self, param..

이번에는 저번 글에서 알아본 SGD의 단점을 보완한 방법 중 모멘텀에 대해 알아보겠다. 모멘텀은 운동량을 뜻하는 단어다. 그림 1을 보면 두 개의 수식이 있는데 첫 번째 수식은 모멘텀을 수식화 한 것이고 두 번째 수식은 간소화한 수식이다. 이제 이것을 파이썬으로 구현해보겠다. 참고로 이 코드는 밑에 출처를 참고했다. 출처 : https://github.com/WegraLee/deep-learning-from-scratch WegraLee/deep-learning-from-scratch 『밑바닥부터 시작하는 딥러닝』(한빛미디어, 2017). Contribute to WegraLee/deep-learning-from-scratch development by creating an account on GitHu..

이번에는 확률적 경사 하강법 , SGD에 대해 알아보겠다. 그림 1은 SGD를 수식으로 나타낸 것이다. W는 갱신할 가중치 매개변수고 뒤에 빼는 분자 분모는 손실 함수의 기울기다. 이것을 파이썬으로 구현해보겠다. SGD 파이썬 코드 class SGD: def __init__( self, lr = 0.01 ) : self.lr = lr def update ( self, params, grads ) : for key in params.keys() : params [ key ] -= self.lr * grads [ key ] 위 코드를 해석해보면 초기화받는 인수 lr은 learninig rate ( 학습률 )를 뜻한다. 이것을 인스턴스 변수로 유지한다. update 메서드는 SGD 과정에서 반복해서 불린다. ..