본문 바로가기

전체 글 37

수학 공식을 만드는 인공지능(AI) 수학 공식을 만드는 인공지능(AI) 오랫동안 수학의 역사를 살펴보면 가설(Conjecture)은 천재들의 전유물이었다. 지난 100년동안 발견한 중요한 수학 공식은 수십개에 불과했다. 또한 많은 수학자들이 하나의 공식을 생성하기 위해 몰두하고 있다. 그러나 최근 AI 가 이를 대신하기 시작했다. 지난 10일 미 과학 전문지 'ZME사이언스'는 테크니온 이스라엘 공과대학에서 지난 2019년 개발한 인공지능이 당초 목표대로 가설(Conjectures)을 생성하기 시작했다고 보도했다. 이는 수학자들이 해야 할 새로운 추측을 컴퓨터가 대신할 수 있다는 것을 말해주고 있다. 알고리즘이 많은 양의 데이터 패턴을 감지하는 기계 학습은 이미지 인식에서 신약 발견에 이르기까지 다양하게 적용돼 왔다. 그러나 보다 더 근본.. 2021. 2. 27.
[백준,Python]7576번 토마토(Graph Search/BFS, 시간초과 해결) [백준,Python]7576번 토마토(Graph Search/BFS) www.acmicpc.net/problem/7576 7576번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N이 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M,N ≤ 1,000 이다. 둘째 줄부터는 하나의 상자에 저장된 토마토 www.acmicpc.net 테스트 케이스들을 모두 통과하도록 코드를 짰지만 , 반복문이 많이 들어가서 불안했는데 '시간초과'가 발생하였다. 시간초과가 발생했던 코드와 개선하여 효율적으로 짠 코드를 비교해가며 이번 문제를 설명하려 한다. 1. 처음 코드( 시간 초과) import sys input = sys.stdin.readline m,n = map(i.. 2021. 2. 21.
[자료구조]Stack, Queue, Deque [자료구조]Stack, Queue, Deque 알고리즘 문제를 풀다 보면 자료구조를 활용하여 효율적인 코드를 짤 수 있는 경우들을 볼 수 있다. 예전에 배웠던 내용들인 자료구조에 대한 이해가 부족하고 복습을 할 겸 내용을 정리해 보려고 한다. 스택(stack) 스택은 젠가 모형과 같이 차곡차곡 쌓아 올린 자료구조를 말한다. 같은 구조와 크기의 자료를 정해진 방향으로만 쌓을 수 있고, top으로 정한 곳을 통해서만 접근을 할 수 있다. 즉 삽입하거나 삭제하거나 등 자료를 처리해야 하는 상황에서 top에 있는 데이터만 접근을 하여 push나 pop을 진행할 수 있다는 것이다. 따라서 후입선출방식인 Last In First Out 구조이다. 활용 예) - 웹페이지 뒤로가기 - 실행 취소(undo) : 가장 나.. 2021. 2. 21.
[백준,Python]15903번 카드 합체 놀이(Greedy) [백준,Python]15903번 카드 합체 놀이(Greedy) www.acmicpc.net/problem/15903 15903번: 카드 합체 놀이 첫 번째 줄에 카드의 개수를 나타내는 수 n(2 ≤ n ≤ 1,000)과 카드 합체를 몇 번 하는지를 나타내는 수 m(0 ≤ m ≤ 15×n)이 주어진다. 두 번째 줄에 맨 처음 카드의 상태를 나타내는 n개의 자연수 a1, www.acmicpc.net 이번 문제의 알고리즘은 Greedy이고, 1. 처음 푼 풀이와 2. 효율적인 풀이를 비교하며 설명하려고 한다. 1. 처음 푼 풀이 import sys input = sys.stdin.readline a,b = map(int, input().split()) card = list(map(int,input().spli.. 2021. 2. 19.
[백준,Python]16953번 A->B(Greedy) [백준,Python]16953번 A->B(Greedy) www.acmicpc.net/problem/16953 16953번: A → B 첫째 줄에 A, B (1 ≤ A < B ≤ 109)가 주어진다. www.acmicpc.net 이번 문제는 빠른 시간안에 문제 해결을 하였지만, 시간 초과 문제로 여러가지 고민을 하게 만들었던 문제이다. 문제 해결 알고리즘은 B를 처음에 10으로 나눈 나머지가 1인 것 체크하고 다음으로 2로 나눈 나머지가 0 인것들을 체크하여 b를 계속 수정하여 A에 도달하게 만들도록 구현하였고, 첫번째 코드는 시간초과, 두번째 코드는 그 문제를 해결한 코드이다. 처음 코드(시간초과) import sys input = sys.stdin.readline().strip a,b = map(int.. 2021. 2. 12.
2. Pytorch 미분 연산 개념 2. Pytorch 미분 연산 개념 딥러닝 연산에서 파라미터를 업데이트할 때마다 Descent Method라는 미분값이 필요한 연산을 하기 때문에 이 미분에 대한 개념을 잡고 시작하는 것이 중요하다. 그러면 , 그 딥러닝에서 미분을 계산하는 원리를 살펴보자. 순서가 : 변수 선언(데이터 입력) -> 모델 내 연산 예측값 산출 -> 손실함수 계산 -> 손실 산출 로 이루어지는데, import torch x = torch.ones(2,2,requires_grad= True) print(x) -> 먼저, torch라이브러리에서 2행 2열짜리 텐서를 생성하고, x에 대해서 연산을 추적 가능하도록 requires_grad = True로 설정하였다. y = x + 1 print(y) z = 2*y**2 res = .. 2021. 1. 20.