일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Mac
- 1101
- pyenv
- streamlit
- 손실함수
- BOJ
- 밑바닥부터 시작하는 딥러닝
- 그리디 알고리즘
- end to end
- 백트래킹
- 9020
- 설정
- 파이썬
- 신경망 학습
- n과 m
- 백준
- 파이싼
- 개발환경
- 재귀
- 실버
- 1002
- 4948
- Python
- 경사하강법
- 가상환경
- 15649
- N-Queen
- 기계학습
- Today
- Total
목록전체 글 (181)
파이톨치
간단한 신경망 구현하기 이렇게 생긴 신경망을 구현해봅시다. 우선 가중치는 학습을 해야하지만 우리는 아직 학습을 모른다고 가정하고 하기에 임의의 가중치를 부여하겠습니다. 위의 모양에서 입력이 2개 출력이 2개가 나오는 구조라 아마 2가지 중 한가지로 분류하는 신경망일 것입니다. 일단 은닉층에서 사용할 활성함수는 시그모이드 함수를 사용할 것 입니다. def sigmoid(x): return 1 / (1+np.exp(-x)) 출력층은 항등함수를 사용할 것인데, 사실 함수를 만들 필요는 없습니다. y = x 함수니까요. 아까 말했듯이, 가중치를 학습하는 방법을 모르니 임의의 가중치를 부여해줄 것 입니다. 이를 함수로 만들면 다음과 같습니다. def init_network(): network = {} networ..
여기부터는 천천히 기억을 더듬어서 작년에 처음 기계학습에 대해 배울 때 여기부터 어려웠던 것 같습니다. 내용이 어려운 것도 있지만 여기부터 알아야 할 내용이 많아져서 그런 것이라고 생각합니다. 때문에 여기부터는 이것을 읽는 사람이 최대한 이해할 수 있도록 노력해야겠습니다. 우선은 간단한 복습을 해야 이 이후의 내용들을 이해하는데 무리가 없을 것 같습니다. 신경망은 다음과 같이 입력층, 은닉층, 출력층이 있습니다. 입력층은 지금 단계에서는 크게 신경쓰지 않아도 되지만 은닉층과 출력층은 어떻게 설계하는지에 따라서 완전히 다른 결과가 나오기도 합니다. (물론 입력도 어떻게 넣느냐에 따라 하나의 논문이 나오기도 한 것 같습니다.) 신경망은 다수의 노드들의 층을 어려개 만들어 놓은 것입니다만, 한가지 퍼셉트론과 ..
시작하기 전에 책을 시작하기 전에 딥러닝이란 무엇이고, 왜 배워야 하는지에 대한 설득이 부족하다고 생각합니다. 저는 그래봐야 학부생이지만, 처음 딥러닝을 알기시작하시는 분들을 위해 조금이나마 이해를 돕기위해서 설명을 해보겠습니다. 우선 딥러닝이 무엇일까요? 한국어로는 심층 학습이라고 합니다만, 용어만 들어서 무엇인지 추측하기란 정말 어렵습니다. 근의 공식이라는 용어로 근의 공식을 알 수는 없는 것처럼 말이죠. 우선 딥러닝을 알기 전에 러닝이라는 단어에 초점을 맞춰봅시다. 러닝은 학습이라는 뜻을 가지고 있습니다. 기계가 학습을 한다는 것 입니다. 예를 들어서, (1,1), (2,2), (3,3)이라는 좌표가 주어졌을 때 다음에 올 좌표가 무엇일까요? 라는 문제가 있을 때 우리는 (4,4)가 다음에 올 좌표..
# 스물에 읽어보는 니체 나는 올해 20살이며 곧 21살이 된다. 책 제목은 마흔에 읽는 니체이지만 "마흔에 읽을 것을 스물에 읽으니 엄청난 이득이 아닐까?" 하는 생각이 든다. 나는 올해 동안 계속해서 누군가 "너는 왜 살아?" 라는 공격적인 질문을 했을 때 어떻게 대답을 해야할지를 찾기 위해 고민을 했다. 내가 생각했던 답은 무언가 이루기 위해서 살아가는 것이었다. 단기적인 목표 혹은 장기적인 목표를 위해서 하루하루 살아가는 것이었다. 하지만 나는 내가 낸 답에 정말 맞는 것인가 하는 의구심이 들었다. 이렇게 산다고 해서 목표를 이루었다고 해서 내가 행복할까 하는 생각이 들었다. 목표를 향해 가는 과정도 너무나 힘들고 포기하고 싶을 때가 많았다. 그럴 때마다 내가 과분한 목표를 세운게 아닐까 하는 생..
# 기술통계 descriptive : 서술하는, 기술적인 이라는 뜻을 가짐 결국 샘플 데이터 셋을 관측해서 분석, 통계적인 추론을 해서 발생하는 현상의 특성을 추청하는 것이다. 동전 던지기를 관측한다거나 과자 한 봉지의 양을 세보는 것이 샘플의 관측이다. 이러한 데이터들은 우리가 알지 못하는 어떤 확률에 의해서 결정된다. 예를 들어 동전 던지깅는 1/2에 가까운 확률이다. 샘플 데이터의 질은 모집단이 중요한 역할을 한다. 이게 무슨 말인지 생각해보자. ## 모집단 우리가 관심 있는 대상의 전체 집합을 말한다. 예를 들어서 전국 마트에서 팔고 있는 홈런볼의 과자 수이다. 하지만 전체 모집단은 너무나 크다 그걸 언제 세고 있겠냐... 그래서 표본을 모으는 샘플링을 한다. 참고로, 전체를 모두 조사하는 것을 ..
프로세서는 한가지 일만 할 수 있다. 프로그램이 여러개 돌아갈 때, 프로세서는 동시에 여러개의 프로그램을 돌리는게 아니라 왔다 갔다 하는 것이다. 왼쪽을 보면서 오른쪽을 볼 수 없으니까, 왼쪽을 봤다가 빠르게 오른쪽을 보는 것과 비슷하다. 우리는 이러한 과정을 Control Flow라고 한다. Control Flow를 바꾸는 방법에는 2가지가 있다고 한다. Jump and branch / Call and return 이다. 뭐 4가지 같아 보이지만 착각이다. 이러한 변화를 주기 위해서 프로그램의 상태를 바꾸어야 한다. 때문에 예외적인 제어 흐름들이 있다. Exceptional Control Flow라는 것이 필요하다. 컴퓨터 시스템의 모든 레벨에 존재한다고 한다. 낮은 레벨에서는 Exceptions가 있..
말로만 많이 듣던 제이쿼리를 배운다. 우선 사용하기 위해서 이것을 입력해주어야 한다. 그리고 제이쿼리를 사용하는 모든 것들은 window.onload = function () { }; $(document).ready()는 window.onload와 동일한 기능 이것이 들어간다. // javascript에서는 1개의 event에 대하여 여러개의 함수를 등록 가능 $(document).ready(function () { alert('First READY'); }); $(document).ready(function () { alert('Second READY'); }); $(document).ready(function () { alert('Third READY'); }); 자바 스크립트는 다음을 쓰면 제이쿼리..
# 프로세스 2가지 추상화를 제공한다. 논리적인 제어 흐름 (logical control flow) 개별 주소 공간(private address space) -> 메모리의 사용, 가상 메모리 개념 하나의 CPU를 사용해도 동시에 사용하게 만들어 주는 것을 멀티 프로세싱이라고 한다. 커널은 프로세서를 스케줄링 해준다. 다들 나름의 논리적인 흐름이 있고 각자의 프로그램 2개를 돌릴 때 2개를 왔다리 갔다리 하면서 돌아간다. 예를 들어서 통화를 하면서 게임을 할 때, 동시에 한다기보다는 빠르게 왔다리 갔다리 할 가능성이 높다. [cpu가 싱글코어 일 때] 왔다리 갔다리 해주는 것을 커널 코드가 담당하는 것이다. # System Call Error Handling 리눅스 시스템 레벨의 함수에서 에러가 나면 -1..