WEBVTT Kind: captions Language: en-US 00:00:00.070 --> 00:00:04.940 … speaker, the first of which is that next week, we have 00:00:04.940 --> 00:00:09.100 a tentative seminar for Wednesday at our usual time – 10:30. 00:00:09.100 --> 00:00:13.420 Jessica Jobe from the Bureau of Reclamation will be coming. 00:00:15.380 --> 00:00:18.900 And then today is GIS day, so there will be an event here 00:00:18.910 --> 00:00:22.220 in the Yosemite conference room at 3:00 p.m. 00:00:22.220 --> 00:00:25.589 So please come out for that if you’re interested. 00:00:25.589 --> 00:00:28.230 The microphone situation will be a little bit different today. 00:00:28.230 --> 00:00:32.640 We only have one microphone. So, when we do Q and A, we will be 00:00:32.640 --> 00:00:36.040 running the microphone to the question asker and then back to the speaker. 00:00:36.040 --> 00:00:41.620 So just be aware of that, and give us some time to do that. 00:00:41.620 --> 00:00:44.440 And, with that, Ruth Harris will be 00:00:44.440 --> 00:00:48.220 introducing today’s speaker, Brad Aagaard. 00:00:50.080 --> 00:00:55.900 [Silence] 00:00:55.900 --> 00:01:00.100 Okay, so I got – as my voice clears – I thought I should start with 00:01:00.100 --> 00:01:02.739 some fun facts about Brad. [laughter] 00:01:02.739 --> 00:01:06.640 So you know Brad the scientist. But I’m not sure if you know 00:01:06.640 --> 00:01:11.460 Brad the athlete. So some information about that will be coming up shortly. 00:01:11.460 --> 00:01:15.040 Also, another Brad fact – and I will be missing some Brad facts. 00:01:15.040 --> 00:01:18.930 I did not receive his RDSR, so I wasn’t able to study up on some things. 00:01:18.930 --> 00:01:22.920 Just – this is kind of things that are common knowledge or I was able to 00:01:22.920 --> 00:01:27.420 easily investigate yesterday by cruising the web. 00:01:27.420 --> 00:01:31.049 So first thing about Brad is that he’s the most likely person 00:01:31.049 --> 00:01:35.320 to receive either a spam or a real email to someone at the USGS. 00:01:35.320 --> 00:01:38.380 And this is because his last name appears first in the alphabet 00:01:38.380 --> 00:01:40.520 of all USGS directories. [laughter] 00:01:40.520 --> 00:01:44.579 So when you are receiving an email, and you go, oh, what is this, 00:01:44.580 --> 00:01:48.520 rest assured that Brad has also received it. [laughter] 00:01:48.520 --> 00:01:52.909 He received his bachelor of science in engineering, and he was the 00:01:52.909 --> 00:01:56.230 top student – top-rated student at Harvey Mudd College. 00:01:56.230 --> 00:01:58.920 And he received that in 1994. 00:01:58.920 --> 00:02:03.540 And something that Brad is very modest about is that he was also a great runner. 00:02:03.549 --> 00:02:07.480 He was their top cross country runner for three years at Harvey Mudd. 00:02:07.480 --> 00:02:09.940 [inaudible] said he ran cross country. 00:02:09.940 --> 00:02:14.400 And, in track, he was an NCAA All- American, which is super impressive. 00:02:14.400 --> 00:02:17.700 And his times are still listed in their all-time top 10 00:02:17.700 --> 00:02:20.660 in the Claremont-Harvey Mudd- Scripps track and field scoreboard. 00:02:20.660 --> 00:02:26.170 So this is 25 years later. He still has these amazing times still listed. 00:02:26.170 --> 00:02:32.170 He then finished his very successful track career and cross country career, 00:02:32.170 --> 00:02:35.650 and he went to a school that’s not as well-known for track and 00:02:35.650 --> 00:02:40.520 cross country – Caltech, where he received his master’s 00:02:40.520 --> 00:02:46.180 in civil engineering in ’95 and his Ph.D. in civil engineering in 2000. 00:02:46.180 --> 00:02:49.040 And even before he graduated, I was receiving these emails about 00:02:49.040 --> 00:02:52.750 this star grad student at Caltech that we absolutely needed at the 00:02:52.750 --> 00:02:55.990 USGS and we needed to know about. So I think I received an early copy 00:02:55.990 --> 00:02:59.730 of his thesis that came into email from a person at the USGS 00:02:59.730 --> 00:03:04.160 who was a big fan and a very, very smart man. 00:03:04.160 --> 00:03:07.020 So I was already very impressed by Brad when he was still a grad student 00:03:07.020 --> 00:03:10.230 and, like, we got to get this guy. We got to get this guy. 00:03:10.230 --> 00:03:14.980 Then he took a Mendenhall postdoc at the USGS in Pasadena in our 00:03:14.980 --> 00:03:18.220 Pasadena office and – where he was a Mendenhall with Dave Wald – 00:03:18.220 --> 00:03:24.920 a big fan too – from 2001 to 2003. Then we lured him up to Menlo Park. 00:03:24.920 --> 00:03:28.320 I don’t know if that was good for everyone else, but it was great for us. 00:03:28.320 --> 00:03:33.000 So Brad’s been in Menlo Park for a bunch of years now, and it’s just 00:03:33.000 --> 00:03:37.140 been great having him here. He’s worked on a lot of different things, 00:03:37.140 --> 00:03:41.080 mostly related – seismologically related – everything from 00:03:41.090 --> 00:03:45.760 top-notch ground motion simulations to investigations of earthquake early 00:03:45.760 --> 00:03:48.920 warning. And he was one of the early adopters of the earthquake early 00:03:48.920 --> 00:03:51.420 warning apps, and I used to get – he was my office neighbor, 00:03:51.420 --> 00:03:56.040 so I used to hear these sounds – 5-4-3-2-1, and then, you know, 00:03:56.050 --> 00:03:57.680 evidence that there was a small earthquake. [laughter] 00:03:57.680 --> 00:04:00.070 Maybe near the Hayward Fault or something like that, or southern 00:04:00.070 --> 00:04:02.310 California. I don’t really know. But I always very calm because 00:04:02.310 --> 00:04:04.601 I knew that Brad would be, you know, on the cutting edge, 00:04:04.601 --> 00:04:07.940 and he would know what to do. So that was nice. 00:04:07.940 --> 00:04:11.210 He served for a number of years – for a few years as the project chief 00:04:11.210 --> 00:04:16.250 of the Earthquake Effects Project. And, as a side note, while in Menlo 00:04:16.250 --> 00:04:20.980 Park, he also ran the Boston Marathon. As his office neighbor, I did not track 00:04:20.980 --> 00:04:24.440 the chip in his shoe, so I saw that he was okay. 00:04:24.440 --> 00:04:27.240 And he – and he finished with a very impressive time of 2 hours 00:04:27.240 --> 00:04:30.460 and 44 minutes, so continuing his track even while – 00:04:30.460 --> 00:04:34.880 his running abilities even while he was a great scientist here with us. 00:04:34.880 --> 00:04:39.871 He’s been on TV and has probably been seen by at least tens of thousands 00:04:39.871 --> 00:04:43.300 of Americans – maybe even millions of Americans – for his simulations 00:04:43.300 --> 00:04:47.000 of the San Andreas Fault 1906 earthquake and then also 00:04:47.000 --> 00:04:49.000 for Hayward Fault simulations. 00:04:49.000 --> 00:04:52.580 And his Hayward Fault simulations went into the HayWired scenario. 00:04:52.580 --> 00:04:55.820 So we’ve been hearing for a bunch of years about the HayWired scenario, 00:04:55.820 --> 00:05:01.420 culminated last year with the press releases and huge publicity. 00:05:01.420 --> 00:05:06.420 But the simulations that Brad did for Hayward scenarios were the 00:05:06.430 --> 00:05:08.940 ones that were taken all the way to engineering implications. 00:05:08.940 --> 00:05:11.770 So we don’t have a lot of our science that actually goes that far, 00:05:11.770 --> 00:05:16.160 but Brad’s science has done that and has done it extremely well. 00:05:16.160 --> 00:05:19.740 In addition to his ground motion stuff that we know him very well for, 00:05:19.740 --> 00:05:23.220 he also has a well-tested finite element code called PyLith, 00:05:23.220 --> 00:05:27.060 and it simulates crustal deformation. He’s worked on that with code 00:05:27.060 --> 00:05:31.230 developers Charles Williams at GNS – nowadays at GNS in New Zealand and 00:05:31.230 --> 00:05:35.940 Matt Knepley at University of Buffalo, and they’ve led a lot of very popular 00:05:35.940 --> 00:05:38.490 science and training workshops on the use of PyLith. 00:05:38.490 --> 00:05:42.100 And PyLith is also part of our dynamic rupture code group at SCEC, 00:05:42.100 --> 00:05:45.800 and it’s done very well. And Brad was one of the early people – 00:05:45.800 --> 00:05:49.660 early leaders in our dynamic rupture code group. 00:05:49.660 --> 00:05:53.060 Related to PyLith, he served governance roles, including on the 00:05:53.060 --> 00:05:56.820 steering committee and other leadership roles of the Computational 00:05:56.820 --> 00:06:01.270 Infrastructure for Geophysics – CIG. And this is the Earth science 00:06:01.270 --> 00:06:03.310 organization in the U.S. that leads the charge in 00:06:03.310 --> 00:06:06.820 best practice computational approaches for geodynamics. 00:06:06.820 --> 00:06:10.400 And he’s also served in leadership roles for SCEC – the Southern 00:06:10.400 --> 00:06:14.780 California Earthquake Center. I appreciate a lot of things about Brad. 00:06:14.780 --> 00:06:17.120 Most importantly, that he’s a very nice person, and that’s, 00:06:17.120 --> 00:06:19.600 for me, the biggest, most important thing. 00:06:19.600 --> 00:06:22.060 He’s a great person. He’s also very smart. 00:06:22.060 --> 00:06:26.700 He’s an excellent driver. [laughter] 00:06:26.700 --> 00:06:30.780 Must have taken that defensive driving class many times. [laughter] 00:06:30.780 --> 00:06:33.480 He’s extremely conscientious, and he’s always enthusiastic and 00:06:33.480 --> 00:06:36.820 helpful to everyone from his co-workers to dignitaries, 00:06:36.820 --> 00:06:40.170 including meeting the former governor of California Jerry Brown, 00:06:40.170 --> 00:06:44.170 to the media and the public. And he always says yes. 00:06:44.170 --> 00:06:47.530 Anyone needing something small to something big, Brad is always there, 00:06:47.530 --> 00:06:49.520 and he’s always super helpful. 00:06:49.520 --> 00:06:52.790 And he makes our Science Center in the USGS look amazing. 00:06:52.790 --> 00:06:55.580 So a very important person. 00:06:55.580 --> 00:06:58.590 He’s the person whom we all want as a leader on our team, as we do 00:06:58.590 --> 00:07:02.960 everything from real life – to real-life earthquake science and response. 00:07:02.960 --> 00:07:05.550 And we’ll miss him a lot. He is moving to Golden, he said, 00:07:05.550 --> 00:07:08.430 on December 20th. But we have to remind him 00:07:08.430 --> 00:07:12.860 that we have the Lodge down the hall. [laughter] Inexpensive lodging. 00:07:12.860 --> 00:07:15.920 And we look forward to him visiting often. 00:07:15.920 --> 00:07:19.700 And today he’s going to talk about using machine learning to improve 00:07:19.700 --> 00:07:22.540 ground motion prediction equations. Thanks. 00:07:22.540 --> 00:07:27.980 [Applause] 00:07:27.980 --> 00:07:31.980 - That introduction was a little longer than necessary. [laughter] 00:07:31.980 --> 00:07:34.780 - It was very nice. - How much time do I have left? 00:07:34.780 --> 00:07:36.560 [laughter] 00:07:36.560 --> 00:07:37.560 - [inaudible] 00:07:38.540 --> 00:07:42.540 - So today I’m going to talk about using artificial neural networks – 00:07:42.550 --> 00:07:46.330 one sort of technique in machine learning to improve 00:07:46.330 --> 00:07:48.740 ground motion prediction equations. 00:07:50.660 --> 00:07:54.820 And I’m going to start by describing ground motion prediction equations. 00:07:54.830 --> 00:07:58.110 For those who may not be intimately familiar with them, they’re used to 00:07:58.110 --> 00:08:03.310 design structures in terms of defining what the ground motion hazard is. 00:08:03.310 --> 00:08:07.220 They model the ground shaking as a function of the earthquake parameters, 00:08:07.220 --> 00:08:10.760 primarily capturing the effects of the earthquake source, the wave 00:08:10.760 --> 00:08:14.730 propagation path, as well as the soil conditions of the site of interest. 00:08:14.730 --> 00:08:18.810 And the ground shaking in these is a very – it’s generally a mean value 00:08:18.810 --> 00:08:22.700 and a standard deviation assuming a log normal distribution. 00:08:23.350 --> 00:08:28.140 Ground motion predictions equations have come a long way in the last 00:08:28.150 --> 00:08:34.400 20 years. This is the Boore, Joyner, and Fumal in 1997 equation. 00:08:34.400 --> 00:08:40.560 It’s quite simple. Equation 1 has 45 coefficients for five periods. 00:08:40.560 --> 00:08:43.790 Similar to Abrahamson and Silva in ’97. 00:08:43.790 --> 00:08:48.820 A few more coefficients – about 75 coefficients for five periods. 00:08:48.820 --> 00:08:52.340 Now, the ground motion data sets have grown extensively. 00:08:52.350 --> 00:08:58.580 This is the date of the records in the 2014 PEER NGA-West2 data set. 00:08:58.580 --> 00:09:02.380 So starting around in the ’30s, we had one record. 00:09:02.380 --> 00:09:05.890 By the 1950s, we had sort of on the order of 10 records. 00:09:05.890 --> 00:09:08.600 By the ’80s, we started to get up into the hundreds. 00:09:08.600 --> 00:09:14.040 And you can see here the ’97 Boore relation used 271 records 00:09:14.040 --> 00:09:18.800 from 20 earthquakes, whereas the 2014 relation used 16,000 records. 00:09:18.800 --> 00:09:25.770 So the data has really exploded in terms of the data available to go into the 00:09:25.770 --> 00:09:30.250 ground motion prediction equations and constrain their functional form. 00:09:30.250 --> 00:09:33.390 And with that explosion of data, people have decided to get – 00:09:33.390 --> 00:09:35.660 let the equations get much more complicated. 00:09:35.660 --> 00:09:41.700 So this the 2014 Boore equation broken up into various terms. 00:09:41.700 --> 00:09:46.980 And, in this case, for five periods, there are a total of 120 coefficients. 00:09:46.980 --> 00:09:53.640 Abrahamson and Silva and Kamai has 155 coefficients for five periods. 00:09:53.640 --> 00:09:58.580 As these equations become – have become much more complicated, 00:09:58.580 --> 00:10:02.610 it becomes sort of difficult to figure out, you know, precisely which terms are 00:10:02.610 --> 00:10:06.980 the most important, how do these terms interact with each other, 00:10:06.980 --> 00:10:10.520 and it’s also become an issue of how to program them. 00:10:10.520 --> 00:10:14.500 Luckily, there is things like the OpenQuake Engine, which provides 00:10:14.500 --> 00:10:20.550 of implementation of them to the community that – of each GMPE. 00:10:22.180 --> 00:10:27.800 Now, this is a sort of relatively famous figure from a Douglas paper that 00:10:27.810 --> 00:10:33.800 Dave Boore has also used to show that, even as we’ve increased the amount 00:10:33.800 --> 00:10:38.050 of data, if you will look over the epistemic uncertainty in PGA and 00:10:38.050 --> 00:10:42.670 spectral acceleration at 1 second, the overall epistemic uncertainty, 00:10:42.670 --> 00:10:46.800 even as we’ve increased the amount of data, has stayed relatively constant. 00:10:46.800 --> 00:10:50.560 So in the sort of the overall uncertainty over the last 40 years in ground motion 00:10:50.560 --> 00:10:55.399 prediction equations, despite adding a lot more terms, a lot more coefficients, 00:10:55.399 --> 00:10:59.589 has really not decreased that much. And part of that is due just to the 00:10:59.589 --> 00:11:03.529 inherent variability in ground motion, and so many earthquakes are 00:11:03.529 --> 00:11:08.580 different than others. And so what we found is that 00:11:08.580 --> 00:11:10.780 it’s becoming difficult to improve ground motion 00:11:10.780 --> 00:11:13.380 prediction using traditional approaches. 00:11:13.380 --> 00:11:16.580 Right now, sort of the main focus of the community is to incorporate 00:11:16.589 --> 00:11:19.640 more records from small magnitude earthquakes to really try and 00:11:19.640 --> 00:11:24.520 constrain the path and site effects. And also include regionalization of 00:11:24.520 --> 00:11:28.029 the ground motion predictions to include sort of local path site effects 00:11:28.029 --> 00:11:32.210 on a aggregate level and separate events from Japan 00:11:32.210 --> 00:11:35.160 from events in California and so forth. 00:11:35.160 --> 00:11:38.820 There are also other ways to improve ground motion predictions. 00:11:38.820 --> 00:11:43.420 One is to just find better formulations for source, path, and site effects. 00:11:43.420 --> 00:11:47.460 There’s also just try and look at different ground motion metrics. 00:11:47.460 --> 00:11:52.580 Spectral acceleration really is more – is not as precise and sensitive to 00:11:52.580 --> 00:11:55.340 the different periods as Fourier amplitude spectra is. 00:11:55.340 --> 00:12:00.150 And so Fourier amplitude spectra has become sort of – in terms of moving 00:12:00.150 --> 00:12:06.060 forward, a more popular ground motion metric to use than spectral acceleration. 00:12:06.940 --> 00:12:10.040 So that leaves sort of the question, how might we use machine learning 00:12:10.040 --> 00:12:14.070 to develop ground motion prediction equations? 00:12:14.070 --> 00:12:17.870 From those equations, we can see that the ground motion is influenced by 00:12:17.870 --> 00:12:22.430 many complex interacting processes. And it’s – as those processes 00:12:22.430 --> 00:12:26.300 particularly interact in different ways, like site effects, path effects, 00:12:26.300 --> 00:12:28.899 and rupture parameters, it becomes difficult to 00:12:28.900 --> 00:12:33.089 describe these in some mathematical form. 00:12:34.280 --> 00:12:38.200 And, as well as, as our ground motion data sets have grown, 00:12:38.200 --> 00:12:43.700 there’s less need for extrapolation. So machine learning then can be 00:12:43.709 --> 00:12:47.209 used in sort of two main ways. One is sort of the model itself of 00:12:47.209 --> 00:12:50.710 our ground motion predictions. The general form provided by an 00:12:50.710 --> 00:12:55.290 artificial neural network may help us facilitate parameterizing some of 00:12:55.290 --> 00:12:59.279 those very complex interactions. And then sort of using neural networks 00:12:59.279 --> 00:13:03.020 for machine learning in terms of the discovery, it can help determine 00:13:03.020 --> 00:13:05.800 which are the best predictor variables as well as how to 00:13:05.800 --> 00:13:09.320 regionalize ground motion prediction equations. 00:13:10.280 --> 00:13:14.420 So now I’m going to switch gears for about the next five minutes and give 00:13:14.420 --> 00:13:18.810 some – sort of an overview of machine learning, zeroing in sort of starting from 00:13:18.810 --> 00:13:24.090 the very sort of more popular side of things, give some examples related to 00:13:24.090 --> 00:13:27.850 geophysics, and then also to list some of the software tools that are now 00:13:27.850 --> 00:13:30.570 very readily available, along with documentation 00:13:30.570 --> 00:13:34.880 and tutorials that really makes it a lot easier to get started. 00:13:34.880 --> 00:13:39.480 So there’s really two main types of machine learning algorithms. 00:13:39.480 --> 00:13:44.880 There’s supervised learning, where we want to find some function that 00:13:44.880 --> 00:13:51.300 satisfies – given inputs, we get – given inputs, x, we get outputs, y. 00:13:51.300 --> 00:13:53.470 And then we’re given a whole lot of observations 00:13:53.470 --> 00:13:57.610 of inputs and their outputs to constrain f. 00:13:57.610 --> 00:14:01.970 And so this can be used in sort of two main algorithms. 00:14:01.970 --> 00:14:06.900 One is classification of, you know, is this email spam, 00:14:06.900 --> 00:14:13.840 or is it a legitimate email? Is this image a boat, a plane, a car? 00:14:13.850 --> 00:14:16.210 And then there’s sort of more regression, which is what we use in 00:14:16.210 --> 00:14:18.910 ground motion prediction equations, where we have a smooth functional 00:14:18.910 --> 00:14:23.060 form that we want to predict y, such as peak ground acceleration 00:14:23.060 --> 00:14:26.900 as a function of magnitude and distance. 00:14:26.900 --> 00:14:30.820 An alternative type of algorithm is called unsupervised learning. 00:14:30.820 --> 00:14:34.910 And that’s where the algorithm itself tries to learn something about 00:14:34.910 --> 00:14:38.910 the structure of the system. So generally, if given a bunch of just 00:14:38.910 --> 00:14:44.800 information, it is used to find clustering, find features, and you don’t have 00:14:44.800 --> 00:14:50.250 a set of inputs and outputs. It’s just basically turned loose on the data set. 00:14:50.250 --> 00:14:54.280 And it sometimes generates its own data set and, based on some functional 00:14:54.280 --> 00:15:01.620 evaluation, it is used to figure out what the resulting model looks like. 00:15:01.620 --> 00:15:06.200 Now then, this is an image from – or, a diagram from Bergen et al. 00:15:06.220 --> 00:15:10.720 in their Science article showing that – I just highlighted supervised learning 00:15:10.730 --> 00:15:14.260 and unsupervised learning. There’s all sorts of subclasses 00:15:14.260 --> 00:15:18.850 and mixing and matching and all sorts of different applications 00:15:18.850 --> 00:15:22.510 of machine learning. So you see some of these have 00:15:22.510 --> 00:15:26.000 inverse problems, fast simulations, surrogate models, detection, 00:15:26.000 --> 00:15:31.960 classification, domain adaption, feature representation, and so forth. 00:15:31.960 --> 00:15:35.360 So there’s a lot of different algorithms in machine learning. 00:15:35.370 --> 00:15:39.910 More are being developed all the time, and there’s a lot of different applications 00:15:39.910 --> 00:15:45.280 for machine learning. So it’s a very large and rich field and continues to grow. 00:15:46.240 --> 00:15:49.560 Some popular examples of machine learning – many of you may have 00:15:49.560 --> 00:15:54.180 already seen this in various sort of popular news is, you know, given 00:15:54.180 --> 00:16:00.400 a bunch of images, classify them. What objects are in there? 00:16:00.400 --> 00:16:04.520 This is known as – also known as labeling. Another popular one 00:16:04.529 --> 00:16:09.230 recently has been these apps. They use neural networks to, you know, 00:16:09.230 --> 00:16:14.680 age a person and show what they would look like in 20, 30, 40 years. 00:16:16.340 --> 00:16:20.860 Additional examples are used in spam filtering, video surveillance, 00:16:20.860 --> 00:16:24.589 speech and handwriting recognition, product recommendations, things like 00:16:24.589 --> 00:16:29.490 movie recommendations on Netflix, Google – you know, stuff you see – ads, 00:16:29.490 --> 00:16:34.720 fraud protection, customer support – all those – a lot of those bot chats are 00:16:34.720 --> 00:16:40.760 automated machine learning algorithms. Now, in geophysics, there’s a number 00:16:40.760 --> 00:16:44.960 of applications that have used machine learning. 00:16:44.960 --> 00:16:50.320 Zachary Ross and others developed this generalized seismic phase detection 00:16:50.320 --> 00:16:55.310 with deep learning to basically detect P and S waves. 00:16:55.310 --> 00:17:01.370 There’s also – Daniel Trugman used a random force algorithm for a ground 00:17:01.370 --> 00:17:05.409 motion prediction equation in the San Francisco Bay Area. 00:17:05.409 --> 00:17:08.880 There’s been some work on deep learning tomography. 00:17:08.880 --> 00:17:12.840 The challenge there is, sometimes it costs as much to train your model as sort 00:17:12.840 --> 00:17:21.040 of traditional tomographic approaches. Phoebe DeVries, working with Brendan 00:17:21.040 --> 00:17:25.480 Meade and Ben Thompson – they did – basically, they trained a – basically 00:17:25.480 --> 00:17:32.590 a surrogate neural network to act as a 3D viscoelastic relaxation simulation 00:17:32.590 --> 00:17:39.700 to speed up their calculations for sort of Green’s function-type approaches. 00:17:39.700 --> 00:17:46.049 There’s also been, out of Los Alamos, sort of some work trying to look at 00:17:46.049 --> 00:17:50.070 [inaudible] stuff right before earthquakes, and they say they 00:17:50.070 --> 00:17:53.040 can predict laboratory earthquakes. 00:17:53.040 --> 00:17:56.640 Phoebe DeVries has also worked on aftershock patterns, and we’ll come 00:17:56.640 --> 00:18:01.200 back to that at the very end of the talk. So a lot of different applications. 00:18:02.160 --> 00:18:06.379 And a lot of the reason why some of those applications have come up 00:18:06.379 --> 00:18:11.149 is that – is that, with sort of recent open software it’s become quite easy 00:18:11.149 --> 00:18:13.580 to get your hands dirty using machine learning. 00:18:13.580 --> 00:18:16.480 There’s a lot of high-level toolkits that are available. 00:18:16.480 --> 00:18:20.179 I’ve listed several here. These are sort of the most popular – 00:18:20.179 --> 00:18:24.590 the Scikit, PyTorch, and TensorFlow with sort of a higher-end Keras. 00:18:24.590 --> 00:18:27.690 These are all opensource. They have a Python interface. 00:18:27.690 --> 00:18:31.059 They also all – these all have a C++ interface for people who 00:18:31.059 --> 00:18:34.580 want to do very low-level coding. There’s some Java packages. 00:18:34.580 --> 00:18:39.420 A number of people also use MATLAB toolboxes for machine learning. 00:18:41.340 --> 00:18:44.460 So what are some of the issues that we might encounter if we try and 00:18:44.470 --> 00:18:48.110 apply machine learning in developing ground motion predictions? 00:18:48.110 --> 00:18:51.039 Well, the first one is, we still have limited observations close to 00:18:51.039 --> 00:18:54.690 large-magnitude earthquakes. And so, to some extent, we’re still 00:18:54.690 --> 00:18:59.700 left with extrapolating at close distances for large magnitudes. 00:19:00.580 --> 00:19:04.940 Our strong national seismic hazard models provide ground motions 00:19:04.950 --> 00:19:09.739 for a probability of 2% in 50 years. So we really are looking at sort of 00:19:09.739 --> 00:19:13.559 the rare events that – they’re not the typical magnitude 3s and 4s 00:19:13.559 --> 00:19:17.679 that we measure that are really driving our hazard model. 00:19:17.679 --> 00:19:21.190 The form of the GMPE is less connected to the seismology because we’re using 00:19:21.190 --> 00:19:24.460 just a very functional – very general functional form. 00:19:24.460 --> 00:19:28.179 So there’s no explicit equation for the amplitude as a function of 00:19:28.179 --> 00:19:31.539 magnitude and distance. That actually has to be trained 00:19:31.540 --> 00:19:34.600 into the model from the observations. 00:19:34.600 --> 00:19:39.549 However, we can still use seismology to select the form of the input and 00:19:39.549 --> 00:19:41.270 the normalization of the parameters. 00:19:41.270 --> 00:19:45.000 So we can still use physics to help guide the model. 00:19:45.600 --> 00:19:49.060 There have been a number of studies that have developed GMPEs using 00:19:49.060 --> 00:19:52.619 artificial neural networks. Here are – I’ve listed a number of them. 00:19:52.619 --> 00:19:57.850 I think the – sort of the most sort of sophisticated and the closest one 00:19:57.850 --> 00:20:02.000 we have to sort of our current ground motion prediction equations are 00:20:02.000 --> 00:20:06.350 this one by Derras et al. in 2014. There was a GMPE for Europe 00:20:06.350 --> 00:20:09.520 using resource data. They did the mixed effects to 00:20:09.520 --> 00:20:14.700 find both event – inter-event and intra-event residuals. 00:20:14.700 --> 00:20:19.580 And then sort of they – sort of their approach was very similar to a 00:20:19.580 --> 00:20:23.300 traditional ground motion prediction equation. 00:20:23.300 --> 00:20:26.540 Now, most of these studies, along with all the other sort of ground motion 00:20:26.549 --> 00:20:29.909 prediction studies, are listed in this sort of compilation by John Douglas 00:20:29.909 --> 00:20:33.590 that sort of list all the different ground motion prediction equations 00:20:33.590 --> 00:20:37.220 for the last 40 to 50 years. 00:20:38.220 --> 00:20:41.740 So the – and the work that I’m going to show, I’m going to develop a ground 00:20:41.740 --> 00:20:45.120 motion prediction equation for California using machine learning. 00:20:45.120 --> 00:20:48.440 And the question I’m trying to address is, can we reduce the 00:20:48.450 --> 00:20:52.509 uncertainty by letting the neural network determine the form of the 00:20:52.509 --> 00:20:57.499 ground motion prediction equation rather than forcing it into the form of 00:20:57.499 --> 00:21:02.080 a regression equation? I’m using the PEER NGA-West2 database. 00:21:02.080 --> 00:21:05.779 My dependent variables are the PGA, PGV, and spectral response 00:21:05.779 --> 00:21:11.369 at 0.3, 1, and 3 seconds. And I’m going to use Python 00:21:11.369 --> 00:21:16.360 with Keras and TensorFlow to develop the neural network model. 00:21:17.240 --> 00:21:21.080 Data selection is very important in developing a ground motion 00:21:21.080 --> 00:21:24.240 prediction equation, so within the PEER NGA-West2 database, 00:21:24.240 --> 00:21:28.429 I’m using magnitudes greater than 3. Joyner-Boore distance is 00:21:28.429 --> 00:21:32.979 less than 400 kilometers. I’m using – I want to look at 00:21:32.979 --> 00:21:37.179 mean rupture distances, and so I used the data compiled by 00:21:37.179 --> 00:21:40.299 Eric Thompson and Annemarie Baltay. 00:21:40.300 --> 00:21:45.060 And so I require that I have a mean rupture distance for the records. 00:21:45.060 --> 00:21:49.399 This leaves me with over 13,000 records from 288 earthquakes 00:21:49.399 --> 00:21:54.860 and over 3,000 stations. Most of those are within California. 00:21:54.860 --> 00:21:56.970 I did replace missing values as necessary. 00:21:56.970 --> 00:22:00.620 That included the depth of the top of the rupture. 00:22:00.620 --> 00:22:04.620 These are mainly small earthquakes, and so I compute a circular rupture 00:22:04.639 --> 00:22:08.059 using a 3 megapascal stress drop. 00:22:08.059 --> 00:22:11.350 And then, if the sort of basin depth parameters were missing, 00:22:11.350 --> 00:22:16.020 I used – for Z1.0, I used the Chiou and Young’s 2013 proxy. 00:22:16.020 --> 00:22:21.540 For Z2.5, I used the median value of 780 meters. 00:22:21.540 --> 00:22:26.860 So this is a map of the earthquakes I used on the left and the stations 00:22:26.860 --> 00:22:28.919 on the right. So the map of the earthquakes – 00:22:28.919 --> 00:22:33.129 these are some earthquakes outside of California. 00:22:33.129 --> 00:22:36.960 And then I – and you’ll see that the ones that are color-coded, the size of the 00:22:36.960 --> 00:22:39.899 circle corresponds to the magnitude. And then the color corresponds to 00:22:39.899 --> 00:22:42.200 the number of stations for those earthquakes. 00:22:42.200 --> 00:22:46.149 So some of the more recent earthquakes like Hector Mine, Landers, 00:22:46.149 --> 00:22:52.740 El Mayor-Cucapah – you know, Parkfield, they have a lot of records. 00:22:52.740 --> 00:22:56.039 Here’s Loma Prieta. And you’ll notice that some of these 00:22:56.039 --> 00:23:00.669 off in the more distant parts of the state away from the metropolitan areas have 00:23:00.669 --> 00:23:04.789 fewer records even if they’re larger. A lot of this is a function of when 00:23:04.789 --> 00:23:08.419 the earthquake occurred and what the seismic density was. 00:23:08.420 --> 00:23:11.720 On the right side, these are the seismic network stations. 00:23:11.720 --> 00:23:14.440 Very dense in the San Francisco/L.A. areas. 00:23:14.440 --> 00:23:17.990 And I’ve color-coded these based on the number of records at that station – 00:23:17.990 --> 00:23:21.380 or, number of earthquakes recorded by that station that corresponds. 00:23:21.380 --> 00:23:26.019 So, you know, some of these stations out here in sort of the sparser regions 00:23:26.019 --> 00:23:29.549 of California, because they’ve been there for so long, they actually do 00:23:29.549 --> 00:23:33.370 have a number of records – more than 10 earthquakes. 00:23:33.370 --> 00:23:35.619 Some of these area have very few earthquakes 00:23:35.620 --> 00:23:39.020 in the PEER NGA-West database. 00:23:40.100 --> 00:23:42.880 This is a plot of the magnitude and distance. 00:23:42.880 --> 00:23:47.320 And I’ll get back in a few slides to what I mean by training and testing. 00:23:47.320 --> 00:23:53.040 But you can see up to about a magnitude 7.6, pretty good distribution. 00:23:53.040 --> 00:23:55.640 A lot of stations farther than 10 kilometers. 00:23:55.649 --> 00:23:58.630 Not a lot of stations less than 10 kilometers. 00:23:58.630 --> 00:24:02.029 So pretty good coverage out to 200 kilometers. 00:24:02.029 --> 00:24:06.360 And then, for some of the events, out to about 400 kilometers. 00:24:07.980 --> 00:24:11.739 This is the correlation of the common predictor variables that are 00:24:11.739 --> 00:24:19.009 in the NGA-West2 data set. So we have magnitude – different 00:24:19.009 --> 00:24:24.000 distance metrics and then different site parameters – Vs30, depth to the 1, 00:24:24.000 --> 00:24:27.529 and 2-1/2 kilometer per second for different velocity models. 00:24:27.529 --> 00:24:31.970 And then the faulting style parameters – fault dip, fault rake – as well as just 00:24:31.970 --> 00:24:35.559 sort of a category of normal, reverse, or thrust – 00:24:35.560 --> 00:24:39.620 or, normal, reverse, or strike-slip. Sorry. 00:24:39.620 --> 00:24:45.110 So you can see that, you know, overall, sort of the main parameters, distance, 00:24:45.110 --> 00:24:48.580 and magnitude are uncorrelated. But once you get into sort of the 00:24:48.580 --> 00:24:51.460 different site parameters, different distance metrics, you have either 00:24:51.460 --> 00:24:54.659 a very strong correlation or a very anti-correlation. 00:24:54.659 --> 00:24:58.470 This Vs30 you’ll see is anti-correlated with the basin depth. 00:24:58.470 --> 00:25:02.820 When you have a softer material at the surface, you have a deeper basin. 00:25:02.820 --> 00:25:06.710 That’s why it’s anti-correlated. And the training and testing 00:25:06.710 --> 00:25:10.899 data sets – similar correlation. My testing data set is my 00:25:10.900 --> 00:25:13.659 independent data set that I’ll use at the end. 00:25:14.720 --> 00:25:17.580 This is what those distributions look like. So earthquake magnitude – 00:25:17.580 --> 00:25:23.460 a lot of magnitude 4s and then sort of a little – not as many magnitude 5s. 00:25:23.460 --> 00:25:26.800 Relatively similar distributions between my training and testing data sets. 00:25:26.800 --> 00:25:30.659 Magnitude. Joyner-Boore distance. 00:25:30.660 --> 00:25:35.140 Vs30 clustered, as you would expect. 00:25:35.140 --> 00:25:38.180 Z1.0 – that’s the depth to the 1 kilometer per second 00:25:38.190 --> 00:25:41.340 [inaudible] surface depth to 2-1/2 kilometer per second, 00:25:41.340 --> 00:25:44.710 some within basins, outside basins. 00:25:44.710 --> 00:25:48.700 Fault dip. Mostly dominated by strike-slip events. 00:25:48.700 --> 00:25:53.740 Minimum rupture depth, a lot. Surface rupturing ones are obviously at zero. 00:25:54.440 --> 00:25:57.379 So a good distribution of the data. 00:25:57.379 --> 00:26:00.440 And so now let’s start talking about the neural network itself. 00:26:00.440 --> 00:26:03.739 This is what a neural network looks like. So you have inputs – you have what 00:26:03.739 --> 00:26:09.529 we call hidden layers that basically take a function and then take all the 00:26:09.529 --> 00:26:13.809 inputs and apply them to outputs, and then you can keep going on 00:26:13.809 --> 00:26:18.669 multiple hidden layers until you get to your output layer. 00:26:18.669 --> 00:26:22.840 Each layer computes basically a weight times the input plus a bias function 00:26:22.840 --> 00:26:27.510 and passes that through some analytical function. 00:26:27.510 --> 00:26:31.759 And then you just keep doing this however many layers you have. 00:26:31.759 --> 00:26:37.309 You can use multiple hidden layers. Some neural networks have 10 to – 00:26:37.309 --> 00:26:41.399 or more hidden layers. In this case, I’m going to use one hidden layer. 00:26:41.399 --> 00:26:45.399 That’s the simplest model I can use. And it’s really based on the fact that, 00:26:45.399 --> 00:26:50.659 by choice of my phi function, I can represent almost any 00:26:50.660 --> 00:26:54.080 continuous function using one hidden layer. 00:26:54.080 --> 00:26:57.220 And so really it’s basically trying to come up with the 00:26:57.220 --> 00:27:03.800 simplest model that satisfies what the constraints are. 00:27:03.800 --> 00:27:07.760 Particular choice of activation function. I used a hyperbolic tangent. 00:27:07.769 --> 00:27:14.120 This gives a nice, continuous function, and it – for those of you familiar with 00:27:14.120 --> 00:27:19.559 sort of finite elements or general basis functions, it’s a good basis function 00:27:19.559 --> 00:27:23.219 to use in a neural network, or you can think of it as a spline. 00:27:23.219 --> 00:27:26.279 Going to take a bunch of these hyperbolic tangents, put them 00:27:26.279 --> 00:27:32.240 all together at different sizes, sort of like we do with sines and cosines and 00:27:32.240 --> 00:27:37.859 Fourier analysis to develop a very complicated multidimensional function. 00:27:37.859 --> 00:27:42.460 One thing to realize is that, because my outputs go between minus 1 and 1, 00:27:42.460 --> 00:27:46.300 I have the most sensitive when my inputs are between minus 1 and 1. 00:27:46.300 --> 00:27:50.190 So I need to normalize my inputs so they’re in the range of about 00:27:50.190 --> 00:27:54.999 minus 1 to plus 1. And so there’s a lot of different ways to normalize. 00:27:54.999 --> 00:27:58.950 You can just force everything to be minus 1 to 1 by dividing by 00:27:58.950 --> 00:28:01.210 the maximum/minimum values. 00:28:01.210 --> 00:28:04.869 I used what I called a min-max-centered approach, where I subtract the median, 00:28:04.869 --> 00:28:09.679 and then I scale things by the – by the difference between the max and the min. 00:28:09.679 --> 00:28:14.019 So generally, things are minus 1 to 1. They can be slightly skewed if the 00:28:14.019 --> 00:28:16.830 maximum is much greater than the minimum. 00:28:16.830 --> 00:28:20.340 You can use singular value decomposition to decorrelate 00:28:20.340 --> 00:28:23.570 and scale things. I found that that didn’t work as well, 00:28:23.570 --> 00:28:26.560 but the min-max-centered worked quite well. 00:28:27.280 --> 00:28:30.200 So my neural network parameters – my activation function as 00:28:30.200 --> 00:28:33.309 a hyperbolic tangent. Generally, the size of my hidden layers 00:28:33.309 --> 00:28:36.029 is equal to the number of predictor variables. 00:28:36.029 --> 00:28:41.080 My output layer is a simple linear function that passes through the value 00:28:41.080 --> 00:28:45.109 coming in, and it matches the number of dependent variables. 00:28:45.109 --> 00:28:48.789 My optimization algorithm – I’m using the Adam optimizer. 00:28:48.789 --> 00:28:51.869 I used a root mean squared error cost function – the same as 00:28:51.869 --> 00:28:55.360 generally typically used in ground motion prediction equations. 00:28:55.360 --> 00:28:59.630 I randomly shuffle all my records every training epoch. 00:28:59.630 --> 00:29:02.610 And then there’s sort of these – what are called hyper parameters – 00:29:02.610 --> 00:29:06.420 my learning rate, my regularization, and the number of epochs I used. 00:29:06.420 --> 00:29:08.880 These are actually – were found by trial and error as part of the 00:29:08.880 --> 00:29:12.700 cross validation, which I’ll talk about in a minute. 00:29:13.840 --> 00:29:17.359 The nomenclature in machine learning of training, testing, and validation 00:29:17.360 --> 00:29:21.100 is different than what we typically use in modeling. 00:29:21.100 --> 00:29:24.520 Training data is the data that’s used to train the model values. 00:29:24.520 --> 00:29:27.480 Validation is not sort of comparison with observation. 00:29:27.489 --> 00:29:32.210 It’s actually – they generally use it in terms of cross validation, where you 00:29:32.210 --> 00:29:38.470 take some of your data, split it apart, create a model, re-shuffle what 00:29:38.470 --> 00:29:42.349 your training and validation are, and repeat that process. 00:29:42.349 --> 00:29:45.969 And that’s used to constrain your other parameters, like the number 00:29:45.969 --> 00:29:48.389 of hidden layers, the learning rate, and regularization. 00:29:48.389 --> 00:29:51.700 And then the testing data, which is what we would often think of as 00:29:51.700 --> 00:29:54.320 our validation data, is our completely independent data 00:29:54.320 --> 00:29:57.470 that wasn’t used to constrain the model at all. 00:29:57.980 --> 00:30:03.380 So, in my case, I selected all records from 5% of the earthquakes 00:30:03.380 --> 00:30:06.600 and all records from 5% of the stations. 00:30:06.600 --> 00:30:09.140 And those became my independent testing data. 00:30:09.140 --> 00:30:13.039 And that amounted to 12% of the total records due to overlap and 00:30:13.039 --> 00:30:17.409 earthquakes in the – particular earthquakes that were recorded. 00:30:17.409 --> 00:30:20.080 And then my remaining records, I’m using for training with 00:30:20.080 --> 00:30:22.059 a five-fold cross validation. 00:30:22.059 --> 00:30:27.309 So I randomly distribute all the records – or, randomly distribute 00:30:27.309 --> 00:30:30.259 all the records for different earthquakes into five groups. 00:30:30.259 --> 00:30:33.029 So zero, 1, 2, 3, and 4. 00:30:33.029 --> 00:30:37.080 And I take four of those, and that means 80% of those remaining records, 00:30:37.080 --> 00:30:38.950 those become my training data. 00:30:38.950 --> 00:30:44.080 And I withhold one of those sets of records as my validation data. 00:30:44.080 --> 00:30:46.960 I create this model, and then I re-shuffle things. 00:30:46.960 --> 00:30:53.159 I swap out – and so I independently – I cycle through so that one – 00:30:53.159 --> 00:30:56.529 so that I have five different models, and I withhold one group 00:30:56.529 --> 00:30:58.900 of those records each time. 00:30:59.920 --> 00:31:04.140 Until I end up with – I end up with five equivalent models that are all 00:31:04.149 --> 00:31:07.950 using some subset of the data in a different subset. 00:31:07.950 --> 00:31:13.190 And then I have this independent group that I use to sort of test against. 00:31:13.190 --> 00:31:18.509 And then I want to see how sensitive my models are across – how similar 00:31:18.509 --> 00:31:21.330 my models are across these five groups and how sensitive sort of my 00:31:21.330 --> 00:31:25.529 residuals are to doing this. And that’s how I adjust the number of 00:31:25.529 --> 00:31:29.639 hidden layers, the number of parameters, the learning rate, the regularization. 00:31:29.640 --> 00:31:33.320 So that I get stable – I want stable results across these five models. 00:31:33.320 --> 00:31:35.840 I don’t want the models to be vastly different because 00:31:35.840 --> 00:31:38.400 that means they’re over-fitting the data. 00:31:38.400 --> 00:31:41.280 And so, in the end, I end up with these five equivalent models 00:31:41.289 --> 00:31:44.210 that then I take the average of that, and that becomes my single 00:31:44.210 --> 00:31:46.880 ground motion prediction equation. 00:31:49.840 --> 00:31:53.880 And generally, I want my median and mean values to be close to zero. 00:31:53.880 --> 00:31:57.600 And I want the correlations with the predictor variables to be close to zero. 00:31:57.610 --> 00:32:00.969 And in terms of avoiding over-fitting, as I mentioned, I want similar means 00:32:00.969 --> 00:32:04.499 and standard deviation of the residuals for my training data 00:32:04.500 --> 00:32:07.840 as well as my testing data. And then I want my GMPEs 00:32:07.840 --> 00:32:12.279 to be similar in the cross validation. 00:32:12.280 --> 00:32:15.060 Here are my predictor variables – earthquake magnitude, Joyner-Boore 00:32:15.060 --> 00:32:20.899 distance, rupture – closest rupture distance, Vs30, Z1.0 – so I’m in the 00:32:20.899 --> 00:32:23.710 northern – in the Bay Area USGS 3D velocity model 00:32:23.710 --> 00:32:26.620 in southern California, I used CVM-H. 00:32:26.620 --> 00:32:31.109 Fault dip, slip rake, faulting mechanism, depth at top of the rupture. 00:32:31.109 --> 00:32:33.510 Some of these I do a log scaling. 00:32:33.510 --> 00:32:38.299 Because generally things are varying by factors of 2s, 10s, and things like that. 00:32:38.299 --> 00:32:40.970 Other ones, things are relatively smooth and continuous, 00:32:40.970 --> 00:32:44.840 so I used a linear scaling for those. 00:32:46.060 --> 00:32:48.020 So now I’m going to start showing results. 00:32:48.020 --> 00:32:52.520 So this is that same sort of correlation matrix that I show in the – 00:32:52.520 --> 00:32:54.940 sort of the upper left. And then now I’m showing 00:32:54.940 --> 00:32:57.589 the residuals, and this will be the correlation of the residuals 00:32:57.589 --> 00:32:59.859 with the predictor variables. 00:32:59.859 --> 00:33:03.229 And then the correlation of the residuals with other residuals. 00:33:03.229 --> 00:33:06.510 The dots indicate the parameters that I’m using in the model that’s 00:33:06.510 --> 00:33:08.629 shown on the screen. So I’m starting out with just 00:33:08.629 --> 00:33:11.519 magnitude and distance. And so you can see I’ve gotten 00:33:11.519 --> 00:33:14.599 rid of correlation in the residuals with the predictor variables. 00:33:14.599 --> 00:33:19.859 When I add Vs30, so you can see there, I’ve removed a lot of the correlation 00:33:19.859 --> 00:33:25.080 of the predictor variables with the residuals for Vs30 as well as the site. 00:33:25.080 --> 00:33:29.409 When I add in the basin term, I’ve reduced the residual even more. 00:33:29.409 --> 00:33:31.899 And then I put in depth at the top of the rupture. 00:33:31.899 --> 00:33:36.169 So now I have almost no correlation between my residuals and my predictor 00:33:36.169 --> 00:33:39.529 variables, even some of the predictor variables that I didn’t include. 00:33:39.529 --> 00:33:43.190 My testing data set, you can see the residuals are little bit higher. 00:33:43.190 --> 00:33:47.249 In other words, my independent data, there’s still things that I can’t explain 00:33:47.249 --> 00:33:50.109 as well as the data I used to train it, if that makes sense. 00:33:50.109 --> 00:33:54.260 But it’s still relatively close in terms of size of the residuals. 00:33:54.260 --> 00:33:59.080 Here’s a comparison, as I build up the model, with the Abrahanson-Silva 00:33:59.080 --> 00:34:04.760 and the Boore 2014 GMPEs. Here is the size of my hidden layer as 00:34:04.760 --> 00:34:08.720 I increased the number of parameters. I did slowly increase the size of 00:34:08.720 --> 00:34:12.240 the layer. As I have more predictor variables because of the complex – 00:34:12.240 --> 00:34:18.220 it’s a matrix that – of weights I end up using as I increase the number of 00:34:18.220 --> 00:34:21.460 predictor variables with the same hidden layer size, my number of 00:34:21.460 --> 00:34:24.150 unknowns has increased a little bit. But now you can see, I’m only at 00:34:24.150 --> 00:34:28.720 50 unknowns compared to over 100 for the same number of parameters 00:34:28.720 --> 00:34:32.830 for the NGA-West2 GMPEs. Highlighting PGA and PGV, 00:34:32.830 --> 00:34:37.800 you’ll see that, yes, I’ve decreased the residual some. 00:34:37.800 --> 00:34:41.140 And the log of the standard deviation, this is my – for my independent testing 00:34:41.140 --> 00:34:47.280 data – is quite close to what was seen for the 2014 NGA-West2 GMPEs. 00:34:47.280 --> 00:34:51.360 There’s differences. Part of this is just based on the parameterization. 00:34:51.360 --> 00:34:56.330 This is for – this is not the residuals that they get out of their models. 00:34:56.330 --> 00:34:58.830 Is the residual for my set of records. 00:34:58.830 --> 00:35:03.520 So it’s a – really a one-to-one correspondence between those two. 00:35:03.520 --> 00:35:07.130 And part of this can be due to the fact that Abrahamson-Silva 00:35:07.130 --> 00:35:12.660 and those GMPEs may have been using some of the testing data that, for me, 00:35:12.660 --> 00:35:16.020 is independent, which for them, is not independent. 00:35:17.540 --> 00:35:21.020 So these are the predictor variables for what I call my full GMPE, which is 00:35:21.020 --> 00:35:24.260 sort of the one that has sort of all the ingredients – earthquake magnitude, 00:35:24.260 --> 00:35:28.620 depth at top of the rupture, Joyner-Boore distance, Vs30, 00:35:28.620 --> 00:35:31.260 and then the Z2.5. 00:35:31.260 --> 00:35:36.330 This is what the sort of error, as I go out my 10 iterations look like. 00:35:36.330 --> 00:35:41.910 The solid lines are my training data set. The dashed lines are my testing data set. 00:35:41.910 --> 00:35:45.290 I’ve already trained at one cycle here. That’s why these start lower. 00:35:45.290 --> 00:35:49.200 And you’ll notice my solid lines tend to be just very flat. 00:35:49.200 --> 00:35:53.770 I’m not getting much improvement. That’s why I stopped it where it was. 00:35:53.770 --> 00:35:57.340 And then the dashed lines are the independent testing data set, 00:35:57.340 --> 00:36:00.500 and they tend to lie a little above. There’s a little bit of fluctuation 00:36:00.500 --> 00:36:03.540 showing – you know, it’s not quite at the global minimum looking at – 00:36:03.540 --> 00:36:06.960 bouncing around with [inaudible] minimum, 00:36:06.960 --> 00:36:09.860 but it converges very quickly. 00:36:09.860 --> 00:36:15.620 Here’s a correlation of my model of predicted on the horizontal axis – 00:36:15.620 --> 00:36:18.900 observed. You can see across the whole range of magnitudes, 00:36:18.900 --> 00:36:24.600 relatively the same misfit. The orange are my testing data set. 00:36:24.600 --> 00:36:28.080 The blue is the training data set. The training data set is a bit bigger, 00:36:28.080 --> 00:36:34.080 so it tends to span a slightly wider range of values. 00:36:34.080 --> 00:36:37.060 And here’s the residuals. 00:36:37.070 --> 00:36:40.270 On the left side, on the upper, you see the – sort of the mean – 00:36:40.270 --> 00:36:43.620 or, sorry, the median value. They’re all close to zero. 00:36:43.620 --> 00:36:46.960 Standard deviations for the training and testing are quite similar, 00:36:46.960 --> 00:36:49.770 meaning I’m not over-fitting my data. 00:36:49.770 --> 00:36:55.380 The blue are my training data set. The orange are the testing data set. 00:36:56.700 --> 00:36:58.920 Important thing to look at when looking at the residuals, 00:36:58.930 --> 00:37:00.980 is there any correlation of my predictor variables? 00:37:00.980 --> 00:37:04.210 So I’ll just flip through these predictor variables. 00:37:04.210 --> 00:37:07.800 So, for all of my ground motion metrics – PGA, PGV, spectral 00:37:07.800 --> 00:37:11.920 acceleration, you’ll notice these curves are pretty much flat. 00:37:11.920 --> 00:37:14.680 And I’ve binned everything. 00:37:14.680 --> 00:37:20.540 And you’ll see that most of them show very little bias, indicating that 00:37:20.550 --> 00:37:23.890 the model doesn’t have a – isn’t correlated with the predictor variables 00:37:23.890 --> 00:37:29.120 in terms of the residuals, which is good. That’s what we want. 00:37:29.560 --> 00:37:34.360 Now, sort of – the easiest way to sort of understand how the ground motion 00:37:34.370 --> 00:37:36.700 prediction equations for – and compare with the NGA-West 00:37:36.700 --> 00:37:39.860 is to actually plot what they are as a function of space. 00:37:39.860 --> 00:37:43.740 And so here I’m going to show a strike-slip fault and a reverse fault. 00:37:43.740 --> 00:37:46.540 And the purple line is along the strike of the fault, 00:37:46.540 --> 00:37:49.550 and then the yellow line is perpendicular to the fault. 00:37:49.550 --> 00:37:57.100 The solid lines are my GMPE, and the dashed lines are where the 00:37:57.100 --> 00:38:00.080 Boore and Atkinson and then Abrahamson and Silva. 00:38:00.080 --> 00:38:06.560 And you’ll see very similar PGA/PGV. You start to get a slight difference with 00:38:06.560 --> 00:38:11.740 distance, but they’re all quite close. This is a magnitude 6.7 strike-slip. 00:38:11.740 --> 00:38:16.860 For the reverse rupture, Abrahamson and Silva has a – has a bit of a hanging 00:38:16.860 --> 00:38:21.980 wall term, so it rises above, but PGV, very similar shape. 00:38:23.980 --> 00:38:29.260 And so, in the next sort of few slides, I’m going to talk about earthquake 00:38:29.270 --> 00:38:34.080 rupture distance. Can we do better than just Joyner-Boore distance? 00:38:34.080 --> 00:38:37.380 And so Joyner-Boore distance has a very simplified asymmetry 00:38:37.380 --> 00:38:40.160 across the fault. There’s very few observations 00:38:40.160 --> 00:38:46.990 for small values of rupture distance. Eric Thompson’s and Annemarie’s 00:38:46.990 --> 00:38:51.320 generalized mean rupture distance is a more sort of physically 00:38:51.320 --> 00:38:56.370 meaningful distance of rupture. And one of the things I’ve done 00:38:56.370 --> 00:38:59.210 is I’ll show some that just use the mean rupture distance. 00:38:59.210 --> 00:39:03.410 And I’ll use some where I’ve combined both Joyner-Boore distance as well as 00:39:03.410 --> 00:39:05.740 mean rupture distance. And basically let the neural network 00:39:05.740 --> 00:39:10.880 find out how much to weigh each of those when it combines them. 00:39:10.880 --> 00:39:15.440 So this is just a plot to give you an idea of what this mean rupture distance is. 00:39:15.440 --> 00:39:20.270 When the exponent is a large negative number, it basically looks like the 00:39:20.270 --> 00:39:23.700 rupture distance for the strike-slip fault, there’s really no distance between 00:39:23.700 --> 00:39:26.990 the Joyner-Boore distance and the closest to the rupture. 00:39:26.990 --> 00:39:33.520 As you decrease this – I’ll move my little – so down to close to 1, 00:39:33.520 --> 00:39:39.240 you get closer to sort of the centroid – distance from the centroid. 00:39:40.280 --> 00:39:43.600 And so – oops – there’s – sorry, here we go. 00:39:43.600 --> 00:39:47.880 There’s 100, minus 10, minus 1. And so you can see it has a different 00:39:47.880 --> 00:39:55.060 shape. This might be important and sort of closer as we get close to 00:39:55.060 --> 00:39:58.460 dipping faults like this. You can start to see it sort of 00:39:58.460 --> 00:40:02.040 weighs things differently in terms of distance than what 00:40:02.040 --> 00:40:06.680 you get from just the closest distance to the rupture. 00:40:06.680 --> 00:40:09.860 So this is what it looks like for p equals 1 using mean rupture distance 00:40:09.860 --> 00:40:13.870 as a function of distance from a fault. You can see I have sort of more of 00:40:13.870 --> 00:40:19.600 a rounded shape to what the ground motion prediction equation has. 00:40:19.600 --> 00:40:23.020 It has a little bit of different decay with distance. 00:40:23.020 --> 00:40:28.210 When I actually combine the Joyner-Boore, it sort of flattens 00:40:28.210 --> 00:40:31.390 things out to some extent. So it’s using some combination, 00:40:31.390 --> 00:40:35.100 and it’s actually blending the two rupture distances together. 00:40:35.100 --> 00:40:39.760 There’s a bit of difference here at 1 second in terms of the – of the decay. 00:40:39.760 --> 00:40:43.360 For the reverse fault, with the rupture distance, 00:40:43.360 --> 00:40:47.360 it builds in more of an asymmetry – a hanging wall type effect. 00:40:47.360 --> 00:40:53.230 When you blend the two together, it sort of tends to, again, blend things 00:40:53.230 --> 00:40:59.320 in terms of the distance and the hanging wall effect – the asymmetry. 00:40:59.320 --> 00:41:04.920 And so here’s looking at sort of what the overall effect – very similar values to 00:41:04.920 --> 00:41:12.020 what I was getting before with – in terms of standard deviations of the residuals. 00:41:12.020 --> 00:41:15.940 Here’s just using the single rupture. I used one exponent minus 1, 00:41:15.940 --> 00:41:20.000 another exponent minus 2 – almost identical results. 00:41:20.000 --> 00:41:23.060 When I do the combination, you’ll see the residuals decrease 00:41:23.060 --> 00:41:28.500 just very, very slightly. And these are sort of comparable 00:41:28.500 --> 00:41:32.160 to what I was getting before with the full GMPEs. 00:41:32.160 --> 00:41:36.280 So basically, not much improvement. 00:41:36.280 --> 00:41:41.120 And that’s probably due to just the fact that we don’t have a lot of 00:41:41.120 --> 00:41:43.190 observations in close, and that’s where sort of 00:41:43.190 --> 00:41:45.710 the mean rupture distance might be more meaningful. 00:41:45.710 --> 00:41:50.220 So, moving on to site response, we have three predictor variables 00:41:50.220 --> 00:41:55.570 that are all highly correlated – Vs30, Z1.0, and Z2.5. 00:41:55.570 --> 00:42:00.510 Site response is very complicated. It gets integrated into the path. 00:42:00.510 --> 00:42:03.280 And it’s difficult to sort of separate what is related to 00:42:03.280 --> 00:42:06.750 very local site response versus more of the propagation path. 00:42:06.750 --> 00:42:13.410 So here’s just looking at, well, if I take just Vs30 or just Z1.0 or Z2.5, you’ll 00:42:13.410 --> 00:42:19.470 see Vs30 tends to do a little bit better than if I use just the basin depth terms. 00:42:19.470 --> 00:42:23.080 A combination of Vs30 with basin depths tends to 00:42:23.080 --> 00:42:25.940 do just overall very slightly better. 00:42:25.940 --> 00:42:29.700 If I throw all three in, it doesn’t – maybe a little bit 00:42:29.710 --> 00:42:32.940 of difference at longer periods, but not much. 00:42:32.940 --> 00:42:40.150 It’s interesting that Abrahamson-Silva- Kamai – they are – they use Vs30 as 00:42:40.150 --> 00:42:46.340 a combination with the 1.0 kilometer per second [inaudible] surface. 00:42:46.340 --> 00:42:51.280 Boore and Atkinson basically use Vs30. 00:42:51.280 --> 00:42:56.150 And for PGV, actually Boore tends to do better with – has a smaller residual 00:42:56.150 --> 00:43:00.470 for my data set compared to pretty much all of the other cases. 00:43:00.470 --> 00:43:06.860 So shallow basins, basically Vs30 and Z1.0 do quite well. 00:43:06.860 --> 00:43:11.470 For deep basins, the Z2.5 tends to work a little bit better. 00:43:11.470 --> 00:43:16.780 Finally, to faulting style. And I think this is really sort of one area 00:43:16.780 --> 00:43:22.790 where GMPEs might be able to improve in terms of their parameterization. 00:43:22.790 --> 00:43:27.360 You can see with the fault dip angle, there’s really a relatively smooth 00:43:27.360 --> 00:43:30.980 spectrum from dipping faults – shallow dipping faults all the way 00:43:30.980 --> 00:43:34.920 to nearly vertical faults. And categorizing things as being 00:43:34.920 --> 00:43:42.160 strike-slip or normal or reverse really sort of is not quite sort of the 00:43:42.160 --> 00:43:46.670 smooth spectra in what we observed. Whereas, in a neural network, I can put 00:43:46.670 --> 00:43:51.880 in fault dip angle and the slip rake angle going from minus 90 to 90 and really 00:43:51.880 --> 00:43:55.880 have a continuous spectrum of inputs. And so that’s what I’ve done here. 00:43:55.880 --> 00:44:01.330 My base case is what I’ve shown before. Then I added sort of the normal 00:44:01.330 --> 00:44:06.250 reverse and strike-slip of just classes – distinct, discrete values – 00:44:06.250 --> 00:44:09.010 those three values. You see it gets a little bit better. 00:44:09.010 --> 00:44:13.820 Now, if I put in just continuous fault rake, I get sort of comparable to what 00:44:13.820 --> 00:44:19.560 I have for the three style classes. Fault dip, I tend to do a little bit better. 00:44:19.560 --> 00:44:23.800 Combination of fault dip and rake, I’m starting to get, you know, 00:44:23.800 --> 00:44:28.480 at least consistent improvement, but it is still very, very small. 00:44:28.480 --> 00:44:32.660 And so sort of the takeaway message is, I’m getting a slight improvement with 00:44:32.660 --> 00:44:36.140 a sort of what I would call a better parameterization of faulting style. 00:44:36.140 --> 00:44:42.310 But there’s still so much variability and sort of – across ground motion 00:44:42.310 --> 00:44:47.690 equations across the data set that I’m not getting sort of what I would call 00:44:47.690 --> 00:44:49.690 real significant improvement. 00:44:49.690 --> 00:44:55.030 So, to summarize, I think that artificial neural networks 00:44:55.030 --> 00:44:58.230 provide an alternative formulation for GMPEs. 00:44:58.230 --> 00:45:02.980 The one I created has a similar accuracy to the NGA-West2 GMPEs. 00:45:02.980 --> 00:45:06.100 The misfit for the testing data and the cross-validation indicates 00:45:06.100 --> 00:45:09.680 that the model is not over-fitting the training data. 00:45:09.680 --> 00:45:12.830 It’s very easy to set up and implement the resulting models. 00:45:12.830 --> 00:45:17.800 If I give you all of my scaling factors and what the mean values are, 00:45:17.800 --> 00:45:21.760 you can create the normalization, and then all I have to give you is 00:45:21.760 --> 00:45:27.450 two matrices and a vector – two matrices and two hidden vector – 00:45:27.450 --> 00:45:30.410 two vectors, and you can actually compute the GMPE. 00:45:30.410 --> 00:45:34.300 You don’t have to implement 10 different equations 00:45:34.300 --> 00:45:37.560 that are in the 2014 GMPEs. 00:45:37.560 --> 00:45:40.640 The neural networks still require very careful data selection 00:45:40.640 --> 00:45:44.870 and parameterization. That’s always been a part of GMPE development. 00:45:44.870 --> 00:45:48.680 I think they do tend to facilitate more natural parameterizations 00:45:48.680 --> 00:45:52.810 of the predictor variables. And it may be possible to capture 00:45:52.810 --> 00:45:55.960 some of these complex interactions that are not easily implemented 00:45:55.960 --> 00:45:58.700 using more traditional approaches. 00:46:00.060 --> 00:46:03.360 A couple final comments. There’s a lot of hype about 00:46:03.360 --> 00:46:06.990 artificial intelligence. This is sort of the DeVries Nature 00:46:06.990 --> 00:46:13.670 paper and then sort of the accompanying commentary was, instead of just 00:46:13.670 --> 00:46:18.060 deep learning patterns follow large earthquakes, it was artificial intelligence 00:46:18.060 --> 00:46:21.790 nails earthquake predictions of aftershocks. 00:46:22.660 --> 00:46:27.680 There is – a paper has been posted to the Physics archive where they have 00:46:27.690 --> 00:46:30.260 found a one neuron, two-parameter model 00:46:30.260 --> 00:46:36.420 can do what they claim just as well as a 13,000-parameter model. 00:46:36.420 --> 00:46:40.130 So maybe some healthy skepticism of AI is warranted when we do know 00:46:40.130 --> 00:46:44.450 physics. So this is what – the figure that’s included in this paper where, 00:46:44.450 --> 00:46:49.760 here’s sort of the false-positive and true-positive rate. Basically, identical 00:46:49.760 --> 00:46:56.380 for a two-parameter model compared to a model with 13,000 unknowns. 00:46:56.380 --> 00:46:59.860 But there are some really new and interesting machine learning 00:46:59.860 --> 00:47:02.760 algorithms that continue to be developed. 00:47:02.760 --> 00:47:07.740 One of the sort of ones that has become sort of popular and is 00:47:07.740 --> 00:47:11.800 quite interesting is what’s called a generative adversarial network. 00:47:11.800 --> 00:47:15.890 You simultaneously train two models. One is a generator that generates 00:47:15.890 --> 00:47:19.760 sort of fake results. You can think of this as a counterfeiter. 00:47:19.760 --> 00:47:23.960 It’s generating sort of models that are supposed to look like reality. 00:47:23.960 --> 00:47:27.250 And then you have a discriminator that’s another model that’s trained to 00:47:27.250 --> 00:47:30.400 discriminate between real and fake data. So you can think of that as the cop 00:47:30.400 --> 00:47:33.500 that’s trying to catch the counterfeiter. And you train these models 00:47:33.500 --> 00:47:37.260 simultaneously, and you sort of build up. And so the counterfeiter 00:47:37.260 --> 00:47:40.840 gets better and better as the discriminator gets better and better. 00:47:40.840 --> 00:47:46.840 And one of the results is that these are all artificially generated human faces. 00:47:46.840 --> 00:47:50.540 These people don’t exist. This is just taking noise, 00:47:50.550 --> 00:47:55.770 creating very realistic-looking faces. So maybe perhaps we can create 00:47:55.770 --> 00:47:59.980 seismograms that look just as good as the real thing using some of these 00:47:59.980 --> 00:48:04.320 more sophisticated approaches. So I’ll stop there and take any questions. 00:48:04.320 --> 00:48:09.940 [Applause] 00:48:11.680 --> 00:48:20.000 [Silence] 00:48:20.000 --> 00:48:23.200 - Hey, Brad. That was a great talk. So I have a question. 00:48:23.200 --> 00:48:29.320 The NGA-West2 flat file is dominated by Chi-Chi events – 00:48:29.320 --> 00:48:34.180 Chi-Chi earthquakes – or, earthquakes related to the Chi-Chi magnitude 7.6. 00:48:34.180 --> 00:48:37.820 So I’m not sure. Are the NGA-West2 GMPEs also 00:48:37.820 --> 00:48:44.280 heavily related to those Chi-Chi events? And, if yes, then the study that 00:48:44.290 --> 00:48:47.640 you’ve done is for California. So I was wondering how that 00:48:47.640 --> 00:48:51.330 would relate to the 2014 GMPEs. 00:48:54.240 --> 00:48:56.700 - So I wouldn’t say they’re dominated by Chi-Chi events. 00:48:56.710 --> 00:49:03.980 There’s a lot of records, but they – in the 2014 database, there’s a lot 00:49:03.980 --> 00:49:06.220 of records from sort of smaller earthquakes. 00:49:06.220 --> 00:49:09.340 And all the smaller earthquakes that come in from California. 00:49:09.340 --> 00:49:13.400 So I – and sort of a year ago, I was working – I limited myself 00:49:13.400 --> 00:49:18.640 to just California data. And I had on the order of about 10,000 records. 00:49:18.640 --> 00:49:23.860 Now, including sort of some of these other events, I’m up to 13,000 records. 00:49:23.860 --> 00:49:29.360 So I’m only adding 3,000 records when I – on the order of about 3,000 records 00:49:29.370 --> 00:49:33.950 when I go outside California. So my data set is dominated – 00:49:33.950 --> 00:49:40.840 and the NGA-West2 data set – is really dominated by events in California. 00:49:40.840 --> 00:49:46.320 Now, at the larger magnitudes, it does have Wenchuan and Chi-Chi. 00:49:46.320 --> 00:49:50.120 And so there are some large events that are outside California that 00:49:50.130 --> 00:49:54.090 can have a strong influence. I found that that actually helped 00:49:54.090 --> 00:49:59.780 constrain the magnitude versus distance decay of the model 00:49:59.780 --> 00:50:04.040 and gave me a better fit to the model. 00:50:05.800 --> 00:50:10.200 [Silence] 00:50:10.760 --> 00:50:12.620 - [inaudible] 00:50:14.900 --> 00:50:17.440 - Just talk into it. 00:50:17.440 --> 00:50:21.820 - [inaudible] beer can, yeah. [laughter] 00:50:21.820 --> 00:50:30.260 The early figure from Douglas is – I thought that was aleatory 00:50:30.260 --> 00:50:33.540 uncertainty that has not changed. 00:50:35.560 --> 00:50:39.220 [Silence] 00:50:39.520 --> 00:50:43.840 - I’m pretty sure all of these dots are [inaudible] models. 00:50:43.840 --> 00:50:46.920 - Oh, it’s not data. They’re models. 00:50:47.580 --> 00:50:50.840 - These are models. - Okay. 00:50:50.840 --> 00:50:54.840 - [inaudible] uncertainty [inaudible]. 00:50:55.960 --> 00:50:59.200 So it is [inaudible]. 00:51:02.020 --> 00:51:04.500 We can talk about this. - Okay. 00:51:04.500 --> 00:51:11.060 And the other thing is, I’m kind of interested in, say, 00:51:11.060 --> 00:51:17.060 northern California versus southern California if you split the data sets and, 00:51:17.060 --> 00:51:20.820 you know, then you have some data problems, of course. 00:51:20.820 --> 00:51:28.130 That’s kind of a big issue right now, and – whether you want to go to 00:51:28.130 --> 00:51:33.380 whatever they call those models [chuckles] – norms and [inaudible]. 00:51:33.380 --> 00:51:36.440 - [inaudible] - Yeah. 00:51:39.460 --> 00:51:44.740 You have this problem. So if you have – and it’s the same 00:51:44.750 --> 00:51:48.410 problem that the other data sets would have. 00:51:48.410 --> 00:51:55.600 When you take 5% of the station data, or take 5 – you take 5% of the stations 00:51:55.600 --> 00:52:01.950 and then take their data and throw it into the model for the testing, I guess, 00:52:01.950 --> 00:52:07.560 a station out in the woods is going to have far less record than a station 00:52:07.560 --> 00:52:11.760 near the cities. Right? Did I say that right? 00:52:12.400 --> 00:52:13.980 Earthquakes. 00:52:14.660 --> 00:52:17.360 Take 5% of the earthquakes. 00:52:20.280 --> 00:52:25.180 Then you’ll have a data bias closer to the urban areas 00:52:25.180 --> 00:52:29.520 where the stations are compared to the remote areas. 00:52:30.400 --> 00:52:37.660 How much of a problem is that? And how much in the end of the 00:52:37.660 --> 00:52:45.240 GMPEs you’re getting focus on California data is primarily related to 00:52:45.240 --> 00:52:51.120 what happens in the Los Angeles Basin or the San Francisco Bay Area? 00:52:56.440 --> 00:53:00.040 - So the question about distribution of data. 00:53:04.060 --> 00:53:07.060 I chose a random – I mean, there’s different ways you can 00:53:07.070 --> 00:53:11.190 try and correct for the spatial distribution of stations. 00:53:11.190 --> 00:53:16.210 You can sort of – and the one – this is not what I’ve done. 00:53:16.210 --> 00:53:20.680 I just basically took a random selection of 5% of the earthquakes and 5% of the 00:53:20.680 --> 00:53:24.200 stations and said, wherever those are – some of them are going to be, 00:53:24.200 --> 00:53:28.100 you know, stations – I’ll have – I’ll take away one station that’s 00:53:28.100 --> 00:53:30.500 right close to another station. That'll be highly correlated. 00:53:30.500 --> 00:53:34.570 But then, in other cases, I’ll be taking – randomly selecting a station where 00:53:34.570 --> 00:53:38.370 there’s no stations around it. So it’s going to, you know, sample. 00:53:38.370 --> 00:53:44.720 And so I think, to some extent, 5 to – overall, 12% of the data is 00:53:44.720 --> 00:53:48.240 relatively independent. That’s a pretty good – I’m trying to 00:53:48.240 --> 00:53:53.650 get a combination of, you know, stuff that’s spatially sparse as well as 00:53:53.650 --> 00:53:58.040 spatially dense to try and remove it. One thing I made sure I did is that it 00:53:58.040 --> 00:54:03.350 was 5% of the – all records from 5% of the earthquakes and all records 00:54:03.350 --> 00:54:09.260 from 5% of the stations. So I really did have some stations in my testing 00:54:09.260 --> 00:54:15.660 data set where they – nothing from that location was used to train the data. 00:54:15.660 --> 00:54:21.220 There are ways to get around sort of the bias in sampling is to just – you know, 00:54:21.220 --> 00:54:24.770 but it’s throwing away a lot of data in terms of – you can sort of say, 00:54:24.770 --> 00:54:28.920 well, let me go for more uniform spatial coverage. 00:54:28.920 --> 00:54:32.540 So, you know, don’t have stations that are within 10 kilometers of each other 00:54:32.540 --> 00:54:37.640 or something like that. But then you start to remove important effects. 00:54:37.640 --> 00:54:41.640 It’s difficult to get around. I think – you know, one way that 00:54:41.650 --> 00:54:45.850 I could have done to try and incorporate sort of the non-ergodic spatially variant 00:54:45.850 --> 00:54:50.340 is, with the neural network, you can just throw in latitude, longitude, 00:54:50.340 --> 00:54:55.410 of the earthquake source and sort of either latitude, longitude, of the station 00:54:55.410 --> 00:54:59.320 or a distance and azimuth from the earthquake source to – depending on 00:54:59.320 --> 00:55:03.000 how you want to parameterize it. And just let the neural network 00:55:03.000 --> 00:55:06.300 chop it up. You can use – you can do the clustering separately. 00:55:06.300 --> 00:55:10.230 You could sort of say, here, given all these observations, 00:55:10.230 --> 00:55:12.530 have a neural network try and cluster the data and tell you 00:55:12.530 --> 00:55:14.720 what regionalization you should use. 00:55:14.720 --> 00:55:18.880 You know, do you see – is southern California different 00:55:18.880 --> 00:55:21.640 than northern California? Do we have two regions within 00:55:21.640 --> 00:55:25.230 California? Do we have three? Do you start to pull out sort of 00:55:25.230 --> 00:55:29.160 Great Valley, Sierra different from the Coast Ranges? 00:55:29.160 --> 00:55:32.560 I mean, that’s – there’s a lot of things that can be done if you really want to 00:55:32.560 --> 00:55:38.270 explore the data and throw – you know, and things – sort of try and do the 00:55:38.270 --> 00:55:43.520 feature extraction and model discovery type of analysis. 00:55:45.240 --> 00:55:52.300 [Silence] 00:55:53.100 --> 00:55:55.760 - That was a great talk, Brad. And my question relates to 00:55:55.760 --> 00:56:00.030 the previous one. Obviously, rupture directivity is important. 00:56:00.030 --> 00:56:02.790 You’ve shown this. And you – if you can parameterize it 00:56:02.790 --> 00:56:05.490 simply, presumably, you could search for that as well. 00:56:05.490 --> 00:56:08.690 So how would you approach rupture directivity as a way of reducing 00:56:08.690 --> 00:56:12.670 the scatter as well as path effects? You mentioned that basin depth, 00:56:12.670 --> 00:56:16.660 of course, masking the path effects, but latitude and longitude, 00:56:16.660 --> 00:56:19.740 crossing the Sierras or not. There are all sorts of ways to do this. 00:56:19.740 --> 00:56:22.940 And so how – the question really is, how would you parameterize in terms of 00:56:22.940 --> 00:56:27.860 rupture directivity and also path effects in this kind of approach? 00:56:30.840 --> 00:56:34.920 - I like Paul Spudich’s coordinate system that he developed to sort of 00:56:34.930 --> 00:56:39.210 look at directivity. And I would basically put in that 00:56:39.210 --> 00:56:47.290 coordinate as basically a parameter in the GMPE to help understand where 00:56:47.290 --> 00:56:52.119 you are relative to the hypocenter and the direction the rupture is propagating. 00:56:52.119 --> 00:56:56.370 I think the stuff he did for NGA-West2 was sort of better than what he did for – 00:56:56.370 --> 00:57:00.580 what was that – NGA – the 2008 NGA-West? [laughs] 00:57:02.800 --> 00:57:05.700 Path effects, I think, is more difficult. 00:57:06.680 --> 00:57:10.180 You know, we don’t – you can do – you know, should we – 00:57:10.180 --> 00:57:12.630 I think that’s an open question. I think that’s sort of a research 00:57:12.630 --> 00:57:18.260 question is, what do we do beyond sort of basin depth? 00:57:18.260 --> 00:57:22.540 If we really think there’s all of these azimuthal variations that are related to 00:57:22.540 --> 00:57:28.510 basin edge effects and sort of how do we parameterize that, we need to 00:57:28.510 --> 00:57:34.980 probably have much better basin models to get the edges [laughs] better defined. 00:57:34.980 --> 00:57:39.480 But I think that that’s something that I think we – that’s probably the next step, 00:57:39.480 --> 00:57:43.840 almost – one of the next steps no matter what we do unless we’re just going to 00:57:43.840 --> 00:57:47.430 go completely empirical path effects, is to look at some of these other 00:57:47.430 --> 00:57:53.480 parameterizations of path, what do path residuals correspond to? 00:57:53.480 --> 00:57:58.360 What geologic features can we use to predict what they look like? 00:57:59.900 --> 00:58:02.700 And there was a question – hold on. 00:58:03.460 --> 00:58:06.620 There was a question through the chat. 00:58:12.420 --> 00:58:17.280 Oh. [laughs] Comment. Not a question. [laughter] 00:58:17.280 --> 00:58:20.060 Any other questions? 00:58:22.720 --> 00:58:25.780 - [inaudible] question. 00:58:25.780 --> 00:58:29.440 I had a question about the magnitude scaling in comparison to the 00:58:29.440 --> 00:58:31.590 existing ground motion models. I think you only showed the 00:58:31.590 --> 00:58:34.670 distance scaling. Do you get something similar, and what does 00:58:34.670 --> 00:58:36.510 the large-magnitude scaling look like? 00:58:36.510 --> 00:58:41.100 Is there a break, kind of generally [inaudible]? 00:58:41.100 --> 00:58:45.520 - I have not plotted strict magnitude scaling. 00:58:47.520 --> 00:58:52.360 There’s a series of plots that I still need to make that I was hoping to 00:58:52.360 --> 00:58:58.520 finish by today, but I didn’t. And that’s sort of for, like, at a given 00:58:58.530 --> 00:59:04.460 site, like, 20 kilometers, how does the amplitude vary as a function of each of 00:59:04.460 --> 00:59:07.680 the different predictor variables? I sort of showed it as a function of 00:59:07.680 --> 00:59:12.530 sort of doing the distance scaling. I have made a plot that shows where 00:59:12.530 --> 00:59:15.930 I’ve done sort of that distance scaling for each of the different magnitudes. 00:59:15.930 --> 00:59:18.760 I do see magnitude saturation. 00:59:18.760 --> 00:59:21.050 So I think it’s quite similar. 00:59:21.050 --> 00:59:25.790 But I still need to make that – the disadvantage of the neural network is 00:59:25.790 --> 00:59:28.860 you don’t know really what you have, and you just have to plot it to 00:59:28.860 --> 00:59:31.570 see what you have. Because you can’t look at the functional form. 00:59:31.570 --> 00:59:36.030 So that’s sort of the last series of plots that I need to do to really understand 00:59:36.030 --> 00:59:40.560 how much nonlinear effects do I see, and sort of how much of Vs30 do I see 00:59:40.560 --> 00:59:43.840 as a function of magnitude and things like that. 00:59:46.320 --> 00:59:48.420 - Any more questions? 00:59:48.940 --> 00:59:50.700 Okay. Let’s thank our speaker again. 00:59:50.700 --> 00:59:56.580 [Applause] 00:59:58.360 --> 01:00:03.340 [Silence]